summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-04-12 08:41:19 +0800
committerPo Lu <luangruo@yahoo.com>2022-04-12 08:41:19 +0800
commit60f66cc2a29cfdfa1f5547bda874274b92a067e2 (patch)
tree9aa23ab001a5dce6e3ba86da2af0cb74250eaca4
parent6a480c830bc8d313ca3052570487a65411c937c2 (diff)
downloademacs-60f66cc2a29cfdfa1f5547bda874274b92a067e2.tar.gz
Fix selecting text and releasing the mouse buttons above the toolbar
* src/xterm.c (handle_one_xevent): Don't send ButtonRelease events to tool bars if there is no selected tool bar item.
-rw-r--r--src/xterm.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 801a9641051..342f2b044f9 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -15812,7 +15812,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
int y = event->xbutton.y;
window = window_from_coordinates (f, x, y, 0, true, true);
- tool_bar_p = EQ (window, f->tool_bar_window);
+ tool_bar_p = (EQ (window, f->tool_bar_window)
+ && (event->xbutton.type != ButtonRelease
+ || f->last_tool_bar_item != -1));
if (tool_bar_p && event->xbutton.button < 4)
handle_tool_bar_click
@@ -17200,7 +17202,16 @@ handle_one_xevent (struct x_display_info *dpyinfo,
int y = bv.y;
window = window_from_coordinates (f, x, y, 0, true, true);
- tool_bar_p = EQ (window, f->tool_bar_window);
+ /* Ignore button release events if the mouse
+ wasn't previously pressed on the tool bar.
+ We do this because otherwise selecting some
+ text with the mouse and then releasing it on
+ the tool bar doesn't stop selecting text,
+ since the tool bar eats the button up
+ event. */
+ tool_bar_p = (EQ (window, f->tool_bar_window)
+ && (xev->evtype != XI_ButtonRelease
+ || f->last_tool_bar_item != -1));
if (tool_bar_p && xev->detail < 4)
handle_tool_bar_click_with_device