diff options
author | tamplan <[email protected]> | 2020-05-18 17:37:08 +0200 |
---|---|---|
committer | raveit65 <[email protected]> | 2020-07-13 10:24:27 +0200 |
commit | e6215d267425ec0db970aecf420077babfcc035d (patch) | |
tree | 71af6b32e838583742d495238c814853212aa66d /src/eom-util.c | |
parent | 5d23e4e33af855f770ec88a467ec08bd1f5df3f1 (diff) | |
download | eom-e6215d267425ec0db970aecf420077babfcc035d.tar.bz2 eom-e6215d267425ec0db970aecf420077babfcc035d.tar.xz |
Add tab scrolling support for GTK3
Diffstat (limited to 'src/eom-util.c')
-rw-r--r-- | src/eom-util.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/eom-util.c b/src/eom-util.c index 1dc42fa..9eccc73 100644 --- a/src/eom-util.c +++ b/src/eom-util.c @@ -427,3 +427,47 @@ eom_util_show_file_in_filemanager (GFile *file, GtkWindow *toplevel) if (!done) _eom_util_show_file_in_filemanager_fallback (file, toplevel); } + +gboolean +eom_util_dialog_page_scroll_event_cb (GtkWidget *widget, + GdkEventScroll *event) + +{ + 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); + break; + case GDK_SCROLL_LEFT: + case GDK_SCROLL_UP: + gtk_notebook_prev_page (notebook); + break; + case GDK_SCROLL_SMOOTH: + break; + } + + return TRUE; +} |