[gtkmm-documentation] Adapt to latest versions of gtk+ and gtkmm (event signals)



commit a298170bf215fa7deb7a9e4d7fcd932080b540f9
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Fri Jan 19 18:50:10 2018 +0100

    Adapt to latest versions of gtk+ and gtkmm (event signals)
    
    Most event signals have been removed. Use Widget::signal_event() instead.
    GtkWidget::event and signal_event() are deprecated. They may soon be
    replaced by something else.

 .../book/combobox/entry_complex/examplewindow.cc   |   23 +++++++++++++-------
 .../book/combobox/entry_complex/examplewindow.h    |    2 +-
 examples/book/combobox/entry_text/examplewindow.cc |   18 +++++++++++----
 examples/book/combobox/entry_text/examplewindow.h  |    2 +-
 examples/book/menus/popup/examplewindow.cc         |   11 +++++----
 examples/book/menus/popup/examplewindow.h          |    2 +-
 examples/book/treeview/popup/treeview_withpopup.cc |   11 ++++-----
 examples/book/treeview/popup/treeview_withpopup.h  |    4 +-
 .../others/cellrenderercustom/cellrendererlist.cc  |    9 ++++---
 .../others/cellrenderercustom/cellrendererlist.h   |    2 +-
 .../others/cellrenderercustom/cellrendererpopup.cc |   15 +++++++------
 .../others/cellrenderercustom/cellrendererpopup.h  |    2 +-
 12 files changed, 59 insertions(+), 42 deletions(-)
---
diff --git a/examples/book/combobox/entry_complex/examplewindow.cc 
b/examples/book/combobox/entry_complex/examplewindow.cc
index 2b4c53c..bf3ea11 100644
--- a/examples/book/combobox/entry_complex/examplewindow.cc
+++ b/examples/book/combobox/entry_complex/examplewindow.cc
@@ -14,6 +14,9 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
+//TODO: Remove this undef when we know what to use instead of signal_event().
+#undef GTKMM_DISABLE_DEPRECATED
+
 #include "examplewindow.h"
 #include <iostream>
 
@@ -76,7 +79,7 @@ ExampleWindow::ExampleWindow()
       &ExampleWindow::on_entry_changed) );
     entry->signal_activate().connect(sigc::mem_fun(*this,
       &ExampleWindow::on_entry_activate) );
-    m_ConnectionFocusOut = entry->signal_focus_out_event().
+    m_ConnectionFocusOut = entry->signal_event().
       connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_out_event), true);
   }
   else
@@ -85,7 +88,7 @@ ExampleWindow::ExampleWindow()
 
 ExampleWindow::~ExampleWindow()
 {
-  // The focus_out signal may be emitted while m_Combo is being destructed.
+  // The event signal may be emitted while m_Combo is being destructed.
   // The signal handler can generate critical messages, if it's called when
   // m_Combo has been partly destructed.
   m_ConnectionFocusOut.disconnect();
@@ -111,14 +114,18 @@ void ExampleWindow::on_entry_activate()
   }
 }
 
-bool ExampleWindow::on_entry_focus_out_event(const Glib::RefPtr<Gdk::EventFocus>& /* event */)
+bool ExampleWindow::on_entry_focus_out_event(const Glib::RefPtr<Gdk::Event>& event)
 {
-  auto entry = m_Combo.get_entry();
-  if (entry)
+  if (event->get_event_type() == Gdk::Event::Type::FOCUS_CHANGE &&
+    !std::static_pointer_cast<Gdk::EventFocus>(event)->get_focus_in())
   {
-    std::cout << "on_entry_focus_out_event(): Row=" << m_Combo.get_active_row_number()
-      << ", ID=" << entry->get_text() << std::endl;
-    return true;
+    auto entry = m_Combo.get_entry();
+    if (entry)
+    {
+      std::cout << "on_entry_focus_out_event(): Row=" << m_Combo.get_active_row_number()
+        << ", ID=" << entry->get_text() << std::endl;
+      return true;
+    }
   }
   return false;
 }
diff --git a/examples/book/combobox/entry_complex/examplewindow.h 
b/examples/book/combobox/entry_complex/examplewindow.h
index 622d2b9..98cb6e5 100644
--- a/examples/book/combobox/entry_complex/examplewindow.h
+++ b/examples/book/combobox/entry_complex/examplewindow.h
@@ -31,7 +31,7 @@ protected:
   //Signal handlers:
   void on_entry_changed();
   void on_entry_activate();
