summaryrefslogtreecommitdiff
path: root/gtk/treeview.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-08-28 15:20:41 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-08-28 15:20:41 +0100
commitcb92b7d341c8529d50cd255ea674bbf543a781ea (patch)
tree1bae07dfe409ac7da0e80c73cf0e5cc435dea30a /gtk/treeview.c
parentbd39d108db34ccc78199c088c430870d4038b71f (diff)
downloadnetsurf-cb92b7d341c8529d50cd255ea674bbf543a781ea.tar.gz
netsurf-cb92b7d341c8529d50cd255ea674bbf543a781ea.tar.bz2
Cleanup mouse handling a bit.
Diffstat (limited to 'gtk/treeview.c')
-rw-r--r--gtk/treeview.c46
1 files changed, 27 insertions, 19 deletions
diff --git a/gtk/treeview.c b/gtk/treeview.c
index 1a987989c..d836eb6b1 100644
--- a/gtk/treeview.c
+++ b/gtk/treeview.c
@@ -296,12 +296,19 @@ gboolean nsgtk_tree_window_button_release_event(GtkWidget *widget,
BROWSER_MOUSE_CLICK_2 |
BROWSER_MOUSE_DOUBLE_CLICK);
- } else if (tw->mouse_state & BROWSER_MOUSE_PRESS_1)
- tw->mouse_state ^=
- (BROWSER_MOUSE_PRESS_1 | BROWSER_MOUSE_CLICK_1);
- else if (tw->mouse_state & BROWSER_MOUSE_PRESS_2)
+ } else if (tw->mouse_state & BROWSER_MOUSE_PRESS_1) {
+ tw->mouse_state ^= (BROWSER_MOUSE_PRESS_1 |
+ BROWSER_MOUSE_CLICK_1);
+ } else if (tw->mouse_state & BROWSER_MOUSE_PRESS_2) {
tw->mouse_state ^= (BROWSER_MOUSE_PRESS_2 |
- BROWSER_MOUSE_CLICK_2);
+ BROWSER_MOUSE_CLICK_2);
+ } else if (tw->mouse_state & BROWSER_MOUSE_HOLDING_1) {
+ tw->mouse_state ^= (BROWSER_MOUSE_HOLDING_1 |
+ BROWSER_MOUSE_DRAG_ON);
+ } else if (tw->mouse_state & BROWSER_MOUSE_HOLDING_2) {
+ tw->mouse_state ^= (BROWSER_MOUSE_HOLDING_2 |
+ BROWSER_MOUSE_DRAG_ON);
+ }
/* Handle modifiers being removed */
if (tw->mouse_state & BROWSER_MOUSE_MOD_1 && !shift)
@@ -311,19 +318,20 @@ gboolean nsgtk_tree_window_button_release_event(GtkWidget *widget,
if (tw->mouse_state & BROWSER_MOUSE_MOD_3 && !alt)
tw->mouse_state ^= BROWSER_MOUSE_MOD_3;
-
+
if (tw->mouse_state &
- (BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_CLICK_2
- | BROWSER_MOUSE_DOUBLE_CLICK))
+ ~(BROWSER_MOUSE_MOD_1 |
+ BROWSER_MOUSE_MOD_2 |
+ BROWSER_MOUSE_MOD_3)) {
tree_mouse_action(tree, tw->mouse_state,
event->x, event->y);
- else
+ } else {
tree_drag_end(tree, tw->mouse_state,
tw->mouse_pressed_x,
tw->mouse_pressed_y,
event->x, event->y);
-
-
+ }
+
tw->mouse_state = 0;
tw->mouse_pressed = false;
@@ -353,14 +361,6 @@ gboolean nsgtk_tree_window_motion_notify_event(GtkWidget *widget,
tw->last_x = INT_MIN;
tw->last_y = INT_MIN;
}
-
- /* Handle modifiers being removed */
- if (tw->mouse_state & BROWSER_MOUSE_MOD_1 && !shift)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_1;
- if (tw->mouse_state & BROWSER_MOUSE_MOD_2 && !ctrl)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_2;
- if (tw->mouse_state & BROWSER_MOUSE_MOD_3 && !alt)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_3;
if (tw->mouse_state & BROWSER_MOUSE_PRESS_1) {
/* Start button 1 drag */
@@ -382,6 +382,14 @@ gboolean nsgtk_tree_window_motion_notify_event(GtkWidget *widget,
tw->mouse_state |= BROWSER_MOUSE_DRAG_ON;
return TRUE;
}
+
+ /* Handle modifiers being removed */
+ if (tw->mouse_state & BROWSER_MOUSE_MOD_1 && !shift)
+ tw->mouse_state ^= BROWSER_MOUSE_MOD_1;
+ if (tw->mouse_state & BROWSER_MOUSE_MOD_2 && !ctrl)
+ tw->mouse_state ^= BROWSER_MOUSE_MOD_2;
+ if (tw->mouse_state & BROWSER_MOUSE_MOD_3 && !alt)
+ tw->mouse_state ^= BROWSER_MOUSE_MOD_3;
if (tw->mouse_state & (BROWSER_MOUSE_HOLDING_1 |
BROWSER_MOUSE_HOLDING_2))