[packages/netsurf] - fix wheelmouse scrolling, taken from upstream

witekfl witekfl at pld-linux.org
Sat May 4 22:17:13 CEST 2013


commit b33bafa8651bfa3cd5f7b89b6943f344cada9b5c
Author: witekfl <witekfl at poczta.onet.pl>
Date:   Sat May 4 22:15:54 2013 +0200

    - fix wheelmouse scrolling, taken from upstream

 scroll.patch | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 179 insertions(+)
---
diff --git a/scroll.patch b/scroll.patch
new file mode 100644
index 0000000..65eb820
--- /dev/null
+++ b/scroll.patch
@@ -0,0 +1,179 @@
+diff --git a/gtk/res/tabcontents.gtk2.ui b/gtk/res/tabcontents.gtk2.ui
+index e87249e..63e290e 100644
+--- a/src/netsurf-3.0/gtk/res/tabcontents.gtk2.ui
++++ b/src/netsurf-3.0/gtk/res/tabcontents.gtk2.ui
+@@ -79,13 +79,13 @@
+       </object>
+   <object class="GtkAdjustment" id="layouthadjustment">
+     <property name="upper">100</property>
+-    <property name="step_increment">1</property>
++    <property name="step_increment">30</property>
+     <property name="page_increment">10</property>
+     <property name="page_size">10</property>
+   </object>
+   <object class="GtkAdjustment" id="layoutvadjustment">
+     <property name="upper">100</property>
+-    <property name="step_increment">1</property>
++    <property name="step_increment">30</property>
+     <property name="page_increment">10</property>
+     <property name="page_size">10</property>
+   </object>
+diff --git a/gtk/window.c b/gtk/window.c
+index 7642e3b..663ff32 100644
+--- a/src/netsurf-3.0/gtk/window.c
++++ b/src/netsurf-3.0/gtk/window.c
+@@ -384,105 +384,91 @@ static gboolean nsgtk_window_button_release_event(GtkWidget *widget,
+ 	return TRUE;
+ }
+ 
+-static gboolean nsgtk_window_scroll_event(GtkWidget *widget,
+-				GdkEventScroll *event, gpointer data)
++static gboolean
++nsgtk_window_scroll_event(GtkWidget *widget,
++			  GdkEventScroll *event,
++			  gpointer data)
+ {
+ 	struct gui_window *g = data;
+ 	double value;
++	double deltax = 0;
++	double deltay = 0;
+ 	GtkAdjustment *vscroll = nsgtk_layout_get_vadjustment(g->layout);
+ 	GtkAdjustment *hscroll = nsgtk_layout_get_hadjustment(g->layout);
+ 	GtkAllocation alloc;
+ 
+-	LOG(("%d", event->direction));
+ 	switch (event->direction) {
+ 	case GDK_SCROLL_LEFT:
+-		if (browser_window_scroll_at_point(g->bw,
+-				event->x / g->bw->scale,
+-				event->y / g->bw->scale,
+-				-100, 0) != true) {
+-			/* core did not handle event do horizontal scroll */
+-
+-			value = gtk_adjustment_get_value(hscroll) -
+-				(nsgtk_adjustment_get_step_increment(hscroll) *2);
+-
+-			if (value < nsgtk_adjustment_get_lower(hscroll)) {
+-				value = nsgtk_adjustment_get_lower(hscroll);
+-			}
+-
+-			gtk_adjustment_set_value(hscroll, value);
+-		}
++		deltax = -1.0;
+ 		break;
+ 
+ 	case GDK_SCROLL_UP:
+-		if (browser_window_scroll_at_point(g->bw,
+-				event->x / g->bw->scale,
+-				event->y / g->bw->scale,
+-				0, -100) != true) {
+-			/* core did not handle event change vertical
+-			 * adjustment. 
+-			 */
++		deltay = -1.0;
++		break;
+ 
+-			value = gtk_adjustment_get_value(vscroll) -
+-				(nsgtk_adjustment_get_step_increment(vscroll) * 2);
++	case GDK_SCROLL_RIGHT:
++		deltax = 1.0;
++		break;
+ 
+-			if (value < nsgtk_adjustment_get_lower(vscroll)) {
+-				value = nsgtk_adjustment_get_lower(vscroll);
+-			}
++	case GDK_SCROLL_DOWN:
++		deltay = 1.0;
++		break;
+ 
+-			gtk_adjustment_set_value(vscroll, value);
+-		}
++#if GTK_CHECK_VERSION(3,4,0)
++	case GDK_SCROLL_SMOOTH:
++		gdk_event_get_scroll_deltas((GdkEvent *)event, &deltax, &deltay);
+ 		break;
++#endif
++	default:
++		LOG(("Unhandled mouse scroll direction"));
++		return TRUE;
++	}
+ 
+-	case GDK_SCROLL_RIGHT:
+-		if (browser_window_scroll_at_point(g->bw,
+-				event->x / g->bw->scale,
+-				event->y / g->bw->scale,
+-				100, 0) != true) {
++	deltax *= nsgtk_adjustment_get_step_increment(hscroll);
++	deltay *= nsgtk_adjustment_get_step_increment(vscroll);
++
++	LOG(("Scrolling %f, %f", deltax, deltay));
+ 
+-			/* core did not handle event change horizontal
+-			 * adjustment. 
+-			 */
++	if (browser_window_scroll_at_point(g->bw,
++					   event->x / g->bw->scale,
++					   event->y / g->bw->scale,
++					   deltax, deltay) != true) {
+ 
+-			value = gtk_adjustment_get_value(hscroll) +
+-				(nsgtk_adjustment_get_step_increment(hscroll) * 2);
++		/* core did not handle event so change adjustments */
++
++		/* Horizontal */
++		if (deltax != 0) {
++			value = gtk_adjustment_get_value(hscroll) + deltax;
+ 
+ 			/* @todo consider gtk_widget_get_allocated_width() */
+ 			nsgtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc);
+ 
+ 			if (value > nsgtk_adjustment_get_upper(hscroll) - alloc.width) {
+-				value = nsgtk_adjustment_get_upper(hscroll) - 
+-					alloc.width;
++				value = nsgtk_adjustment_get_upper(hscroll) - alloc.width;
++			}
++			if (value < nsgtk_adjustment_get_lower(hscroll)) {
++				value = nsgtk_adjustment_get_lower(hscroll);
+ 			}
+ 
+ 			gtk_adjustment_set_value(hscroll, value);
+ 		}
+-		break;
+ 
+-	case GDK_SCROLL_DOWN:
+-		if (browser_window_scroll_at_point(g->bw,
+-				event->x / g->bw->scale,
+-				event->y / g->bw->scale,
+-				0, 100) != true) {
+-			/* core did not handle event change vertical
+-			 * adjustment. 
+-			 */
+-
+-			value = gtk_adjustment_get_value(vscroll) +
+-				(nsgtk_adjustment_get_step_increment(vscroll) * 2);
++		/* Vertical */
++		if (deltay != 0) {
++			value = gtk_adjustment_get_value(vscroll) + deltay;
++
+ 			/* @todo consider gtk_widget_get_allocated_height */
+ 			nsgtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc);
+ 
+-			if (value > nsgtk_adjustment_get_upper(vscroll) - alloc.height) {
+-				value = nsgtk_adjustment_get_upper(vscroll) - 
+-					alloc.height;
++			if (value > (nsgtk_adjustment_get_upper(vscroll) - alloc.height)) {
++				value = nsgtk_adjustment_get_upper(vscroll) - alloc.height;
++			}
++			if (value < nsgtk_adjustment_get_lower(vscroll)) {
++				value = nsgtk_adjustment_get_lower(vscroll);
+ 			}
+ 
+ 			gtk_adjustment_set_value(vscroll, value);
+ 		}
+-		break;
+-
+-	default:
+-		break;
+ 	}
+ 
+ 	return TRUE;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/netsurf.git/commitdiff/1f954c058a0f216532b2d61ef0572b8b9f56c9de



More information about the pld-cvs-commit mailing list