summaryrefslogtreecommitdiff
path: root/gtk/gtk_window.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2010-12-16 20:46:13 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2010-12-16 20:46:13 +0000
commit3a2df10787bb1279e1c4de2ad30b247c55bee110 (patch)
treefd4ab77f96b8a3dfeed392fe612f9cd28f138a4f /gtk/gtk_window.c
parentad7283780d5f6a6949d53530ea36f0cbe6e390fb (diff)
downloadnetsurf-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.c18
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;
}