[Xfce4-commits] [panel-plugins/xfce4-xkb-plugin] 01/06: Replace XkbKeyboard callback with signal

noreply at xfce.org noreply at xfce.org
Thu Jun 22 09:54:39 CEST 2017


This is an automated email from the git hooks/post-receive script.

n   i   n   e   t   l   s       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository panel-plugins/xfce4-xkb-plugin.

commit c1aa3d53e5d7c3ef6391964c600f91b2df708e34
Author: Viktor Odintsev <zakhams at gmail.com>
Date:   Wed Jun 21 11:21:27 2017 +0300

    Replace XkbKeyboard callback with signal
---
 panel-plugin/xkb-keyboard.c | 41 ++++++++++++++++++++++++-----------------
 panel-plugin/xkb-keyboard.h |  8 +-------
 panel-plugin/xkb-plugin.c   | 10 ++++++----
 3 files changed, 31 insertions(+), 28 deletions(-)

diff --git a/panel-plugin/xkb-keyboard.c b/panel-plugin/xkb-keyboard.c
index f023e68..218c124 100644
--- a/panel-plugin/xkb-keyboard.c
+++ b/panel-plugin/xkb-keyboard.c
@@ -68,9 +68,6 @@ struct _XkbKeyboard
 
     gint                  group_count;
     gint                  current_group;
-
-    XkbCallback           callback;
-    gpointer              callback_data;
 };
 
 static void              xkb_keyboard_xkl_state_changed        (XklEngine *engine,
@@ -92,7 +89,13 @@ static gboolean          xkb_keyboard_update_from_xkl          (XkbKeyboard *key
 static void              xkb_keyboard_initialize_xkb_options   (XkbKeyboard *keyboard,
                                                                 const XklConfigRec *config_rec);
 
-/* ---------------------- implementation ------------------------- */
+enum
+{
+    STATE_CHANGED,
+    LAST_SIGNAL
+};
+
+static guint xkb_keyboard_signals [LAST_SIGNAL] = { 0, };
 
 G_DEFINE_TYPE (XkbKeyboard, xkb_keyboard, G_TYPE_OBJECT)
 
@@ -103,6 +106,14 @@ xkb_keyboard_class_init (XkbKeyboardClass *klass)
 
     gobject_class = G_OBJECT_CLASS (klass);
     gobject_class->finalize = xkb_keyboard_finalize;
+
+    xkb_keyboard_signals[STATE_CHANGED] =
+            g_signal_new (g_intern_static_string ("state-changed"),
+                    G_TYPE_FROM_CLASS (gobject_class),
+                    G_SIGNAL_RUN_LAST,
+                    0, NULL, NULL,
+                    g_cclosure_marshal_VOID__BOOLEAN,
+                    G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
 }
 
 static void
@@ -124,23 +135,15 @@ xkb_keyboard_init (XkbKeyboard *keyboard)
 
     keyboard->group_count = 0;
     keyboard->current_group = 0;
-
-    keyboard->callback = NULL;
-    keyboard->callback_data = NULL;
 }
 
 XkbKeyboard *
-xkb_keyboard_new (XkbGroupPolicy group_policy,
-                  XkbCallback callback,
-                  gpointer callback_data)
+xkb_keyboard_new (XkbGroupPolicy group_policy)
 {
     XkbKeyboard *keyboard = g_object_new (TYPE_XKB_KEYBOARD, NULL);
 
     keyboard->group_policy = group_policy;
 
-    keyboard->callback = callback;
-    keyboard->callback_data = callback_data;
-
     keyboard->engine = xkl_engine_get_instance (gdk_x11_get_default_xdisplay ());
 
     if (keyboard->engine)
@@ -697,8 +700,9 @@ xkb_keyboard_xkl_state_changed (XklEngine *engine,
             break;
         }
 
-        if (keyboard->callback != NULL)
-            keyboard->callback (group, FALSE, keyboard->callback_data);
+        g_signal_emit (G_OBJECT (keyboard),
+                xkb_keyboard_signals [STATE_CHANGED],
+                0, FALSE);
     }
 }
 
