summaryrefslogtreecommitdiff
path: root/src/terminal-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/terminal-window.c')
-rw-r--r--src/terminal-window.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/terminal-window.c b/src/terminal-window.c
index db561b7..84fc65b 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -160,6 +160,9 @@ static gboolean terminal_window_focus_in_event (GtkWidget *widget,
static gboolean notebook_button_press_cb (GtkWidget *notebook,
GdkEventButton *event,
TerminalWindow *window);
+static gboolean window_key_press_cb (GtkWidget *notebook,
+ GdkEventKey *event,
+ TerminalWindow *window);
static gboolean notebook_popup_menu_cb (GtkWidget *notebook,
TerminalWindow *window);
static void notebook_page_selected_callback (GtkWidget *notebook,
@@ -2220,6 +2223,8 @@ terminal_window_init (TerminalWindow *window)
gtk_notebook_set_group_name (GTK_NOTEBOOK (priv->notebook), I_("mate-terminal-window"));
g_signal_connect (priv->notebook, "button-press-event",
G_CALLBACK (notebook_button_press_cb), window);
+ g_signal_connect (window, "key-press-event",
+ G_CALLBACK (window_key_press_cb), window);
g_signal_connect (priv->notebook, "popup-menu",
G_CALLBACK (notebook_popup_menu_cb), window);
g_signal_connect_after (priv->notebook, "switch-page",
@@ -2998,6 +3003,45 @@ notebook_button_press_cb (GtkWidget *widget,
}
static gboolean
+window_key_press_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ TerminalWindow *window)
+{
+ GSettings *settings;
+
+ settings = g_settings_new ("org.mate.terminal.global");
+
+ if (g_settings_get_boolean (settings, "ctrl-tab-switch-tabs") &&
+ event->state & GDK_CONTROL_MASK)
+ {
+ TerminalWindowPrivate *priv = window->priv;
+ GtkNotebook *notebook = GTK_NOTEBOOK (priv->notebook);
+
+ int pages = gtk_notebook_get_n_pages (notebook);
+ int 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));
+ return 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);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static gboolean
notebook_popup_menu_cb (GtkWidget *widget,
TerminalWindow *window)
{