Skip to content
Permalink
Browse files

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 #768
  • Loading branch information...
sc0w authored and lukefromdc committed Jul 31, 2018
1 parent e740a98 commit c455418207877b4f7f84e86bbdfbd4c667ae8221
Showing with 51 additions and 0 deletions.
  1. +5 −0 libcaja-private/org.mate.caja.gschema.xml
  2. +46 −0 src/caja-navigation-window.c
@@ -76,6 +76,11 @@
<summary>Where to position newly open tabs in browser windows.</summary>
<description>If set to "after-current-tab", then new tabs are inserted after the current tab. If set to "end", then new tabs are appended to the end of the tab list.</description>
</key>
<key name="ctrl-tab-switch-tabs" type="b">
<default>false</default>
<summary>Switch tabs with [ctrl] + [tab]</summary>
<description>If true, it enables the ability to switch tabs using [ctrl + tab] and [ctrl + shift + tab].</description>
</key>
<key name="exit-with-last-window" type="b">
<default>false</default>
<summary>Caja will exit when last window destroyed.</summary>
@@ -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)

0 comments on commit c455418

Please sign in to comment.
You can’t perform that action at this time.