Author: tlsa
Date: Mon Jun 27 12:29:49 2011
New Revision: 12514
URL:
http://source.netsurf-browser.org?rev=12514&view=rev
Log:
Fix bw->drag_type to be aware of remaining drag types.
Modified:
trunk/netsurf/desktop/browser.c
trunk/netsurf/desktop/browser.h
trunk/netsurf/render/form.c
trunk/netsurf/render/html_interaction.c
Modified: trunk/netsurf/desktop/browser.c
URL:
http://source.netsurf-browser.org/trunk/netsurf/desktop/browser.c?rev=125...
==============================================================================
--- trunk/netsurf/desktop/browser.c (original)
+++ trunk/netsurf/desktop/browser.c Mon Jun 27 12:29:49 2011
@@ -222,6 +222,13 @@
bw->y = y;
break;
}
+}
+
+/* exported interface, documented in browser.h */
+void browser_window_set_drag_type(struct browser_window *bw,
+ browser_drag_type type)
+{
+ bw->drag_type = type;
}
/**
@@ -1770,20 +1777,9 @@
void browser_window_mouse_drag_end(struct browser_window *bw,
browser_mouse_state mouse, int x, int y)
{
-
- if (bw->visible_select_menu != NULL) {
- form_select_mouse_drag_end(bw->visible_select_menu, mouse,
- x, y);
- return;
- }
-
- if (bw->scrollbar != NULL) {
- html_overflow_scroll_drag_end(bw->scrollbar, mouse, x, y);
- return;
- }
-
switch (bw->drag_type) {
- case DRAGGING_SELECTION: {
+ case DRAGGING_SELECTION:
+ {
hlcache_handle *h = bw->current_content;
if (h) {
int dir = -1;
@@ -1807,7 +1803,20 @@
}
selection_drag_end(bw->sel);
}
- break;
+ break;
+
+ case DRAGGING_OTHER:
+
+ if (bw->visible_select_menu != NULL) {
+ form_select_mouse_drag_end(bw->visible_select_menu,
+ mouse, x, y);
+ }
+
+ if (bw->scrollbar != NULL) {
+ html_overflow_scroll_drag_end(bw->scrollbar,
+ mouse, x, y);
+ }
+ break;
default:
break;
Modified: trunk/netsurf/desktop/browser.h
URL:
http://source.netsurf-browser.org/trunk/netsurf/desktop/browser.h?rev=125...
==============================================================================
--- trunk/netsurf/desktop/browser.h (original)
+++ trunk/netsurf/desktop/browser.h Mon Jun 27 12:29:49 2011
@@ -55,6 +55,15 @@
void *p);
+typedef enum {
+ DRAGGING_NONE,
+ DRAGGING_SELECTION,
+ DRAGGING_PAGE_SCROLL,
+ DRAGGING_FRAME,
+ DRAGGING_OTHER
+} browser_drag_type;
+
+
/** Browser window data. */
struct browser_window {
@@ -91,12 +100,7 @@
char *frag_id;
/** Current drag status. */
- enum {
- DRAGGING_NONE,
- DRAGGING_SELECTION,
- DRAGGING_PAGE_SCROLL,
- DRAGGING_FRAME
- } drag_type;
+ browser_drag_type drag_type;
/** Mouse position at start of current scroll drag. */
int drag_start_x;
@@ -323,11 +327,21 @@
* Set the position of the current browser window with respect to the parent
* browser window
*
- * \param bw browser window to get the position of
+ * \param bw browser window to set the position of
* \param x x position of bw
* \param y y position of bw
*/
void browser_window_set_position(struct browser_window *bw, int x, int y);
+
+/*
+ * Set the position of the current browser window with respect to the parent
+ * browser window
+ *
+ * \param bw browser window to set the type of the current drag for
+ * \param type drag type
+ */
+void browser_window_set_drag_type(struct browser_window *bw,
+ browser_drag_type type);
/* In platform specific hotlist.c. */
Modified: trunk/netsurf/render/form.c
URL:
http://source.netsurf-browser.org/trunk/netsurf/render/form.c?rev=12514&a...
==============================================================================
--- trunk/netsurf/render/form.c (original)
+++ trunk/netsurf/render/form.c Mon Jun 27 12:29:49 2011
@@ -1295,6 +1295,8 @@
menu->height);
break;
case SCROLLBAR_MSG_SCROLL_START:
+ browser_window_set_drag_type(menu->bw, DRAGGING_OTHER);
+
menu->scroll_capture = true;
gui_window_box_scroll_start(menu->bw->window,
scrollbar_data->x0, scrollbar_data->y0,
Modified: trunk/netsurf/render/html_interaction.c
URL:
http://source.netsurf-browser.org/trunk/netsurf/render/html_interaction.c...
==============================================================================
--- trunk/netsurf/render/html_interaction.c (original)
+++ trunk/netsurf/render/html_interaction.c Mon Jun 27 12:29:49 2011
@@ -789,6 +789,8 @@
html_redraw_a_box(bw->current_content, box);
break;
case SCROLLBAR_MSG_SCROLL_START:
+ browser_window_set_drag_type(bw, DRAGGING_OTHER);
+
bw->scrollbar = scrollbar_data->scrollbar;
gui_window_box_scroll_start(bw->window,
scrollbar_data->x0, scrollbar_data->y0,