Not ideal, because it doesn't work when the mouse hovers over empty
areas. If we connect that signal to the notebook itself, it will also
trigger when scrolling the web page -- if the web_view doesn't handle
the scroll. The event then propagates upwards in the hierarchy and ends
up in the notebook.
Means we would have to wrap the web_view in a dummy evbox that catches
all scroll events. Nah.
#include <JavaScriptCore/JavaScript.h>
#include <JavaScriptCore/JavaScript.h>
-gboolean button_tablabel(GtkWidget *, GdkEvent *, gpointer);
void client_destroy(GtkWidget *, gpointer);
WebKitWebView *client_new(const gchar *, WebKitWebView *, gboolean,
gboolean);
void client_destroy(GtkWidget *, gpointer);
WebKitWebView *client_new(const gchar *, WebKitWebView *, gboolean,
gboolean);
gboolean key_common(GtkWidget *, GdkEvent *, gpointer);
gboolean key_downloadmanager(GtkWidget *, GdkEvent *, gpointer);
gboolean key_location(GtkWidget *, 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 *,
gboolean key_web_view(GtkWidget *, GdkEvent *, gpointer);
void mainwindow_setup(void);
gboolean menu_web_view(WebKitWebView *, WebKitContextMenu *, GdkEvent *,
gchar *user_agent = NULL;
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)
{
void
client_destroy(GtkWidget *widget, gpointer data)
{
evbox = gtk_event_box_new();
gtk_container_add(GTK_CONTAINER(evbox), tabbox);
g_signal_connect(G_OBJECT(evbox), "button-release-event",
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
/* This only shows the event box and the label inside, nothing else.
* Needed because the evbox/label is "internal" to the notebook and
+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)
{
gboolean
key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data)
{