From: Eli Zaretskii Date: Fri, 26 Oct 2012 09:46:46 +0000 (+0200) Subject: Avoid hourglass mouse pointer when a tooltip for menu item is shown. X-Git-Tag: emacs-24.2.90~209^2~66 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ccc83f50a4ca55842bcf955b9f8156c17aa43864;p=emacs.git Avoid hourglass mouse pointer when a tooltip for menu item is shown. src/w32fns.c (w32_wnd_proc) : 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. --- 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 + + * w32fns.c (w32_wnd_proc) : 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 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);