[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