diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2010-12-16 20:46:13 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2010-12-16 20:46:13 +0000 |
commit | 3a2df10787bb1279e1c4de2ad30b247c55bee110 (patch) | |
tree | fd4ab77f96b8a3dfeed392fe612f9cd28f138a4f /gtk/gtk_window.c | |
parent | ad7283780d5f6a6949d53530ea36f0cbe6e390fb (diff) | |
download | netsurf-3a2df10787bb1279e1c4de2ad30b247c55bee110.tar.gz netsurf-3a2df10787bb1279e1c4de2ad30b247c55bee110.tar.bz2 |
Make drags less jerky.
svn path=/trunk/netsurf/; revision=11077
Diffstat (limited to 'gtk/gtk_window.c')
-rw-r--r-- | gtk/gtk_window.c | 18 |
1 files changed, 13 insertions, 5 deletions
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 <inttypes.h> #include <string.h> +#include <limits.h> #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; } |