* Difficulty with mouse-1-click-follows-link
@ 2005-10-09 17:57 Chong Yidong
2005-10-09 18:51 ` Romain Francoise
0 siblings, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2005-10-09 17:57 UTC (permalink / raw)
Cc: Kim F.Storm
I've figured out the trouble I have using mouse-1-click-follows-link.
It happens when I do the following (in rapid succession):
* down-mouse-1 on a link
* release the mouse button
* move the mouse cursor somewhere else
If I move the cursor away too soon, the follow-link behavior is
cancelled. That's counter-intuitive, because I already released the
mouse button. As a result, it *feels* as though
mouse-1-click-follows-link is unreliable.
The problematic code is in mouse.el:
(if (and on-link
...
(or remap-double-click
(and
(not (eq mouse-1-click-follows-link 'double))
(= click-count 0)
....
(or (not double-click-time)
(sit-for 0 (if (integerp double-click-time)
double-click-time 500) t)))))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(if (or (vectorp on-link) (stringp on-link))
(setq event (aref on-link 0))
(setcar event 'mouse-2)))
(push event unread-command-events))))
The sit-for call is intended to catch a second click, so that the
follow-link mechanism won't kick in when the user double-clicks.
However, it also catches mouse motion, which leads to the
unreliability described above.
The sit-for is also responsible for the small but irritating delay
between clicking on a link and the action taking place.
In practice, binding double-mouse-1 doesn't seem to work for links
anyway, so I suggest removing the sit-for. I've tried it out, and
follow-link seems to work much more smoothly.
Thoughts?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-09 17:57 Difficulty with mouse-1-click-follows-link Chong Yidong
@ 2005-10-09 18:51 ` Romain Francoise
2005-10-10 16:46 ` Chong Yidong
0 siblings, 1 reply; 13+ messages in thread
From: Romain Francoise @ 2005-10-09 18:51 UTC (permalink / raw)
Chong Yidong <cyd@stupidchicken.com> writes:
> Thoughts?
Try lowering the value of `double-click-time' in your setup. I have set
it to 150 and I'm pretty happy with that setting... but I very rarely
use double clicks in Emacs.
--
Romain Francoise <romain@orebokech.com> | I like the streets when
it's a miracle -- http://orebokech.com/ | they're empty, I can make the
| rest up.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-09 18:51 ` Romain Francoise
@ 2005-10-10 16:46 ` Chong Yidong
2005-10-11 17:16 ` Romain Francoise
0 siblings, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2005-10-10 16:46 UTC (permalink / raw)
Cc: emacs-devel
>> Thoughts?
>
> Try lowering the value of `double-click-time' in your setup. I have set
> it to 150 and I'm pretty happy with that setting... but I very rarely
> use double clicks in Emacs.
I'm more interested in fixing the default behavior. Removing the
sit-for in mouse-drag-region-1 won't have any effect on double-clicks
elsewhere in Emacs.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-10 16:46 ` Chong Yidong
@ 2005-10-11 17:16 ` Romain Francoise
2005-10-11 21:04 ` Kim F. Storm
0 siblings, 1 reply; 13+ messages in thread
From: Romain Francoise @ 2005-10-11 17:16 UTC (permalink / raw)
Cc: emacs-devel
Chong Yidong <cyd@stupidchicken.com> writes:
> I'm more interested in fixing the default behavior. Removing the
> sit-for in mouse-drag-region-1 won't have any effect on double-clicks
> elsewhere in Emacs.
The change you installed appears to be a major usability improvement,
indeed. Thank you.
--
Romain Francoise <romain@orebokech.com> | I've become someone else's
it's a miracle -- http://orebokech.com/ | nightmare...
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-11 17:16 ` Romain Francoise
@ 2005-10-11 21:04 ` Kim F. Storm
2005-10-11 21:20 ` Chong Yidong
0 siblings, 1 reply; 13+ messages in thread
From: Kim F. Storm @ 2005-10-11 21:04 UTC (permalink / raw)
Cc: Chong Yidong, emacs-devel
Romain Francoise <romain@orebokech.com> writes:
> Chong Yidong <cyd@stupidchicken.com> writes:
>
>> I'm more interested in fixing the default behavior. Removing the
>> sit-for in mouse-drag-region-1 won't have any effect on double-clicks
>> elsewhere in Emacs.
>
> The change you installed appears to be a major usability improvement,
> indeed. Thank you.
As the author of the feature, I just want to point out that originally
I did not include double-click support, but I added it on request from RMS.
If it turns out to be a major obstackle for using the feature (I haven't
had that experience myself), I don't mind removing it.
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-11 21:04 ` Kim F. Storm
@ 2005-10-11 21:20 ` Chong Yidong
2005-10-12 9:32 ` Kim F. Storm
0 siblings, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2005-10-11 21:20 UTC (permalink / raw)
Cc: Romain Francoise, emacs-devel
> As the author of the feature, I just want to point out that originally
> I did not include double-click support, but I added it on request from RMS.
>
> If it turns out to be a major obstackle for using the feature (I haven't
> had that experience myself), I don't mind removing it.
Just to avoid a misunderstanding: the change I made (removing the
sit-for call in mouse-drag-region-1) doesn't affect the double-click
support. Setting mouse-1-click-follows-link to 'double still has the
same results: it makes a double-click rather than a single click
follow the link. As far as I can see, there are no bad side-effects
to the change.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-11 21:20 ` Chong Yidong
@ 2005-10-12 9:32 ` Kim F. Storm
2005-10-12 13:11 ` Chong Yidong
2005-10-13 4:52 ` Richard M. Stallman
0 siblings, 2 replies; 13+ messages in thread
From: Kim F. Storm @ 2005-10-12 9:32 UTC (permalink / raw)
Cc: Romain Francoise, emacs-devel
Chong Yidong <cyd@stupidchicken.com> writes:
>> As the author of the feature, I just want to point out that originally
>> I did not include double-click support, but I added it on request from RMS.
>>
>> If it turns out to be a major obstackle for using the feature (I haven't
>> had that experience myself), I don't mind removing it.
>
> Just to avoid a misunderstanding: the change I made (removing the
> sit-for call in mouse-drag-region-1) doesn't affect the double-click
> support. Setting mouse-1-click-follows-link to 'double still has the
> same results: it makes a double-click rather than a single click
> follow the link. As far as I can see, there are no bad side-effects
> to the change.
IIRC, the code you removed was intended to make a double-click do the
normal action at point rather than following the link
(when mouse-1-click-follows-link != double-click).
I'm not sure how useful that feature was, but it was added on request
from RMS.
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-12 9:32 ` Kim F. Storm
@ 2005-10-12 13:11 ` Chong Yidong
2005-10-12 13:37 ` Kim F. Storm
2005-10-13 4:52 ` Richard M. Stallman
1 sibling, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2005-10-12 13:11 UTC (permalink / raw)
Cc: Romain Francoise, emacs-devel
> IIRC, the code you removed was intended to make a double-click do the
> normal action at point rather than following the link
> (when mouse-1-click-follows-link != double-click).
>
> I'm not sure how useful that feature was, but it was added on request
> from RMS.
It didn't do that; the double-click binding never got called. To bind
double-mouse-1 to something, you had to unbind down-mouse-1, which
means mouse-drag-region-1 wouldn't get called anyway.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-12 13:11 ` Chong Yidong
@ 2005-10-12 13:37 ` Kim F. Storm
0 siblings, 0 replies; 13+ messages in thread
From: Kim F. Storm @ 2005-10-12 13:37 UTC (permalink / raw)
Cc: Romain Francoise, emacs-devel
Chong Yidong <cyd@stupidchicken.com> writes:
>> IIRC, the code you removed was intended to make a double-click do the
>> normal action at point rather than following the link
>> (when mouse-1-click-follows-link != double-click).
>>
>> I'm not sure how useful that feature was, but it was added on request
>> from RMS.
>
> It didn't do that; the double-click binding never got called. To bind
> double-mouse-1 to something, you had to unbind down-mouse-1, which
> means mouse-drag-region-1 wouldn't get called anyway.
Are you sure?
IIUC, double clicks works by executing the mouse-1 action on the
first click, and the double-mouse-1 action on the second click.
--
Kim F. Storm <storm@cua.dk> http://www.cua.dk
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-12 9:32 ` Kim F. Storm
2005-10-12 13:11 ` Chong Yidong
@ 2005-10-13 4:52 ` Richard M. Stallman
2005-10-13 14:39 ` Stefan Monnier
2005-10-13 15:33 ` Chong Yidong
1 sibling, 2 replies; 13+ messages in thread
From: Richard M. Stallman @ 2005-10-13 4:52 UTC (permalink / raw)
Cc: cyd, romain, emacs-devel
IIRC, the code you removed was intended to make a double-click do the
normal action at point rather than following the link
(when mouse-1-click-follows-link != double-click).
That is important. Double-click of mouse-1 has a standard meaning,
and the link-following feature is not supposed to interfere with it.
Whether the old code succeeded in keeping double-click working right,
I don't know. But if it doesn't work correctly now, it needs to be
fixed.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-13 4:52 ` Richard M. Stallman
@ 2005-10-13 14:39 ` Stefan Monnier
2005-10-13 15:33 ` Chong Yidong
1 sibling, 0 replies; 13+ messages in thread
From: Stefan Monnier @ 2005-10-13 14:39 UTC (permalink / raw)
Cc: cyd, romain, emacs-devel, Kim F. Storm
>>>>> "Richard" == Richard M Stallman <rms@gnu.org> writes:
> IIRC, the code you removed was intended to make a double-click do the
> normal action at point rather than following the link
> (when mouse-1-click-follows-link != double-click).
> That is important. Double-click of mouse-1 has a standard meaning,
> and the link-following feature is not supposed to interfere with it.
> Whether the old code succeeded in keeping double-click working right,
> I don't know. But if it doesn't work correctly now, it needs to be
> fixed.
An alternative implementation which may fix the problem could look like:
After the first click, start a timer waiting for double-click-time and
add a pre-command-hook. The timer just runs the mouse-2 binding.
The pre-command-hook will cancel the timer and depending on whether the
triggering event is a double-click or not, it will run the mouse-2 binding.
This way you avoid the problematic sit-for. But it's pretty nasty code in
any case.
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-13 4:52 ` Richard M. Stallman
2005-10-13 14:39 ` Stefan Monnier
@ 2005-10-13 15:33 ` Chong Yidong
2005-10-14 5:10 ` Richard M. Stallman
1 sibling, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2005-10-13 15:33 UTC (permalink / raw)
Cc: romain, emacs-devel, Kim F. Storm
> That is important. Double-click of mouse-1 has a standard meaning,
> and the link-following feature is not supposed to interfere with it.
>
> Whether the old code succeeded in keeping double-click working right,
> I don't know. But if it doesn't work correctly now, it needs to be
> fixed.
This patch should fix the problem. I think `mouse-drag-region-1' was
failing to call double-click bindings because it assumed that
double-mouse-1 was bound to `mouse-set-point'.
By the way, there's no need to drop the mouse-1 event if the user
double-clicks (which is what the sit-for was trying to do). The Elisp
manual says that
When the user performs a double click, Emacs generates first an
ordinary click event, and then a double-click event. Therefore,
you must design the command binding of the double click event to
assume that the single-click command has already run. It must
produce the desired results of a double click, starting from the
results of a single click.
This patch should make mouse-1 and double-mouse-1 work as stated.
Could people test it out?
*** emacs/lisp/mouse.el.~1.281.~ 2005-10-09 13:59:03.000000000 -0400
--- emacs/lisp/mouse.el 2005-10-13 11:19:30.000000000 -0400
***************
*** 958,969 ****
(mouse-move-drag-overlay mouse-drag-overlay start-point end-point click-count))
(if (consp event)
! (let ((fun (key-binding (vector (car event)))))
;; Run the binding of the terminating up-event, if possible.
;; In the case of a multiple click, it gives the wrong results,
;; because it would fail to set up a region.
! (if (not (= (overlay-start mouse-drag-overlay)
! (overlay-end mouse-drag-overlay)))
(let* ((stop-point
(if (numberp (posn-point (event-end event)))
(posn-point (event-end event))
--- 958,973 ----
(mouse-move-drag-overlay mouse-drag-overlay start-point end-point click-count))
(if (consp event)
! (let* ((fun (key-binding (vector (car event))))
! (do-multi-click (and (> (event-click-count event) 0)
! (functionp fun)
! (not (eq fun 'mouse-set-point)))))
;; Run the binding of the terminating up-event, if possible.
;; In the case of a multiple click, it gives the wrong results,
;; because it would fail to set up a region.
! (if (and (not (= (overlay-start mouse-drag-overlay)
! (overlay-end mouse-drag-overlay)))
! (not do-multi-click))
(let* ((stop-point
(if (numberp (posn-point (event-end event)))
(posn-point (event-end event))
***************
*** 996,1001 ****
--- 1000,1006 ----
(and (mark t) mark-active
(eq buffer (current-buffer))
(mouse-set-region-1))))
+ (if do-multi-click (goto-char start-point))
(delete-overlay mouse-drag-overlay)
;; Run the binding of the terminating up-event.
(when (and (functionp fun)
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Difficulty with mouse-1-click-follows-link
2005-10-13 15:33 ` Chong Yidong
@ 2005-10-14 5:10 ` Richard M. Stallman
0 siblings, 0 replies; 13+ messages in thread
From: Richard M. Stallman @ 2005-10-14 5:10 UTC (permalink / raw)
Cc: romain, emacs-devel, storm
Thansk very much for fixing the double-click.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2005-10-14 5:10 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-09 17:57 Difficulty with mouse-1-click-follows-link Chong Yidong
2005-10-09 18:51 ` Romain Francoise
2005-10-10 16:46 ` Chong Yidong
2005-10-11 17:16 ` Romain Francoise
2005-10-11 21:04 ` Kim F. Storm
2005-10-11 21:20 ` Chong Yidong
2005-10-12 9:32 ` Kim F. Storm
2005-10-12 13:11 ` Chong Yidong
2005-10-12 13:37 ` Kim F. Storm
2005-10-13 4:52 ` Richard M. Stallman
2005-10-13 14:39 ` Stefan Monnier
2005-10-13 15:33 ` Chong Yidong
2005-10-14 5:10 ` Richard M. Stallman
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).