diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2012-01-11 14:20:26 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2012-01-11 14:20:26 +0000 |
commit | 04ece30fa930743d21af95d809acc2d25f82848a (patch) | |
tree | dc12f21957546d0fff08687055ccdd4a2e81509e /desktop/browser.c | |
parent | c08ee820764673bb6d8ac367f8637d040adf7fa2 (diff) | |
download | netsurf-04ece30fa930743d21af95d809acc2d25f82848a.tar.gz netsurf-04ece30fa930743d21af95d809acc2d25f82848a.tar.bz2 |
Pass pointer constraints for drag out to front ends. Ensure content scrollbar drag termination always informs the browser window layer that the drag is over.
svn path=/trunk/netsurf/; revision=13395
Diffstat (limited to 'desktop/browser.c')
-rw-r--r-- | desktop/browser.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index fbb91b02c..4d54e8bc4 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -383,16 +383,28 @@ void browser_window_set_drag_type(struct browser_window *bw, browser_drag_type type, struct rect *rect) { struct browser_window *top_bw = browser_window_get_root(bw); + gui_drag_type gtype; - if (type == DRAGGING_NONE) + bw->drag_type = type; + + if (type == DRAGGING_NONE) { top_bw->drag_window = NULL; - else + } else { top_bw->drag_window = bw; - bw->drag_type = type; + switch (type) { + case DRAGGING_SCR_X: + case DRAGGING_SCR_Y: + case DRAGGING_CONTENT_SCROLLBAR: + gtype = GDRAGGING_SCROLLBAR; + break; + default: + gtype = GDRAGGING_OTHER; + break; + } - /* TODO: inform front end that the core is handling drag, - * pass rect */ + gui_window_drag_start(top_bw->window, gtype, rect); + } } /* exported interface, documented in browser.h */ @@ -2554,10 +2566,8 @@ void browser_window_mouse_drag_end(struct browser_window *bw, switch (bw->drag_type) { case DRAGGING_SELECTION: - /* Drag handled by content handler */ - break; - case DRAGGING_OTHER: + case DRAGGING_CONTENT_SCROLLBAR: /* Drag handled by content handler */ break; |