summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2012-10-26 11:46:46 +0200
committerEli Zaretskii <eliz@gnu.org>2012-10-26 11:46:46 +0200
commitccc83f50a4ca55842bcf955b9f8156c17aa43864 (patch)
tree4e16a4c27d791f7f8f9eebb7abad554b56f95ab9
parent8c7727c3354291d0798b2eb031f42a32c618c391 (diff)
downloademacs-ccc83f50a4ca55842bcf955b9f8156c17aa43864.tar.gz
Avoid hourglass mouse pointer when a tooltip for menu item is shown.
src/w32fns.c (w32_wnd_proc) <WM_MOUSEMOVE>: Don't enable tracking of mouse movement events if the menu bar is active. This avoids producing a busy "hour-glass" cursor by Windows if the mouse pointer is positioned over a tooltip shown for some menu item.
-rw-r--r--src/ChangeLog7
-rw-r--r--src/w32fns.c14
2 files changed, 20 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 835c550b426..bf519556334 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2012-10-26 Eli Zaretskii <eliz@gnu.org>
+
+ * w32fns.c (w32_wnd_proc) <WM_MOUSEMOVE>: Don't enable tracking of
+ mouse movement events if the menu bar is active. This avoids
+ producing a busy "hour-glass" cursor by Windows if the mouse
+ pointer is positioned over a tooltip shown for some menu item.
+
2012-10-25 Paul Eggert <eggert@cs.ucla.edu>
Don't assume process IDs fit in int.
diff --git a/src/w32fns.c b/src/w32fns.c
index 28e8ea02e05..aa120d59ce5 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -3331,7 +3331,19 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
versions, there is no way of telling when the mouse leaves the
frame, so we just have to put up with help-echo and mouse
highlighting remaining while the frame is not active. */
- if (track_mouse_event_fn && !track_mouse_window)
+ if (track_mouse_event_fn && !track_mouse_window
+ /* If the menu bar is active, turning on tracking of mouse
+ movement events might send these events to the tooltip
+ frame, if the user happens to move the mouse pointer over
+ the tooltip. But since we don't process events for
+ tooltip frames, this causes Windows to present a
+ hourglass cursor, which is ugly and unexpected. So don't
+ enable tracking mouse events in this case; they will be
+ restarted when the menu pops down. (Confusingly, the
+ menubar_active member of f->output_data.w32, tested
+ above, is only set when a menu was popped up _not_ from
+ the frame's menu bar, but via x-popup-menu.) */
+ && !menubar_in_use)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof (tme);