From 18178922a8074627fe4e4e2fd0c9d21839f172c4 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 23 Feb 2015 19:46:44 +0200 Subject: [PATCH] Avoid erratic behavior of menu-bar tooltips on w32 (Bug#19925) src/w32fns.c (Fw32__menu_bar_in_use): New internal function. lisp/frame.el (blink-cursor-timer-function): Don't increment blink-cursor-blinks-done counter when a menu is active on a w32 frame. --- lisp/ChangeLog | 6 ++++++ lisp/frame.el | 6 +++++- src/ChangeLog | 5 +++++ src/w32fns.c | 10 ++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 22e952a91e..14a12b53a3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2015-02-23 Eli Zaretskii + + * frame.el (blink-cursor-timer-function): Don't increment + blink-cursor-blinks-done counter when a menu is active on a w32 + frame. (Bug#19925) + 2015-02-19 Juri Linkov * comint.el (comint-line-beginning-position): Revert searching for diff --git a/lisp/frame.el b/lisp/frame.el index 1a584fa0e2..e1dfa483c9 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -1798,8 +1798,12 @@ command starts, by installing a pre-command hook." (defun blink-cursor-timer-function () "Timer function of timer `blink-cursor-timer'." (internal-show-cursor nil (not (internal-show-cursor-p))) + ;; Suspend counting blinks when the w32 menu-bar menu is displayed, + ;; since otherwise menu tooltips will behave erratically. + (or (and (fboundp 'w32--menu-bar-in-use) + (w32--menu-bar-in-use)) + (setq blink-cursor-blinks-done (1+ blink-cursor-blinks-done))) ;; Each blink is two calls to this function. - (setq blink-cursor-blinks-done (1+ blink-cursor-blinks-done)) (when (and (> blink-cursor-blinks 0) (<= (* 2 blink-cursor-blinks) blink-cursor-blinks-done)) (blink-cursor-suspend) diff --git a/src/ChangeLog b/src/ChangeLog index 8bffdadf66..a2ac5389f2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2015-02-23 Eli Zaretskii + + * w32fns.c (Fw32__menu_bar_in_use): New internal function. + (Bug#19925) + 2015-02-20 Glenn Morris * fileio.c (Fmake_temp_name): Doc tweaks. (Bug#19858) diff --git a/src/w32fns.c b/src/w32fns.c index 5af36b9a0c..ed110317d1 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -8063,6 +8063,15 @@ w32_sys_ring_bell (struct frame *f) MessageBeep (sound_type); } +DEFUN ("w32--menu-bar-in-use", Fw32__menu_bar_in_use, Sw32__menu_bar_in_use, + 0, 0, 0, + doc: /* Return non-nil when a menu-bar menu is being used. +Internal use only. */) + (void) +{ + return menubar_in_use ? Qt : Qnil; +} + /*********************************************************************** Initialization @@ -8439,6 +8448,7 @@ only be necessary if the default setting causes problems. */); defsubr (&Sw32_window_exists_p); defsubr (&Sw32_frame_rect); defsubr (&Sw32_battery_status); + defsubr (&Sw32__menu_bar_in_use); #ifdef WINDOWSNT defsubr (&Sfile_system_info); -- 2.39.2