[gtk+] display: Make opened signal have a vfunc



commit c86ac95ebf53e0d132bcb87c19303c2e645c1488
Author: Benjamin Otte <otte redhat com>
Date:   Wed Apr 17 22:53:42 2013 +0100

    display: Make opened signal have a vfunc
    
    ... instead of g_signal_connect()ing in every init function.

 gdk/gdkdisplay.c        | 53 ++++++++++++++++++++++++-------------------------
 gdk/gdkdisplayprivate.h |  1 +
 2 files changed, 27 insertions(+), 27 deletions(-)
---
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
index dbddfe8..d8fe13e 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
@@ -88,6 +88,29 @@ gdk_display_real_make_default (GdkDisplay *display)
 }
 
 static void
+device_removed_cb (GdkDeviceManager *device_manager,
+                   GdkDevice        *device,
+                   GdkDisplay       *display)
+{
+  g_hash_table_remove (display->multiple_click_info, device);
+  g_hash_table_remove (display->device_grabs, device);
+  g_hash_table_remove (display->pointers_info, device);
+
+  /* FIXME: change core pointer and remove from device list */
+}
+
+static void
+gdk_display_real_opened (GdkDisplay *display)
+{
+  GdkDeviceManager *device_manager;
+
+  device_manager = gdk_display_get_device_manager (display);
+
+  g_signal_connect (device_manager, "device-removed",
+                    G_CALLBACK (device_removed_cb), display);
+}
+
+static void
 gdk_display_class_init (GdkDisplayClass *class)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (class);
@@ -98,6 +121,7 @@ gdk_display_class_init (GdkDisplayClass *class)
   class->get_app_launch_context = gdk_display_real_get_app_launch_context;
   class->window_type = GDK_TYPE_WINDOW;
 
+  class->opened = gdk_display_real_opened;
   class->make_default = gdk_display_real_make_default;
 
   /**
@@ -111,7 +135,8 @@ gdk_display_class_init (GdkDisplayClass *class)
     g_signal_new (g_intern_static_string ("opened"),
                  G_OBJECT_CLASS_TYPE (object_class),
                   G_SIGNAL_RUN_LAST,
-                  0, NULL, NULL,
+                 G_STRUCT_OFFSET (GdkDisplayClass, opened),
+                  NULL, NULL,
                   g_cclosure_marshal_VOID__VOID,
                   G_TYPE_NONE, 0);
 
@@ -166,29 +191,6 @@ free_device_grabs_foreach (gpointer key,
 }
 
 static void
-device_removed_cb (GdkDeviceManager *device_manager,
-                   GdkDevice        *device,
-                   GdkDisplay       *display)
-{
-  g_hash_table_remove (display->multiple_click_info, device);
-  g_hash_table_remove (display->device_grabs, device);
-  g_hash_table_remove (display->pointers_info, device);
-
-  /* FIXME: change core pointer and remove from device list */
-}
-
-static void
-gdk_display_opened (GdkDisplay *display)
-{
-  GdkDeviceManager *device_manager;
-
-  device_manager = gdk_display_get_device_manager (display);
-
-  g_signal_connect (device_manager, "device-removed",
-                    G_CALLBACK (device_removed_cb), display);
-}
-
-static void
 gdk_display_init (GdkDisplay *display)
 {
   display->double_click_time = 250;
@@ -205,9 +207,6 @@ gdk_display_init (GdkDisplay *display)
   display->multiple_click_info = g_hash_table_new_full (NULL, NULL, NULL,
                                                         (GDestroyNotify) g_free);
 
-  g_signal_connect (display, "opened",
-                    G_CALLBACK (gdk_display_opened), NULL);
-
   _gdk_display_manager_add_display (gdk_display_manager_get (), display);
 }
 
diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h
index 69fffb1..582c279 100644
--- a/gdk/gdkdisplayprivate.h
+++ b/gdk/gdkdisplayprivate.h
@@ -237,6 +237,7 @@ struct _GdkDisplayClass
                                                         const gchar    *text);
 
   /* Signals */
+  void                   (*opened)                     (GdkDisplay     *display);
   void (*closed) (GdkDisplay *display,
                   gboolean    is_error);
 };


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