[gnome-terminal] profile editor: Reimplement tab-switching by mousewheel
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal] profile editor: Reimplement tab-switching by mousewheel
- Date: Sun, 16 Dec 2012 19:25:57 +0000 (UTC)
commit aca7f5d5bd7486c33cee516b73a750fc2ef13d61
Author: Christian Persch <chpe gnome org>
Date: Sun Dec 16 20:25:05 2012 +0100
profile editor: Reimplement tab-switching by mousewheel
src/profile-editor.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
---
diff --git a/src/profile-editor.c b/src/profile-editor.c
index c8174bd..57c074d 100644
--- a/src/profile-editor.c
+++ b/src/profile-editor.c
@@ -480,6 +480,70 @@ profile_editor_destroyed (GtkWidget *editor,
g_object_set_data (G_OBJECT (editor), "builder", NULL);
}
+
+/* Tab scrolling was removed from GtkNotebook in gtk 3, so reimplement it here */
+static gboolean
+scroll_event_cb (GtkWidget *widget,
+ GdkEventScroll *event,
+ gpointer user_data)
+{
+ GtkNotebook *notebook = GTK_NOTEBOOK (widget);
+ GtkWidget *child, *event_widget, *action_widget;
+
+ child = gtk_notebook_get_nth_page (notebook, gtk_notebook_get_current_page (notebook));
+ if (child == NULL)
+ return FALSE;
+
+ event_widget = gtk_get_event_widget ((GdkEvent *) event);
+
+ /* Ignore scroll events from the content of the page */
+ if (event_widget == NULL ||
+ event_widget == child ||
+ gtk_widget_is_ancestor (event_widget, child))
+ return FALSE;
+
+ /* And also from the action widgets */
+ action_widget = gtk_notebook_get_action_widget (notebook, GTK_PACK_START);
+ if (event_widget == action_widget ||
+ (action_widget != NULL && gtk_widget_is_ancestor (event_widget, action_widget)))
+ return FALSE;
+ action_widget = gtk_notebook_get_action_widget (notebook, GTK_PACK_END);
+ if (event_widget == action_widget ||
+ (action_widget != NULL && gtk_widget_is_ancestor (event_widget, action_widget)))
+ return FALSE;
+
+ switch (event->direction) {
+ case GDK_SCROLL_RIGHT:
+ case GDK_SCROLL_DOWN:
+ gtk_notebook_next_page (notebook);
+ return TRUE;
+ case GDK_SCROLL_LEFT:
+ case GDK_SCROLL_UP:
+ gtk_notebook_prev_page (notebook);
+ return TRUE;
+ case GDK_SCROLL_SMOOTH:
+ switch (gtk_notebook_get_tab_pos (notebook)) {
+ case GTK_POS_LEFT:
+ case GTK_POS_RIGHT:
+ if (event->delta_y > 0)
+ gtk_notebook_next_page (notebook);
+ else if (event->delta_y < 0)
+ gtk_notebook_prev_page (notebook);
+ break;
+ case GTK_POS_TOP:
+ case GTK_POS_BOTTOM:
+ if (event->delta_x > 0)
+ gtk_notebook_next_page (notebook);
+ else if (event->delta_x < 0)
+ gtk_notebook_prev_page (notebook);
+ break;
+ }
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
terminal_profile_editor_focus_widget (GtkWidget *editor,
const char *widget_name)
@@ -684,6 +748,10 @@ terminal_profile_edit (GSettings *profile,
G_CALLBACK (editor_response_cb),
NULL);
+ w = (GtkWidget *) gtk_builder_get_object (builder, "profile-editor-notebook");
+ gtk_widget_add_events (w, GDK_BUTTON_PRESS_MASK | GDK_SCROLL_MASK);
+ g_signal_connect (w, "scroll-event", G_CALLBACK (scroll_event_cb), NULL);
+
w = (GtkWidget *) gtk_builder_get_object (builder, "color-scheme-combobox");
init_color_scheme_menu (w);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]