-  bool on_entry_focus_out_event(const Glib::RefPtr<Gdk::EventFocus>& event);
+  bool on_entry_focus_out_event(const Glib::RefPtr<Gdk::Event>& event);
 
   //Signal connection:
   sigc::connection m_ConnectionFocusOut;
diff --git a/examples/book/combobox/entry_text/examplewindow.cc 
b/examples/book/combobox/entry_text/examplewindow.cc
index c661b56..04c9631 100644
--- a/examples/book/combobox/entry_text/examplewindow.cc
+++ b/examples/book/combobox/entry_text/examplewindow.cc
@@ -14,6 +14,9 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
+//TODO: Remove this undef when we know what to use instead of signal_event().
+#undef GTKMM_DISABLE_DEPRECATED
+
 #include "examplewindow.h"
 #include <iostream>
 
@@ -39,7 +42,7 @@ ExampleWindow::ExampleWindow()
   {
     entry->signal_activate().connect(sigc::mem_fun(*this,
       &ExampleWindow::on_entry_activate) );
-    m_ConnectionFocusOut = entry->signal_focus_out_event().
+    m_ConnectionFocusOut = entry->signal_event().
       connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_out_event),true);
   }
   else
@@ -68,9 +71,14 @@ void ExampleWindow::on_entry_activate()
     << ", Text=" << m_Combo.get_active_text() << std::endl;
 }
 
-bool ExampleWindow::on_entry_focus_out_event(const Glib::RefPtr<Gdk::EventFocus>& /* event */)
+bool ExampleWindow::on_entry_focus_out_event(const Glib::RefPtr<Gdk::Event>& event)
 {
-  std::cout << "on_entry_focus_out_event(): Row=" << m_Combo.get_active_row_number()
-    << ", Text=" << m_Combo.get_active_text() << std::endl;
-  return true;
+  if (event->get_event_type() == Gdk::Event::Type::FOCUS_CHANGE &&
+    !std::static_pointer_cast<Gdk::EventFocus>(event)->get_focus_in())
+  {
+    std::cout << "on_entry_focus_out_event(): Row=" << m_Combo.get_active_row_number()
+      << ", Text=" << m_Combo.get_active_text() << std::endl;
+    return true;
+  }
+  return false;
 }
diff --git a/examples/book/combobox/entry_text/examplewindow.h 
b/examples/book/combobox/entry_text/examplewindow.h
index cd8f707..e7370ad 100644
--- a/examples/book/combobox/entry_text/examplewindow.h
+++ b/examples/book/combobox/entry_text/examplewindow.h
@@ -30,7 +30,7 @@ protected:
   //Signal handlers:
   void on_combo_changed();
   void on_entry_activate();
-  bool on_entry_focus_out_event(const Glib::RefPtr<Gdk::EventFocus>& event);
+  bool on_entry_focus_out_event(const Glib::RefPtr<Gdk::Event>& event);
 
   //Signal connection:
   sigc::connection m_ConnectionFocusOut;
diff --git a/examples/book/menus/popup/examplewindow.cc b/examples/book/menus/popup/examplewindow.cc
index b0f632c..f4da415 100644
--- a/examples/book/menus/popup/examplewindow.cc
+++ b/examples/book/menus/popup/examplewindow.cc
@@ -14,7 +14,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
-//TODO: Remove this undef when we know what to use instead of signal_button_press_event().
+//TODO: Remove this undef when we know what to use instead of signal_event().
 #undef GTKMM_DISABLE_DEPRECATED
 
 #include "examplewindow.h"
@@ -32,8 +32,8 @@ ExampleWindow::ExampleWindow()
 
   // Catch button_press events:
   m_Box.pack_start(m_Label, Gtk::PackOptions::EXPAND_WIDGET);
-  m_Label.signal_button_press_event().connect(sigc::mem_fun(*this,
-              &ExampleWindow::on_button_press_event), true);
+  m_Label.signal_event().connect(sigc::mem_fun(*this,
+              &ExampleWindow::on_label_button_press_event), true);
 
   //Create actions:
 
@@ -111,9 +111,10 @@ void ExampleWindow::on_menu_file_popup_generic()
    std::cout << "A popup menu item was selected." << std::endl;
 }
 
