From 3a2df10787bb1279e1c4de2ad30b247c55bee110 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Thu, 16 Dec 2010 20:46:13 +0000 Subject: Make drags less jerky. svn path=/trunk/netsurf/; revision=11077 --- gtk/gtk_window.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'gtk/gtk_window.c') diff --git a/gtk/gtk_window.c b/gtk/gtk_window.c index df800862a..a45faa595 100644 --- a/gtk/gtk_window.c +++ b/gtk/gtk_window.c @@ -19,6 +19,7 @@ #include #include +#include #include "content/hlcache.h" #include "gtk/gtk_window.h" #include "desktop/browser.h" @@ -442,9 +443,19 @@ gboolean nsgtk_window_motion_notify_event(GtkWidget *widget, struct gui_window *g = data; bool shift = event->state & GDK_SHIFT_MASK; bool ctrl = event->state & GDK_CONTROL_MASK; - if ((abs(event->x - g->last_x) < 5) && (abs(event->y - g->last_y) < 5)) - /* necessary for touch screens */ + + if ((abs(event->x - g->last_x) < 5) && + (abs(event->y - g->last_y) < 5)) { + /* Mouse hasn't moved far enough from press coordinate for this + * to be considered a drag. */ return FALSE; + } else { + /* This is a drag, ensure it's always treated as such, even if + * we drag back over the press location */ + g->last_x = INT_MIN; + g->last_y = INT_MIN; + } + if (g->mouse.state & BROWSER_MOUSE_PRESS_1){ /* Start button 1 drag */ browser_window_mouse_click(g->bw, BROWSER_MOUSE_DRAG_1, @@ -472,9 +483,6 @@ gboolean nsgtk_window_motion_notify_event(GtkWidget *widget, browser_window_mouse_track(g->bw, g->mouse.state, event->x / g->bw->scale, event->y / g->bw->scale); - g->last_x = event->x; - g->last_y = event->y; - return TRUE; } -- cgit v1.2.3