]> code.delx.au - gnu-emacs/commitdiff
Avoid erratic behavior of menu-bar tooltips on w32 (Bug#19925)
authorEli Zaretskii <eliz@gnu.org>
Mon, 23 Feb 2015 17:46:44 +0000 (19:46 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 23 Feb 2015 17:46:44 +0000 (19:46 +0200)
 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
lisp/frame.el
src/ChangeLog
src/w32fns.c

index 22e952a91e6bac9125cd88abcc44ed5ad8c2a9ad..14a12b53a35e8d1930a1cbee12ce848e9207b562 100644 (file)
@@ -1,3 +1,9 @@
+2015-02-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * 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  <juri@linkov.net>
 
        * comint.el (comint-line-beginning-position): Revert searching for
index 1a584fa0e2ca300e13b2e442531e924b0b113827..e1dfa483c97041a6edad476beb13f203768ebf0b 100644 (file)
@@ -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)
index 8bffdadf66c91b48ab7d82a2270fe592c495f73d..a2ac5389f2071e014077064d65e12499e5079f21 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (Fw32__menu_bar_in_use): New internal function.
+       (Bug#19925)
+
 2015-02-20  Glenn Morris  <rgm@gnu.org>
 
        * fileio.c (Fmake_temp_name): Doc tweaks.  (Bug#19858)
index 5af36b9a0c8ef695ee4efdc8dccb69e0391a8290..ed110317d170c1a45d28fe98e7eeb2876d2d0ea0 100644 (file)
@@ -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;
+}
+
 \f
 /***********************************************************************
                            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);