X-Git-Url: https://git.armaanb.net/?p=chorizo.git;a=blobdiff_plain;f=browser.c;h=3c68dd3776e96f4aba7fb55761487bc94cb28262;hp=28620284260b1111bcfa0112c228bf5728cae286;hb=649a067929656183ca6d194536b5927bf84daf82;hpb=a5c296a74c83a23331009e55f323e89f679166c3 diff --git a/browser.c b/browser.c index 2862028..3c68dd3 100644 --- a/browser.c +++ b/browser.c @@ -14,7 +14,6 @@ #include -gboolean button_tablabel(GtkWidget *, GdkEvent *, gpointer); void client_destroy(GtkWidget *, gpointer); WebKitWebView *client_new(const gchar *, WebKitWebView *, gboolean, gboolean); @@ -43,6 +42,7 @@ void icon_location(GtkEntry *, GtkEntryIconPosition, GdkEvent *, gpointer); gboolean key_common(GtkWidget *, GdkEvent *, gpointer); gboolean key_downloadmanager(GtkWidget *, GdkEvent *, gpointer); gboolean key_location(GtkWidget *, GdkEvent *, gpointer); +gboolean key_tablabel(GtkWidget *, GdkEvent *, gpointer); gboolean key_web_view(GtkWidget *, GdkEvent *, gpointer); void mainwindow_setup(void); gboolean menu_web_view(WebKitWebView *, WebKitContextMenu *, GdkEvent *, @@ -100,21 +100,6 @@ gint tab_width_chars = 20; gchar *user_agent = NULL; -gboolean -button_tablabel(GtkWidget *widget, GdkEvent *event, gpointer data) -{ - if (event->type == GDK_BUTTON_RELEASE) - { - switch (((GdkEventButton *)event)->button) - { - case 2: - client_destroy(NULL, data); - return TRUE; - } - } - return FALSE; -} - void client_destroy(GtkWidget *widget, gpointer data) { @@ -256,7 +241,11 @@ client_new(const gchar *uri, WebKitWebView *related_wv, gboolean show, evbox = gtk_event_box_new(); gtk_container_add(GTK_CONTAINER(evbox), tabbox); g_signal_connect(G_OBJECT(evbox), "button-release-event", - G_CALLBACK(button_tablabel), c); + G_CALLBACK(key_tablabel), c); + + gtk_widget_add_events(evbox, GDK_SCROLL_MASK); + g_signal_connect(G_OBJECT(evbox), "scroll-event", + G_CALLBACK(key_tablabel), c); /* This only shows the event box and the label inside, nothing else. * Needed because the evbox/label is "internal" to the notebook and @@ -1029,6 +1018,39 @@ key_location(GtkWidget *widget, GdkEvent *event, gpointer data) return FALSE; } +gboolean +key_tablabel(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + GdkScrollDirection direction; + + if (event->type == GDK_BUTTON_RELEASE) + { + switch (((GdkEventButton *)event)->button) + { + case 2: + client_destroy(NULL, data); + return TRUE; + } + } + else if (event->type == GDK_SCROLL) + { + gdk_event_get_scroll_direction(event, &direction); + switch (direction) + { + case GDK_SCROLL_UP: + gtk_notebook_prev_page(GTK_NOTEBOOK(mw.notebook)); + break; + case GDK_SCROLL_DOWN: + gtk_notebook_next_page(GTK_NOTEBOOK(mw.notebook)); + break; + default: + break; + } + return TRUE; + } + return FALSE; +} + gboolean key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data) {