-bool ExampleWindow::on_button_press_event(const Glib::RefPtr<Gdk::EventButton>& button_event)
+bool ExampleWindow::on_label_button_press_event(const Glib::RefPtr<Gdk::Event>& event)
 {
-  if (button_event->shall_trigger_context_menu())
+  if (event->get_event_type() == Gdk::Event::Type::BUTTON_PRESS &&
+    std::static_pointer_cast<Gdk::EventButton>(event)->shall_trigger_context_menu())
   {
     if (m_pMenuPopup && !m_pMenuPopup->get_attach_widget())
       m_pMenuPopup->attach_to_widget(*this);
diff --git a/examples/book/menus/popup/examplewindow.h b/examples/book/menus/popup/examplewindow.h
index e6d7017..35e22f0 100644
--- a/examples/book/menus/popup/examplewindow.h
+++ b/examples/book/menus/popup/examplewindow.h
@@ -27,7 +27,7 @@ public:
 
 protected:
   //Signal handlers:
-  bool on_button_press_event(const Glib::RefPtr<Gdk::EventButton>& button_event) override;
+  bool on_label_button_press_event(const Glib::RefPtr<Gdk::Event>& event);
 
   void on_menu_file_popup_generic();
 
diff --git a/examples/book/treeview/popup/treeview_withpopup.cc 
b/examples/book/treeview/popup/treeview_withpopup.cc
index b934a7c..456b35c 100644
--- a/examples/book/treeview/popup/treeview_withpopup.cc
+++ b/examples/book/treeview/popup/treeview_withpopup.cc
@@ -63,17 +63,16 @@ TreeView_WithPopup::~TreeView_WithPopup()
 {
 }
 
-bool TreeView_WithPopup::on_button_press_event(const Glib::RefPtr<Gdk::EventButton>& button_event)
+bool TreeView_WithPopup::on_event(const Glib::RefPtr<Gdk::Event>& event)
 {
-  bool return_value = false;
-
   //Call base class, to allow normal handling,
   //such as allowing the row to be selected by the right-click:
-  return_value = TreeView::on_button_press_event(button_event);
+  const bool return_value = TreeView::on_event(event);
 
   //Then do our custom stuff:
-  if (button_event->shall_trigger_context_menu())
-    m_Menu_Popup.popup_at_pointer(button_event);
+  if (event->get_event_type() == Gdk::Event::Type::BUTTON_PRESS &&
+      std::static_pointer_cast<Gdk::EventButton>(event)->shall_trigger_context_menu())
+    m_Menu_Popup.popup_at_pointer(event);
 
   return return_value;
 }
diff --git a/examples/book/treeview/popup/treeview_withpopup.h 
b/examples/book/treeview/popup/treeview_withpopup.h
index c445fc2..3879098 100644
--- a/examples/book/treeview/popup/treeview_withpopup.h
+++ b/examples/book/treeview/popup/treeview_withpopup.h
@@ -27,8 +27,8 @@ public:
 
 protected:
   // Override Signal handler:
-  // Alternatively, use signal_button_press_event().connect_notify()
-  bool on_button_press_event(const Glib::RefPtr<Gdk::EventButton>& button_event) override;
+  // Alternatively, use signalevent().connect_notify()
+  bool on_event(const Glib::RefPtr<Gdk::Event>& event) override;
 
   //Signal handler for popup menu items:
   void on_menu_file_popup_generic();
diff --git a/examples/others/cellrenderercustom/cellrendererlist.cc 
b/examples/others/cellrenderercustom/cellrendererlist.cc
index a6392db..baf57cc 100644
--- a/examples/others/cellrenderercustom/cellrendererlist.cc
+++ b/examples/others/cellrenderercustom/cellrendererlist.cc
@@ -14,7 +14,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
-//TODO: Remove this undef when we know what to use instead of signal_button_release_event().
+//TODO: Remove this undef when we know what to use instead of signal_event().
 #undef GTKMM_DISABLE_DEPRECATED
 
 #include <gtkmm.h>
@@ -49,7 +49,7 @@ CellRendererList::CellRendererList()
 {
   tree_view_.set_headers_visible(false);
   tree_view_.append_column("", popup_columns().item);
-  tree_view_.signal_button_release_event().connect(
+  tree_view_.signal_event().connect(
       sigc::mem_fun(*this, &Self::on_tree_view_button_release_event), true);
 
   const auto selection = tree_view_.get_selection();
@@ -91,9 +91,10 @@ void CellRendererList::on_show_popup(const Glib::ustring& path, int x1, int y1,
   CellRendererPopup::on_show_popup(path, x1, y1, x2, y2);
 }
 
-bool CellRendererList::on_tree_view_button_release_event(const Glib::RefPtr<Gdk::EventButton>& event)
+bool CellRendererList::on_tree_view_button_release_event(const Glib::RefPtr<Gdk::Event>& event)
 {
-  if (event->get_button() == 1)
+  if (event->get_event_type() == Gdk::Event::Type::BUTTON_RELEASE &&
+    std::static_pointer_cast<Gdk::EventButton>(event)->get_button() == 1)
   {
     hide_popup();
     return true;
diff --git a/examples/others/cellrenderercustom/cellrendererlist.h 
b/examples/others/cellrenderercustom/cellrendererlist.h
index e525d00..20ca267 100644
--- a/examples/others/cellrenderercustom/cellrendererlist.h
+++ b/examples/others/cellrenderercustom/cellrendererlist.h
@@ -38,7 +38,7 @@ private:
   Glib::RefPtr<Gtk::ListStore>  list_store_;
   Gtk::TreeView                 tree_view_;
 
-  bool on_tree_view_button_release_event(const Glib::RefPtr<Gdk::EventButton>& event);
+  bool on_tree_view_button_release_event(const Glib::RefPtr<Gdk::Event>& event);
   void on_tree_selection_changed();
 };
 
diff --git a/examples/others/cellrenderercustom/cellrendererpopup.cc 
b/examples/others/cellrenderercustom/cellrendererpopup.cc
index 90e8921..1910619 100644
--- a/examples/others/cellrenderercustom/cellrendererpopup.cc
+++ b/examples/others/cellrenderercustom/cellrendererpopup.cc
@@ -14,7 +14,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
-//TODO: Remove this undef when we know what to use instead of signal_button_press_event().
+//TODO: Remove this undef when we know what to use instead of signal_event().
 #undef GTKMM_DISABLE_DEPRECATED
 
 #include <gtkmm.h>
@@ -58,9 +58,9 @@ CellRendererPopup::CellRendererPopup()
   signal_show_popup_.connect(sigc::mem_fun(*this, &Self::on_show_popup));
   signal_hide_popup_.connect(sigc::mem_fun(*this, &Self::on_hide_popup));
 
-  popup_window_.signal_button_press_event().connect(sigc::mem_fun(*this, &Self::on_button_press_event), 
true);
-  popup_window_.signal_key_press_event   ().connect(sigc::mem_fun(*this, &Self::on_key_press_event), true);
-  popup_window_.signal_style_updated     ().connect(sigc::mem_fun(*this, &Self::on_style_updated));
+  popup_window_.signal_event().connect(sigc::mem_fun(*this, &Self::on_button_press_event), true);
+  popup_window_.signal_key_press_event().connect(sigc::mem_fun(*this, &Self::on_key_press_event), true);
+  popup_window_.signal_style_updated().connect(sigc::mem_fun(*this, &Self::on_style_updated));
 }
 
 CellRendererPopup::~CellRendererPopup()
@@ -226,16 +226,17 @@ void CellRendererPopup::on_hide_popup()
   editing_canceled_ = false;
 }
 
-bool CellRendererPopup::on_button_press_event(const Glib::RefPtr<Gdk::EventButton>& event)
+bool CellRendererPopup::on_button_press_event(const Glib::RefPtr<Gdk::Event>& event)
 {
-  if (event->get_button() != 1)
+  if (!(event->get_event_type() == Gdk::Event::Type::BUTTON_PRESS &&
+      std::static_pointer_cast<Gdk::EventButton>(event)->get_button() == 1))
     return false;
 
   // If the event happened outside the popup, cancel editing.
 
   double x = 0.0;
   double y = 0.0;
-  event->get_root_coords(x, y);
+  std::static_pointer_cast<Gdk::EventButton>(event)->get_root_coords(x, y);
 
   int xoffset = 0, yoffset = 0;
   popup_window_.get_window()->get_root_origin(xoffset, yoffset);
diff --git a/examples/others/cellrenderercustom/cellrendererpopup.h 
b/examples/others/cellrenderercustom/cellrendererpopup.h
index 23642f6..2f41b86 100644
--- a/examples/others/cellrenderercustom/cellrendererpopup.h
+++ b/examples/others/cellrenderercustom/cellrendererpopup.h
@@ -70,7 +70,7 @@ private:
   bool          shown_;
   bool          editing_canceled_;
 
-  bool on_button_press_event(const Glib::RefPtr<Gdk::EventButton>& event);
+  bool on_button_press_event(const Glib::RefPtr<Gdk::Event>& event);
   bool on_key_press_event(const Glib::RefPtr<Gdk::EventKey>& event);
   void on_style_updated();
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]