[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