summaryrefslogtreecommitdiff
path: root/gtk/gtk_scaffolding.c
diff options
context:
space:
mode:
authorRob Kendrick <rjek@netsurf-browser.org>2007-03-06 21:29:51 +0000
committerRob Kendrick <rjek@netsurf-browser.org>2007-03-06 21:29:51 +0000
commit212b92f66e278c6a7f3f92c0c729265718e00929 (patch)
tree3e98c041fad4b4cd35fbfcd06437b4b4ae36999c /gtk/gtk_scaffolding.c
parent3dea2a398753c284488dfef8d5d39c58fe323b66 (diff)
downloadnetsurf-212b92f66e278c6a7f3f92c0c729265718e00929.tar.gz
netsurf-212b92f66e278c6a7f3f92c0c729265718e00929.tar.bz2
Reformat and apply Darren Salt's scrollwheel and keyboard scrolling patch, although I still can't get the keyboard scrolling to work.
svn path=/trunk/netsurf/; revision=3199
Diffstat (limited to 'gtk/gtk_scaffolding.c')
-rw-r--r--gtk/gtk_scaffolding.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/gtk/gtk_scaffolding.c b/gtk/gtk_scaffolding.c
index f52397394..cb5d1d1a8 100644
--- a/gtk/gtk_scaffolding.c
+++ b/gtk/gtk_scaffolding.c
@@ -511,20 +511,47 @@ gboolean nsgtk_history_button_press_event(GtkWidget *widget,
#define GET_WIDGET(x) glade_xml_get_widget(g->xml, (x))
+static gboolean do_scroll_event(GtkWidget *widget, GdkEventScroll *ev,
+ gpointer data)
+{
+ switch (ev->direction)
+ {
+ case GDK_SCROLL_UP:
+ case GDK_SCROLL_DOWN:
+ gtk_widget_event(g_object_get_data(
+ G_OBJECT(widget), "vScroll"), ev);
+ break;
+ default:
+ gtk_widget_event(g_object_get_data(
+ G_OBJECT(widget), "hScroll"), ev);
+ }
+
+ return TRUE;
+}
+
void nsgtk_attach_toplevel_viewport(nsgtk_scaffolding *g,
GtkViewport *vp)
{
+ GtkWidget *scrollbar;
+
/* Insert the viewport into the right part of our table */
GtkTable *table = GTK_TABLE(GET_WIDGET("centreTable"));
LOG(("Attaching viewport to scaffolding %p", g));
gtk_table_attach_defaults(table, GTK_WIDGET(vp), 0, 1, 0, 1);
/* connect our scrollbars to the viewport */
+ scrollbar = GET_WIDGET("coreScrollHorizontal");
gtk_viewport_set_hadjustment(vp,
- gtk_range_get_adjustment(GTK_RANGE(GET_WIDGET("coreScrollHorizontal"))));
+ gtk_range_get_adjustment(GTK_RANGE(scrollbar)));
+ g_object_set_data(G_OBJECT(vp), "hScroll", scrollbar);
+ scrollbar = GET_WIDGET("coreScrollVertical");
gtk_viewport_set_vadjustment(vp,
- gtk_range_get_adjustment(GTK_RANGE(GET_WIDGET("coreScrollVertical"))));
-
+ gtk_range_get_adjustment(GTK_RANGE(scrollbar)));
+ g_object_set_data(G_OBJECT(vp), "vScroll", scrollbar);
+ g_signal_connect(G_OBJECT(vp), "scroll_event", do_scroll_event, NULL);
+
+ gdk_window_set_accept_focus (GTK_WIDGET(vp)->window, TRUE);
+
/* And set the size-request to zero to cause it to get its act together */
gtk_widget_set_size_request(GTK_WIDGET(vp), 0, 0);