diff options
author | Pablo Barciela <[email protected]> | 2018-08-01 00:35:55 +0200 |
---|---|---|
committer | lukefromdc <[email protected]> | 2018-08-01 14:46:54 -0400 |
commit | c455418207877b4f7f84e86bbdfbd4c667ae8221 (patch) | |
tree | aaad2148623b67476fc4eee66ad3abf02c2175b9 /src | |
parent | e740a981b0be879321e5b3837332712d8231b400 (diff) | |
download | caja-c455418207877b4f7f84e86bbdfbd4c667ae8221.tar.bz2 caja-c455418207877b4f7f84e86bbdfbd4c667ae8221.tar.xz |
add the ability to switch tabs using [ctrl+tab] and [ctrl+shift+tab]
If true the gsettings key "ctrl-tab-switch-tabs" into "org.mate.caja.preferences"
Closes https://github.com/mate-desktop/caja/issues/768
Diffstat (limited to 'src')
-rw-r--r-- | src/caja-navigation-window.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/caja-navigation-window.c b/src/caja-navigation-window.c index a21e1595..57d5e425 100644 --- a/src/caja-navigation-window.c +++ b/src/caja-navigation-window.c @@ -520,6 +520,52 @@ caja_navigation_window_key_press_event (GtkWidget *widget, window = CAJA_NAVIGATION_WINDOW (widget); + if (event->state & GDK_CONTROL_MASK) + { + GSettings *settings = g_settings_new ("org.mate.caja.preferences"); + gboolean handled = FALSE; + + if (g_settings_get_boolean (settings, "ctrl-tab-switch-tabs")) + { + CajaWindow *cajawin; + CajaWindowSlot *slot; + CajaNavigationWindowPane *pane; + CajaNotebook *cajanotebook; + GtkNotebook *notebook; + int pages; + int page_num; + + cajawin = CAJA_WINDOW (window); + slot = caja_window_get_active_slot (cajawin); + pane = CAJA_NAVIGATION_WINDOW_PANE (slot->pane); + cajanotebook = CAJA_NOTEBOOK (pane->notebook); + notebook = GTK_NOTEBOOK (cajanotebook); + pages = gtk_notebook_get_n_pages (notebook); + page_num = gtk_notebook_get_current_page (notebook); + + if (event->keyval == GDK_KEY_ISO_Left_Tab) + { + if (page_num != 0) + gtk_notebook_prev_page (notebook); + else + gtk_notebook_set_current_page (notebook, (pages - 1)); + handled = TRUE; + } + if (event->keyval == GDK_KEY_Tab) + { + if (page_num != (pages -1)) + gtk_notebook_next_page (notebook); + else + gtk_notebook_set_current_page (notebook, 0); + handled = TRUE; + } + } + g_object_unref (settings); + + if (handled) + return TRUE; + } + for (i = 0; i < G_N_ELEMENTS (extra_navigation_window_keybindings); i++) { if (extra_navigation_window_keybindings[i].keyval == event->keyval) |