summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2012-08-02 16:29:37 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2012-08-02 16:29:37 +0100
commit36d30565262631c3d053f1f1e6ef8c783c62e906 (patch)
tree180ea7e6c342bbfe3336f8c9743ae09788809675
parentde8af23956cdf63bd82384f8cf629dfb1d79db8b (diff)
downloadnetsurf-36d30565262631c3d053f1f1e6ef8c783c62e906.tar.gz
netsurf-36d30565262631c3d053f1f1e6ef8c783c62e906.tar.bz2
Grab pointer during drag.
-rw-r--r--framebuffer/gui.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/framebuffer/gui.c b/framebuffer/gui.c
index 062f765a4..dfbaa263d 100644
--- a/framebuffer/gui.c
+++ b/framebuffer/gui.c
@@ -91,6 +91,7 @@ static struct gui_drag {
int button;
int x;
int y;
+ bool grabbed_pointer;
} gui_drag;
@@ -652,6 +653,13 @@ fb_browser_window_click(fbtk_widget_t *widget, fbtk_callback_info *cbi)
case NSFB_KEY_MOUSE_1:
if (gui_drag.state == GUI_DRAG_DRAG) {
/* End of a drag, rather than click */
+
+ if (gui_drag.grabbed_pointer) {
+ /* need to ungrab pointer */
+ fbtk_tgrab_pointer(widget);
+ gui_drag.grabbed_pointer = false;
+ }
+
gui_drag.state = GUI_DRAG_NONE;
/* Tell core */
@@ -670,6 +678,12 @@ fb_browser_window_click(fbtk_widget_t *widget, fbtk_callback_info *cbi)
/* End of a drag, rather than click */
gui_drag.state = GUI_DRAG_NONE;
+ if (gui_drag.grabbed_pointer) {
+ /* need to ungrab pointer */
+ fbtk_tgrab_pointer(widget);
+ gui_drag.grabbed_pointer = false;
+ }
+
/* Tell core */
browser_window_mouse_track(gw->bw, 0, x, y);
break;
@@ -717,6 +731,7 @@ fb_browser_window_move(fbtk_widget_t *widget, fbtk_callback_info *cbi)
BROWSER_MOUSE_DRAG_2,
gui_drag.x, gui_drag.y);
}
+ gui_drag.grabbed_pointer = fbtk_tgrab_pointer(widget);
gui_drag.state = GUI_DRAG_DRAG;
}