unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Noam Postavsky <npostavs@users.sourceforge.net>
To: martin rudalics <rudalics@gmx.at>
Cc: acm@muc.de, 29272@debbugs.gnu.org
Subject: bug#29272: 26.0.90; "C-h k C-mouse-3" followed by menu selection asks for more keys
Date: Wed, 29 Nov 2017 08:19:34 -0500	[thread overview]
Message-ID: <87wp29jk7t.fsf@users.sourceforge.net> (raw)
In-Reply-To: <5A1E724A.5030507@gmx.at> (martin rudalics's message of "Wed, 29 Nov 2017 09:39:38 +0100")


From what I can tell, we should only need to wait for a double click
when we get a single mouse event; when clicking in a menu,
read-key-sequence returns [(C-down-mouse-3 (#<window ...> ...)) the-command].  The following
works for me in lucid and gtk:

--- c/lisp/help.el
+++ i/lisp/help.el
@@ -726,19 +726,19 @@ help-read-key-sequence
           (while
               (pcase (setq key (read-key-sequence "\
 Describe the following key, mouse click, or menu item: "))
-                ((and (pred vectorp) (let `(,key0 . ,_) (aref key 0))
-                      (guard (symbolp key0)) (let keyname (symbol-name key0)))
-                 (or
-                  (and no-mouse-movement
-                       (string-match "mouse-movement" keyname))
-                  (and (string-match "\\(mouse\\|down\\|click\\|drag\\)"
-                                     keyname)
-                       (progn
-                         ;; Discard events (e.g. <help-echo>) which might
-                         ;; spuriously trigger the `sit-for'.
-                         (sleep-for 0.01)
-                         (while (read-event nil nil 0.01))
-                         (not (sit-for (/ double-click-time 1000.0) t))))))))
+                (`[(,key0 . ,_)]
+                 (or (and no-mouse-movement (eq key0 'mouse-movement))
+                     ;; Wait long enough to fully read a double click event.
+                     ;; FIXME: How to handle double-click-time = t?
+                     (and (numberp double-click-time)
+                          (string-match "\\(mouse\\|down\\|click\\|drag\\)"
+                                        (symbol-name key0))
+                          (progn
+                            ;; Discard events (e.g. <help-echo>) which might
+                            ;; spuriously trigger the `sit-for'.
+                            (sleep-for 0.01)
+                            (while (read-event nil nil 0.01))
+                            (not (sit-for (/ double-click-time 1000.0) t))))))))
           (list
            key
            ;; If KEY is a down-event, read and include the


martin rudalics <rudalics@gmx.at> writes:

> BTW: Could someone please fix that
>
> (not (sit-for (/ double-click-time 1000.0) t))
>
> form so it handles at least those values of `double-click-time'
> described in its documentation:
>
>   Maximum time between mouse clicks to make a double-click.
>   Measured in milliseconds.  The value nil means disable double-click
>   recognition; t means double-clicks have no time limit and are detected
>   by position only.
>
> I'm not sure what `sit-for' is supposed to return in those cases.

I don't know how to handle the double-click-time = t case though.





  reply	other threads:[~2017-11-29 13:19 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-12 11:23 bug#29272: 26.0.90; "C-h k C-mouse-3" followed by menu selection asks for more keys Eli Zaretskii
2017-11-12 12:38 ` Eli Zaretskii
2017-11-12 13:24   ` Alan Mackenzie
2017-11-14 20:54   ` Alan Mackenzie
2017-11-18 11:27     ` Eli Zaretskii
2017-11-18 15:15       ` Alan Mackenzie
2017-11-19 16:19       ` Alan Mackenzie
2017-11-19 17:04         ` Eli Zaretskii
2017-11-19 17:44           ` Eli Zaretskii
2017-11-19 17:54           ` Alan Mackenzie
2017-11-19 18:17         ` Eli Zaretskii
2017-11-19 20:26           ` Alan Mackenzie
2017-11-29  0:50     ` Noam Postavsky
2017-11-29  3:38       ` Eli Zaretskii
2017-11-29  8:39         ` martin rudalics
2017-11-29 13:19           ` Noam Postavsky [this message]
2017-11-29 17:53             ` Eli Zaretskii
2017-11-30  7:22             ` martin rudalics
2017-11-29 17:55           ` Eli Zaretskii
2017-11-29 18:37           ` Alan Mackenzie
2017-11-29 18:56             ` Eli Zaretskii
2017-12-01 16:57               ` Alan Mackenzie
2017-12-01 19:18                 ` Drew Adams
2017-12-01 19:43                   ` Eli Zaretskii
2017-11-30  7:22             ` martin rudalics
     [not found] <<83shdjn3ju.fsf@gnu.org>
     [not found] ` <<83mv3rn02t.fsf@gnu.org>
     [not found]   ` <<20171114205449.GA8025@ACM>
     [not found]     ` <<87fu8xnc17.fsf@users.sourceforge.net>
     [not found]       ` <<83h8td4uw5.fsf@gnu.org>
     [not found]         ` <<5A1E724A.5030507@gmx.at>
     [not found]           ` <<20171129183717.GA8914@ACM>
     [not found]             ` <<83609s52xt.fsf@gnu.org>
     [not found]               ` <<20171201165740.GE3840@ACM>
     [not found]                 ` <<1c4abffb-e975-41b1-a368-29518bc3b360@default>
     [not found]                   ` <<83y3mm1bfu.fsf@gnu.org>
2017-12-01 21:12                     ` Drew Adams
2017-12-02  8:13                       ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wp29jk7t.fsf@users.sourceforge.net \
    --to=npostavs@users.sourceforge.net \
    --cc=29272@debbugs.gnu.org \
    --cc=acm@muc.de \
    --cc=rudalics@gmx.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).