@@ -710,10 +714,13 @@ xkb_keyboard_xkl_config_changed_timeout (gpointer user_data)
 
     updated = xkb_keyboard_update_from_xkl (keyboard);
 
-    if (updated && keyboard->callback != NULL)
+    if (updated)
     {
         xkb_keyboard_set_group (keyboard, 0);
-        keyboard->callback (0, TRUE, keyboard->callback_data);
+
+        g_signal_emit (G_OBJECT (keyboard),
+                xkb_keyboard_signals [STATE_CHANGED],
+                0, TRUE);
     }
 
     keyboard->config_timeout_id = 0;
diff --git a/panel-plugin/xkb-keyboard.h b/panel-plugin/xkb-keyboard.h
index 006edcc..14dc76a 100644
--- a/panel-plugin/xkb-keyboard.h
+++ b/panel-plugin/xkb-keyboard.h
@@ -42,15 +42,9 @@ typedef struct _XkbKeyboard           XkbKeyboard;
 #define IS_XKB_KEYBOARD_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass),  TYPE_XKB_KEYBOARD))
 #define XKB_KEYBOARD_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj),  TYPE_XKB_KEYBOARD, XkbKeyboard))
 
-typedef void      (*XkbCallback)                            (gint current_group,
-                                                             gboolean groups_changed,
-                                                             gpointer user_data);
-
 GType             xkb_keyboard_get_type                     (void)                           G_GNUC_CONST;
 
-XkbKeyboard      *xkb_keyboard_new                          (XkbGroupPolicy group_policy,
-                                                             XkbCallback callback,
-                                                             gpointer data);
+XkbKeyboard      *xkb_keyboard_new                          (XkbGroupPolicy group_policy);
 
 gboolean          xkb_keyboard_get_initialized              (XkbKeyboard     *keyboard);
 void              xkb_keyboard_set_group_policy             (XkbKeyboard     *keyboard,
diff --git a/panel-plugin/xkb-plugin.c b/panel-plugin/xkb-plugin.c
index dcb3d9f..3c6b98f 100644
--- a/panel-plugin/xkb-plugin.c
+++ b/panel-plugin/xkb-plugin.c
@@ -80,7 +80,7 @@ static void         xkb_plugin_configure_plugin         (XfcePanelPlugin *plugin
  *                           XKB Stuff                               *
  * ----------------------------------------------------------------- */
 
-static void         xkb_plugin_state_changed            (gint current_group,
+static void         xkb_plugin_state_changed            (XkbKeyboard *keyboard,
                                                          gboolean config_changed,
                                                          gpointer user_data);
 
@@ -217,8 +217,10 @@ xkb_plugin_construct (XfcePanelPlugin *plugin)
             G_CALLBACK (xkb_plugin_layout_image_draw), xkb_plugin);
     gtk_widget_show (GTK_WIDGET (xkb_plugin->layout_image));
 
-    xkb_plugin->keyboard = xkb_keyboard_new (xkb_xfconf_get_group_policy (xkb_plugin->config),
-            xkb_plugin_state_changed, xkb_plugin);
+    xkb_plugin->keyboard = xkb_keyboard_new (xkb_xfconf_get_group_policy (xkb_plugin->config));
+
+    g_signal_connect (G_OBJECT (xkb_plugin->keyboard), "state-changed",
+            G_CALLBACK (xkb_plugin_state_changed), xkb_plugin);
 
     if (xkb_keyboard_get_initialized (xkb_plugin->keyboard))
     {
@@ -295,7 +297,7 @@ xkb_plugin_configure_plugin (XfcePanelPlugin *plugin)
 /* ----------------- xkb plugin stuff -----------------------*/
 
 static void
-xkb_plugin_state_changed (gint current_group,
+xkb_plugin_state_changed (XkbKeyboard *keyboard,
                           gboolean config_changed,
                           gpointer user_data)
 {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list