all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#18212: 24.3.92; Left-click on a button is treated as mouse-2
@ 2014-08-06 20:35 Matthew Woodcraft
  2014-08-06 23:59 ` Glenn Morris
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Matthew Woodcraft @ 2014-08-06 20:35 UTC (permalink / raw
  To: 18212


If click with my left mouse button (normally mouse-1) on "button" text,
Emacs appears to think I clicked mouse-2 (normally the middle button).


Recipe to reproduce:

emacs -Q --exec "(global-set-key (kbd \"<down-mouse-2>\") 'clipboard-yank)" --exec "(info)"

Left-click on one of the hyperlinks.

Emacs says
  Buffer is read-only: #<buffer *info*>
rather than following the hyperlink.


Using describe-key with a left click suggests that Emacs thinks that,
when over a 'button', the left click is mouse-2:
«
<down-mouse-2> at that spot runs the command clipboard-yank, which is
an interactive compiled Lisp function in `menu-bar.el'.
»
If I click somewhere that isn't a 'button', Emacs thinks it's mouse-1.


The problem didn't happen with the released Emacs 24.3.

This Emacs was built from the emacs-24 branch as of 2014-08-03.

In GNU Emacs 24.3.92.1 (i486-pc-linux-gnu, GTK+ Version 3.4.2)
 of 2014-08-03 on golux, modified by Debian
 (emacs-snapshot package, version 2:20140803-mjw1)
Windowing system distributor `The X.Org Foundation', version 11.0.11204000
System Description:	Debian GNU/Linux 7.6 (wheezy)

Configured using:
 `configure --build i486-linux-gnu --host i486-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib --localstatedir=/var
 --infodir=/usr/share/info/emacs-snapshot --mandir=/usr/share/man
 --with-pop=yes
 --enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.3.92/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3.92/site-lisp:/usr/share/emacs/site-lisp
 --enable-silent-rules --enable-link-time-optimization
 --with-crt-dir=/usr/lib/i386-linux-gnu/ --with-x=yes
 --with-x-toolkit=gtk3 --with-toolkit-scroll-bars --with-imagemagick=yes
 'CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat
 -Werror=format-security' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-z,relro'

Important settings:
  value of $LC_CTYPE: en_GB.UTF-8
  locale-coding-system: utf-8-unix






^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#18212: 24.3.92; Left-click on a button is treated as mouse-2
  2014-08-06 20:35 bug#18212: 24.3.92; Left-click on a button is treated as mouse-2 Matthew Woodcraft
@ 2014-08-06 23:59 ` Glenn Morris
  2014-08-07 13:08 ` Stefan Monnier
  2014-08-07 18:36 ` Stefan Monnier
  2 siblings, 0 replies; 7+ messages in thread
From: Glenn Morris @ 2014-08-06 23:59 UTC (permalink / raw
  To: Matthew Woodcraft; +Cc: 18212

Matthew Woodcraft wrote:

> If click with my left mouse button (normally mouse-1) on "button" text,
> Emacs appears to think I clicked mouse-2 (normally the middle button).

I think you are just describing mouse-1-click-follows-link?





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#18212: 24.3.92; Left-click on a button is treated as mouse-2
  2014-08-06 20:35 bug#18212: 24.3.92; Left-click on a button is treated as mouse-2 Matthew Woodcraft
  2014-08-06 23:59 ` Glenn Morris
@ 2014-08-07 13:08 ` Stefan Monnier
  2014-08-07 18:36 ` Stefan Monnier
  2 siblings, 0 replies; 7+ messages in thread
