From d17b710fa945276b186a67abf05844095583738e Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 9 Sep 2017 14:31:22 +0100 Subject: GTK: Corewindow: Fix modifier keys on mouse click. Modifiers were getting unset for the click (release) events. --- frontends/gtk/corewindow.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/frontends/gtk/corewindow.c b/frontends/gtk/corewindow.c index 53ee17333..6ca5d228f 100644 --- a/frontends/gtk/corewindow.c +++ b/frontends/gtk/corewindow.c @@ -145,6 +145,7 @@ nsgtk_cw_button_release_event(GtkWidget *widget, { struct nsgtk_corewindow *nsgtk_cw = (struct nsgtk_corewindow *)g; struct nsgtk_corewindow_mouse *mouse = &nsgtk_cw->mouse_state; + bool was_drag = false; /* only button 1 clicks are considered double clicks. If the * mouse state is PRESS then we are waiting for a release to @@ -168,9 +169,11 @@ nsgtk_cw_button_release_event(GtkWidget *widget, } else if (mouse->state & BROWSER_MOUSE_HOLDING_1) { mouse->state ^= (BROWSER_MOUSE_HOLDING_1 | BROWSER_MOUSE_DRAG_ON); + was_drag = true; } else if (mouse->state & BROWSER_MOUSE_HOLDING_2) { mouse->state ^= (BROWSER_MOUSE_HOLDING_2 | BROWSER_MOUSE_DRAG_ON); + was_drag = true; } /* Handle modifiers being removed */ @@ -188,9 +191,10 @@ nsgtk_cw_button_release_event(GtkWidget *widget, } /* end drag with modifiers */ - if (mouse->state & (BROWSER_MOUSE_MOD_1 | - BROWSER_MOUSE_MOD_2 | - BROWSER_MOUSE_MOD_3)) { + if (was_drag && (mouse->state & ( + BROWSER_MOUSE_MOD_1 | + BROWSER_MOUSE_MOD_2 | + BROWSER_MOUSE_MOD_3))) { mouse->state = BROWSER_MOUSE_HOVER; } -- cgit v1.2.3