diff options
author | waker <wakeroid@gmail.com> | 2012-11-06 21:28:18 +0100 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2012-11-06 21:58:37 +0100 |
commit | d8c66c31fa2a616588f1f4657ad0cfaa26fe982e (patch) | |
tree | a837d4508ecadc3f25a9ee01af7ec4d8d190a5bc /plugins/gtkui/hotkeys.c | |
parent | 1a20e32e750ae032f21c13f8001c718e42aeff41 (diff) |
gtkui: new hotkey grabbing widget and other fixes
Diffstat (limited to 'plugins/gtkui/hotkeys.c')
-rw-r--r-- | plugins/gtkui/hotkeys.c | 85 |
1 files changed, 34 insertions, 51 deletions
diff --git a/plugins/gtkui/hotkeys.c b/plugins/gtkui/hotkeys.c index 92edc8ad..a33f0e9e 100644 --- a/plugins/gtkui/hotkeys.c +++ b/plugins/gtkui/hotkeys.c @@ -259,7 +259,7 @@ prefwin_init_hotkeys (GtkWidget *_prefwin) { gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkeys_actions"), FALSE); gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkey_is_global"), FALSE); - gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkey_keycombo"), FALSE); + gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkeys_set_key"), FALSE); gtk_tree_view_set_model (GTK_TREE_VIEW (hotkeys), GTK_TREE_MODEL (hkstore)); @@ -377,19 +377,19 @@ on_hotkeys_list_cursor_changed (GtkTreeView *treeview, GValue val_isglobal = {0,}; gtk_tree_model_get_value (model, &iter, 3, &val_isglobal); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget (prefwin, "hotkey_is_global")), g_value_get_boolean (&val_isglobal)); - gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkey_keycombo"), TRUE); + gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkeys_set_key"), TRUE); GValue val_keycombo = {0,}; gtk_tree_model_get_value (model, &iter, 0, &val_keycombo); const char *keycombo = g_value_get_string (&val_keycombo); - gtk_entry_set_text (GTK_ENTRY (lookup_widget (prefwin, "hotkey_keycombo")), keycombo ? keycombo : ""); + gtk_button_set_label (GTK_BUTTON (lookup_widget (prefwin, "hotkeys_set_key")), keycombo ? keycombo : ""); } else { gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkeys_actions"), FALSE); gtk_tree_view_set_cursor (GTK_TREE_VIEW (lookup_widget (prefwin, "hotkeys_actions")), NULL, NULL, FALSE); gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkey_is_global"), FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget (prefwin, "hotkey_is_global")), FALSE); - gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkey_keycombo"), FALSE); - gtk_entry_set_text (GTK_ENTRY (lookup_widget (prefwin, "hotkey_keycombo")), ""); + gtk_widget_set_sensitive (lookup_widget (prefwin, "hotkeys_set_key"), FALSE); + gtk_button_set_label (GTK_BUTTON (lookup_widget (prefwin, "hotkeys_set_key")), _("<Not set>")); } if (path) { gtk_tree_path_free (path); @@ -515,6 +515,10 @@ static void get_keycombo_string (guint accel_key, GdkModifierType accel_mods, char *new_value) { // build value new_value[0] = 0; + if (!accel_key) { + strcpy (new_value, _("<Not set>")); + return; + } if (accel_mods & GDK_SHIFT_MASK) { strcat (new_value, "Shift "); } @@ -560,14 +564,23 @@ get_keycombo_string (guint accel_key, GdkModifierType accel_mods, char *new_valu } const char *name = get_name_for_keycode (accel_key); + if (!name) { + strcpy (new_value, _("<Not set>")); + return; + } strcat (new_value, name); } gboolean -on_hotkey_keycombo_key_press_event (GtkWidget *widget, +on_hotkeys_set_key_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { + if (!grabbed) { + printf ("was not grabbed\n"); + return FALSE; + } + GdkModifierType accel_mods = 0; guint accel_key; gchar *path; @@ -576,9 +589,7 @@ on_hotkey_keycombo_key_press_event (GtkWidget *widget, GdkModifierType consumed_modifiers; GdkDisplay *display; - if (!grabbed) { - return TRUE; - } + printf ("was grabbed\n"); display = gtk_widget_get_display (widget); @@ -610,17 +621,17 @@ on_hotkey_keycombo_key_press_event (GtkWidget *widget, accel_mods |= GDK_SHIFT_MASK; char name[1000]; - gtk_entry_set_text (GTK_ENTRY (widget), _("")); + gtk_button_set_label (GTK_BUTTON (widget), _("")); if (accel_mods == 0) { switch (event->keyval) { case GDK_Escape: get_keycombo_string (last_accel_key, last_accel_mask, name); - gtk_entry_set_text (GTK_ENTRY (widget), name); + gtk_button_set_label (GTK_BUTTON (widget), name); goto out; /* cancel */ case GDK_BackSpace: - gtk_entry_set_text (GTK_ENTRY (widget), ""); + gtk_button_set_label (GTK_BUTTON (widget), _("<Not set>")); last_accel_key = 0; last_accel_mask = 0; /* clear the accelerator on Backspace */ @@ -633,6 +644,7 @@ on_hotkey_keycombo_key_press_event (GtkWidget *widget, if (!gtk_accelerator_valid (accel_key, accel_mods)) { + gtk_button_set_label (GTK_BUTTON (widget), _("Invalid button! try again!")); gtk_widget_error_bell (widget); return TRUE; @@ -640,7 +652,7 @@ on_hotkey_keycombo_key_press_event (GtkWidget *widget, last_accel_key = accel_key; last_accel_mask = accel_mods; get_keycombo_string (last_accel_key, last_accel_mask, name); - gtk_entry_set_text (GTK_ENTRY (widget), name); + gtk_button_set_label (GTK_BUTTON (widget), name); // update the tree { @@ -662,65 +674,36 @@ out: } static void -hotkey_grab_focus (GtkWidget *widget, GdkEvent *event) { +hotkey_grab_focus (GtkWidget *widget) { GdkDisplay *display = gtk_widget_get_display (widget); if (grabbed) { return; } grabbed = 0; - if (GDK_GRAB_SUCCESS != gdk_keyboard_grab (gtk_widget_get_window (widget), FALSE, gdk_event_get_time ((GdkEvent*)event))) { + if (GDK_GRAB_SUCCESS != gdk_keyboard_grab (gtk_widget_get_window (widget), FALSE, GDK_CURRENT_TIME)) { return; } if (gdk_pointer_grab (gtk_widget_get_window (widget), FALSE, GDK_BUTTON_PRESS_MASK, NULL, NULL, - gdk_event_get_time ((GdkEvent *)event)) != GDK_GRAB_SUCCESS) + GDK_CURRENT_TIME) != GDK_GRAB_SUCCESS) { - gdk_display_keyboard_ungrab (display, gdk_event_get_time ((GdkEvent *)event)); + gdk_display_keyboard_ungrab (display, GDK_CURRENT_TIME); return; } - gtk_entry_set_text (GTK_ENTRY (widget), _("New key combination...")); + gtk_button_set_label (GTK_BUTTON (widget), _("New key combination...")); grabbed = 1; + printf ("successfully grabbed\n"); } -gboolean -on_hotkey_keycombo_focus_in_event (GtkWidget *widget, - GdkEventFocus *event, - gpointer user_data) -{ - hotkey_grab_focus (widget, (GdkEvent *)event); - return TRUE; -} - -gboolean -on_hotkey_keycombo_button_press_event (GtkWidget *widget, - GdkEventButton *event, - gpointer user_data) -{ - hotkey_grab_focus (widget, (GdkEvent *)event); - return FALSE; -} - -gboolean -on_hotkey_keycombo_motion_notify_event (GtkWidget *widget, - GdkEventMotion *event, - gpointer user_data) -{ - return TRUE; -} - - -gboolean -on_hotkey_keycombo_button_release_event - (GtkWidget *widget, - GdkEventButton *event, +void +on_hotkeys_set_key_clicked (GtkButton *button, gpointer user_data) { - return TRUE; + hotkey_grab_focus (GTK_WIDGET (button)); } - void on_hotkeys_apply_clicked (GtkButton *button, gpointer user_data) |