]> code.delx.au - gnu-emacs/commitdiff
Await the final mouse event in C-h c and C-h k.
authorAlan Mackenzie <acm@muc.de>
Fri, 19 Feb 2016 17:10:57 +0000 (17:10 +0000)
committerAlan Mackenzie <acm@muc.de>
Fri, 19 Feb 2016 17:10:57 +0000 (17:10 +0000)
* lisp/help.el (describe-key-briefly, describe-key): On receiving a mouse
event, keep reading further events until a timeout occurs, to ensure we have
the complete mouse event from the user.

lisp/help.el

index 061daacfdd383ff10a243ccd6894cc121718e336..ce68cea6dd52bad3f3e907124001fd518ad886c9 100644 (file)
@@ -613,7 +613,15 @@ temporarily enables it to allow getting help on disabled items and buttons."
           (when (null (cdr yank-menu))
             (setq saved-yank-menu (copy-sequence yank-menu))
             (menu-bar-update-yank-menu "(any string)" nil))
-          (setq key (read-key-sequence "Describe key (or click or menu item): "))
+           (while
+               (progn
+                 (setq key (read-key-sequence "Describe key (or click or menu item): "))
+                 (and (vectorp key)
+                      (consp (aref key 0))
+                      (symbolp (car (aref key 0)))
+                      (string-match "\\(mouse\\|down\\|click\\|drag\\)"
+                                    (symbol-name (car (aref key 0))))
+                      (not (sit-for (/ double-click-time 1000.0) t)))))
           ;; Clear the echo area message (Bug#7014).
           (message nil)
           ;; If KEY is a down-event, read and discard the
@@ -750,7 +758,15 @@ temporarily enables it to allow getting help on disabled items and buttons."
           (when (null (cdr yank-menu))
             (setq saved-yank-menu (copy-sequence yank-menu))
             (menu-bar-update-yank-menu "(any string)" nil))
-          (setq key (read-key-sequence "Describe key (or click or menu item): "))
+           (while
+               (progn
+                 (setq key (read-key-sequence "Describe key (or click or menu item): "))
+                 (and (vectorp key)
+                      (consp (aref key 0))
+                      (symbolp (car (aref key 0)))
+                      (string-match "\\(mouse\\|down\\|click\\|drag\\)"
+                                    (symbol-name (car (aref key 0))))
+                      (not (sit-for (/ double-click-time 1000.0) t)))))
           (list
            key
            (prefix-numeric-value current-prefix-arg)