Add panel_config_click_parse() API to parse click string.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 17 Nov 2014 19:11:21 +0000 (21:11 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 17 Nov 2014 19:11:21 +0000 (21:11 +0200)
ChangeLog
src/input-button.c
src/plugin.h

index aa52239..ad55888 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -25,7 +25,8 @@
 * Added API lxpanel_apply_hotkey() as a convenient libkeybinder interface
     to use in modules that also use panel_config_hotkey_button_new(). Now
     LXPanel requires libkeybinder too.
-* Added API panel_config_click_button_new() to configure mouse gestures.
+* Added API panel_config_click_button_new() to configure mouse gestures
+    and panel_config_click_parse() to parse its output.
 * Added "icon-size-changed" signal to LXPanel which is emitted when icons
     size in configuration dialog was changed.
 * Improved lxpanel_image_new_for_icon() API to follow panel icons size
index 69fa6eb..ac766b9 100644 (file)
@@ -168,7 +168,7 @@ static gboolean on_button_press_event(GtkButton *test, GdkEventButton *event,
     if (event->button == 3 && state == 0)
         return FALSE;
     /* FIXME: how else to represent buttons? */
-    snprintf(digit, sizeof(digit), "%d", event->button);
+    snprintf(digit, sizeof(digit), "%u", event->button);
     keyval = gdk_keyval_from_name(digit);
     /* if click is equal to previous then nothing to do */
     if (state == btn->mods && keyval == btn->key)
@@ -318,6 +318,20 @@ gboolean lxpanel_apply_hotkey(char **hkptr, const char *keystring,
     *hkptr = g_strdup(keystring);
     return TRUE;
 }
+
+guint panel_config_click_parse(const char *keystring, GdkModifierType *mods)
+{
+    guint key;
+    const char *name;
+
+    if (keystring == NULL)
+        return 0;
+    gtk_accelerator_parse(keystring, &key, mods);
+    name = gdk_keyval_name(key);
+    if (name[0] >= '1' && name[0] <= '9')
+        return (name[0] - '0');
+    return 0;
+}
 #if 0
 // test code, can be used as an example until erased. :)
 static void handler(const char *keystring, void *user_data)
index 71b389c..64eba76 100644 (file)
@@ -314,6 +314,21 @@ gboolean lxpanel_apply_hotkey(char **hkptr, const char *keystring,
                               void (*handler)(const char *keystring, gpointer user_data),
                               gpointer user_data, gboolean show_error);
 
+/**
+ * panel_config_click_parse
+ * @keystring: string to parse
+ * @mods: (out): return location for modifier
+ *
+ * Parses click string received in "changed" signal emission of widget
+ * created with panel_config_click_button_new() and returns button and
+ * modifier that can be compared with GdkEventButton data when required.
+ *
+ * Returns: button number or 0 if @keystring is invalid.
+ *
+ * Since: 0.8.0
+ */
+guint panel_config_click_parse(const char *keystring, GdkModifierType *mods);
+
 G_END_DECLS
 
 #endif /* __PLUGIN_H__ */