summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinfo-cppsp <[email protected]>2018-02-05 15:46:55 +0100
committermonsta <[email protected]>2018-04-01 13:19:10 +0300
commit03ac86b14ee1f676f54659b790ffd33bae71ccb3 (patch)
tree875d6089f235898aba9a8a686818d9af6f8e9c41
parenteb57c734d24892f2668ed5e74f8fab1483fe3b22 (diff)
downloadmate-panel-03ac86b14ee1f676f54659b790ffd33bae71ccb3.tar.bz2
mate-panel-03ac86b14ee1f676f54659b790ffd33bae71ccb3.tar.xz
run-dialog: use F6 to switch between entry field and program list
fix #676
-rw-r--r--mate-panel/panel-run-dialog.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/mate-panel/panel-run-dialog.c b/mate-panel/panel-run-dialog.c
index 0cc31018..5723e0a6 100644
--- a/mate-panel/panel-run-dialog.c
+++ b/mate-panel/panel-run-dialog.c
@@ -1904,6 +1904,35 @@ panel_run_dialog_setup_pixmap (PanelRunDialog *dialog,
dialog);
}
+/* this runs after entry_event() */
+static gboolean
+key_press_event (GtkWidget *run_dialog,
+ GdkEventKey *event,
+ PanelRunDialog *dialog)
+{
+
+ /* allow only key presses */
+ if (event->type != GDK_KEY_PRESS)
+ return FALSE;
+
+ /* If the program list is enabled and open and the user presses the F6 key
+ * the focus should jump between GtkComboBoxText and the program list */
+ if (panel_profile_get_enable_program_list () && panel_profile_get_show_program_list () && event->keyval == GDK_KEY_F6) {
+
+ /* jump to the program list from anywhere */
+ if (!gtk_widget_has_focus (dialog->program_list)) {
+ gtk_widget_grab_focus (dialog->program_list);
+ /* on the program list, jump to the entry box */
+ } else {
+ gtk_widget_grab_focus (dialog->combobox);
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static PanelRunDialog *
panel_run_dialog_new (GdkScreen *screen,
GtkBuilder *gui,
@@ -1932,6 +1961,10 @@ panel_run_dialog_new (GdkScreen *screen,
panel_run_dialog_setup_program_list (dialog, gui);
panel_run_dialog_setup_list_expander (dialog, gui);
+ /* key press event signal for the whole dialog */
+ g_signal_connect (dialog->run_dialog, "key-press-event",
+ G_CALLBACK (key_press_event), dialog);
+
panel_run_dialog_set_default_icon (dialog, FALSE);
panel_run_dialog_update_content (dialog, panel_profile_get_show_program_list ());