emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-24 1817892: Avoid erratic behavior of menu-bar toolt


From: Eli Zaretskii
Subject: [Emacs-diffs] emacs-24 1817892: Avoid erratic behavior of menu-bar tooltips on w32 (Bug#19925)
Date: Mon, 23 Feb 2015 17:48:15 +0000

branch: emacs-24
commit 18178922a8074627fe4e4e2fd0c9d21839f172c4
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    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 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 22e952a..14a12b5 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-23  Eli Zaretskii  <address@hidden>
+
+       * 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  <address@hidden>
 
        * comint.el (comint-line-beginning-position): Revert searching for
diff --git a/lisp/frame.el b/lisp/frame.el
index 1a584fa..e1dfa48 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 8bffdad..a2ac538 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-23  Eli Zaretskii  <address@hidden>
+
+       * w32fns.c (Fw32__menu_bar_in_use): New internal function.
+       (Bug#19925)
+
 2015-02-20  Glenn Morris  <address@hidden>
 
        * fileio.c (Fmake_temp_name): Doc tweaks.  (Bug#19858)
diff --git a/src/w32fns.c b/src/w32fns.c
index 5af36b9..ed11031 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);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]