From: Stefan Monnier @ 2014-08-07 13:08 UTC (permalink / raw
  To: Matthew Woodcraft; +Cc: 18212

> If click with my left mouse button (normally mouse-1) on "button" text,
> Emacs appears to think I clicked mouse-2 (normally the middle button).

This is normal: it's because of mouse-1-click-follows-link and because
the button has the `follow-link' property.

> Recipe to reproduce:

> emacs -Q --exec "(global-set-key (kbd \"<down-mouse-2>\") 'clipboard-yank)" --exec "(info)"

> Left-click on one of the hyperlinks.

> Emacs says
>   Buffer is read-only: #<buffer *info*>
> rather than following the hyperlink.

But that is indeed a bug.  I guess the button should locally bind
`down-mouse-2' to override the global binding.

But, in any case I recommend you bind clipboard-yank to `mouse-2' rather
than to `down-mouse-2' since you otherwise get a "double yank" behavior
(a mouse-2 click will first run clipboard-yank because of the
down-mouse-2 binding and then will run mouse-yank-primary because it's
bound to mouse-2).


        Stefan





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#18212: 24.3.92; Left-click on a button is treated as mouse-2
  2014-08-06 20:35 bug#18212: 24.3.92; Left-click on a button is treated as mouse-2 Matthew Woodcraft
  2014-08-06 23:59 ` Glenn Morris
  2014-08-07 13:08 ` Stefan Monnier
@ 2014-08-07 18:36 ` Stefan Monnier
  2014-08-07 21:02   ` Matthew Woodcraft
  2 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2014-08-07 18:36 UTC (permalink / raw
  To: Matthew Woodcraft; +Cc: 18212-done

> emacs -Q --exec "(global-set-key (kbd \"<down-mouse-2>\") 'clipboard-yank)" --exec "(info)"
> Left-click on one of the hyperlinks.
> Emacs says
>   Buffer is read-only: #<buffer *info*>
> rather than following the hyperlink.

BTW, if you middle-click instead of left-click, you also get this error,
but you still follow the hyperlink (so you usually only see the error
if you go look for it in *Messages*).

The fundamental reason for the difference is that
mouse-1-click-follows-link defaults to 450, which means that we can't
decide whether the down-mouse-1 should be turned into a down-mouse-2 or
not until either we see the subsequent mouse-1 or 450ms have passed.
In this case, the 450ms typically don't pass, but we had to wait for the
mouse-1 to arrive.  At that point we turn those two events into
down-mouse-2 and mouse-2.  So it looks just the same as what happens for
a middle-click.  The crucial difference is that when the command bound
to down-mouse-2 is run, we have already received the mouse-1 (aka
mouse-2), and since errors have the side effect of emptying the "not yet
processed input", the error on down-mouse-2 ends up canceling the
subsequent mouse-1/2.

I installed the workaround below,


        Stefan


--- lisp/info.el	2014-03-14 20:51:22 +0000
+++ lisp/info.el	2014-08-07 18:28:18 +0000
@@ -3994,6 +3994,7 @@
     (define-key map "," 'Info-index-next)
     (define-key map "\177" 'Info-scroll-down)
     (define-key map [mouse-2] 'Info-mouse-follow-nearest-node)
+    (define-key map [down-mouse-2] 'ignore) ;Override potential global binding.
     (define-key map [follow-link] 'mouse-face)
     (define-key map [XF86Back] 'Info-history-back)
     (define-key map [XF86Forward] 'Info-history-forward)






^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#18212: 24.3.92; Left-click on a button is treated as mouse-2
  2014-08-07 18:36 ` Stefan Monnier
@ 2014-08-07 21:02   ` Matthew Woodcraft
  2014-08-08  2:28     ` Stefan Monnier
  0 siblings, 1 reply; 7+ messages in thread
From: Matthew Woodcraft @ 2014-08-07 21:02 UTC (permalink / raw
  To: Stefan Monnier; +Cc: 18212

Stefan Monnier wrote:
> The fundamental reason for the difference is that
> mouse-1-click-follows-link defaults to 450, which means that we can't
> decide whether the down-mouse-1 should be turned into a down-mouse-2 or
> not until either we see the subsequent mouse-1 or 450ms have passed.
> In this case, the 450ms typically don't pass, but we had to wait for the
> mouse-1 to arrive.  At that point we turn those two events into
> down-mouse-2 and mouse-2.  So it looks just the same as what happens for
> a middle-click.  The crucial difference is that when the command bound
> to down-mouse-2 is run, we have already received the mouse-1 (aka
> mouse-2), and since errors have the side effect of emptying the "not yet
> processed input", the error on down-mouse-2 ends up canceling the
> subsequent mouse-1/2.

I see.


> I installed the workaround below,

> --- lisp/info.el	2014-03-14 20:51:22 +0000
> +++ lisp/info.el	2014-08-07 18:28:18 +0000
> @@ -3994,6 +3994,7 @@
>      (define-key map "," 'Info-index-next)
>      (define-key map "\177" 'Info-scroll-down)
>      (define-key map [mouse-2] 'Info-mouse-follow-nearest-node)
> +    (define-key map [down-mouse-2] 'ignore) ;Override potential global binding.
>      (define-key map [follow-link] 'mouse-face)
>      (define-key map [XF86Back] 'Info-history-back)
>      (define-key map [XF86Forward] 'Info-history-forward)

Is that the right place for the workaround? The problem happens for any
link, not just those in info mode.

Maybe there's some way to behave more like 24.3, where (as far as I can
make out from describe-key output) left-click on a link gives
down-mouse-1 followed by mouse-2?


(This issue isn't causing me any problems; I'm just testing the pretest.
I had imenu bound to down-mouse-2 because it's slightly more responsive
than mouse-2, and left-clicking to follow links stopped working
altogether until I found out what was responsible. So I suppose it might
cause trouble for other people when they upgrade.)

-M-





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#18212: 24.3.92; Left-click on a button is treated as mouse-2
  2014-08-07 21:02   ` Matthew Woodcraft
@ 2014-08-08  2:28     ` Stefan Monnier
  2014-08-08 18:38       ` Stefan Monnier
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2014-08-08  2:28 UTC (permalink / raw
  To: Matthew Woodcraft; +Cc: 18212

> Is that the right place for the workaround? The problem happens for any
> link, not just those in info mode.

Good question.

> Maybe there's some way to behave more like 24.3, where (as far as I can
> make out from describe-key output) left-click on a link gives
> down-mouse-1 followed by mouse-2?

24.3 indeed does not go through down-mouse-2 (because the implementation is
based on a "normal" binding of down-mouse-1 rather than a key-remapping
of down-mouse-1).
So maybe you're right here.  Hmm...

> (This issue isn't causing me any problems; I'm just testing the pretest.
> I had imenu bound to down-mouse-2 because it's slightly more responsive
> than mouse-2, and left-clicking to follow links stopped working
> altogether until I found out what was responsible. So I suppose it might
> cause trouble for other people when they upgrade.)

Indeed things like imenu are better bound to down-mouse-2 than to mouse-2.

I'll sleep on it and try to remember to come back to it tomorrow,


        Stefan





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#18212: 24.3.92; Left-click on a button is treated as mouse-2
  2014-08-08  2:28     ` Stefan Monnier
@ 2014-08-08 18:38       ` Stefan Monnier
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Monnier @ 2014-08-08 18:38 UTC (permalink / raw
  To: Matthew Woodcraft; +Cc: 18212-done

> 24.3 indeed does not go through down-mouse-2 (because the implementation is
> based on a "normal" binding of down-mouse-1 rather than a key-remapping
> of down-mouse-1).
> So maybe you're right here.  Hmm...
[...]
> I'll sleep on it and try to remember to come back to it tomorrow,

I installed that change in emacs-24.


        Stefan





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-08-08 18:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-06 20:35 bug#18212: 24.3.92; Left-click on a button is treated as mouse-2 Matthew Woodcraft
2014-08-06 23:59 ` Glenn Morris
2014-08-07 13:08 ` Stefan Monnier
2014-08-07 18:36 ` Stefan Monnier
2014-08-07 21:02   ` Matthew Woodcraft
2014-08-08  2:28     ` Stefan Monnier
2014-08-08 18:38       ` Stefan Monnier

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.