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 /render | |
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 'render')
-rw-r--r-- | render/form.c | 10 | ||||
-rw-r--r-- | render/html_interaction.c | 13 |
2 files changed, 11 insertions, 12 deletions
diff --git a/render/form.c b/render/form.c index 9724c4c4c..924dbb4f7 100644 --- a/render/form.c +++ b/render/form.c @@ -1295,19 +1295,19 @@ void form_select_menu_scroll_callback(void *client_data, .y1 = scrollbar_data->y1 }; - browser_window_set_drag_type(html->bw, DRAGGING_OTHER, - &rect); + browser_window_set_drag_type(html->bw, + DRAGGING_CONTENT_SCROLLBAR, &rect); menu->scroll_capture = true; root_bw = browser_window_get_root(html->bw); - gui_window_box_scroll_start(root_bw->window, - scrollbar_data->x0, scrollbar_data->y0, - scrollbar_data->x1, scrollbar_data->y1); } break; case SCROLLBAR_MSG_SCROLL_FINISHED: menu->scroll_capture = false; + + browser_window_set_drag_type(html->bw, + DRAGGING_NONE, NULL); break; default: break; diff --git a/render/html_interaction.c b/render/html_interaction.c index 2bec3d26a..56d9e83b7 100644 --- a/render/html_interaction.c +++ b/render/html_interaction.c @@ -223,8 +223,7 @@ void html_mouse_action(struct content *c, struct browser_window *bw, return; } - if (bw->drag_type != DRAGGING_NONE && !mouse && - html->scrollbar != NULL) { + if (!mouse && html->scrollbar != NULL) { /* drag end: scrollbar */ html_overflow_scroll_drag_end(html->scrollbar, mouse, x, y); } @@ -856,19 +855,19 @@ void html_overflow_scroll_callback(void *client_data, .x1 = scrollbar_data->x1, .y1 = scrollbar_data->y1 }; - browser_window_set_drag_type(html->bw, DRAGGING_OTHER, - &rect); + browser_window_set_drag_type(html->bw, + DRAGGING_CONTENT_SCROLLBAR, &rect); html->scrollbar = scrollbar_data->scrollbar; root_bw = browser_window_get_root(html->bw); - gui_window_box_scroll_start(root_bw->window, - scrollbar_data->x0, scrollbar_data->y0, - scrollbar_data->x1, scrollbar_data->y1); } break; case SCROLLBAR_MSG_SCROLL_FINISHED: html->scrollbar = NULL; + + browser_window_set_drag_type(html->bw, + DRAGGING_NONE, NULL); browser_window_set_pointer(html->bw, GUI_POINTER_DEFAULT); |