unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: storm@cua.dk (Kim F. Storm)
Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
Subject: Re: finger-pointer curser as default for mouse-face text
Date: Tue, 26 Oct 2004 14:23:54 +0200	[thread overview]
Message-ID: <m3zn29oeg5.fsf@kfs-l.imdomain.dk> (raw)
In-Reply-To: <x5lldtrfv6.fsf@lola.goethe.zz> (David Kastrup's message of "Tue, 26 Oct 2004 11:25:01 +0200")

David Kastrup <dak@gnu.org> writes:

>> If we can safely differentiate between links and non-links I think a
>> short click should follow the link (double-clicks typically don't
>> make sense there anyway) and a long click should set point
>
> Well, I happen to disagree, since following a link is the more time
> consuming action, anyway, and people might be tempted to press until
> the browser window appears.

If you keep the button pressed in emacs, the window NEVER appears (as
it is the up-event which follows the link), so I doubt users do that.

> In any case, neither option is the behavior that a user would guess
> without being explicitly introduced to it.  So we need to turn it off
> by default, or give an explanatory message of some kind by default.

Well, if the "normal" click follows the link (and I claim that the
normal click is the short click), most users will never think there is
a problem, as they don't usually have to set the mouse in the middle
of a link.

They will probably set it next to the link and move the cursor into
the link (that's how it is often done in other applications).

Now, the more advanced users will ask (or find out by themselves) that
a longer click sets the mouse.  That is no different from a lot of
other functionality in emacs, where the defaults suit the majority,
but can be tweaked by the rest).

I really don't think a message is worth the extra code [but if
that's a prerequisite to get this installed, I'll do it].

>
>> Appended is a patch which uses get-text-property rather than
>> get-char-property to ignore overlay mouse-face properties.
>
> I firmly object to such a course.  While we should not let ourselves
> be influenced too much by that, with XEmacs there is not even a
> distinction between overlays and text properties.  The choice between
> the two when using Emacs should depend _exclusively_ on whether you
> need the association with the text or the buffer, and not on any
> chance side effects introduced to accidentally work with some package.

True, so it's the wrong solution.  What is the right solution?

Below is a patch which checks if the "link" has a dont-follow-link
property.  That requires package authors to adapt their code if they
don't want mouse-1 to follow links, but it is a trivial addition...


Index: mouse.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mouse.el,v
retrieving revision 1.251
diff -c -r1.251 mouse.el
*** mouse.el	18 Oct 2004 09:29:26 -0000	1.251
--- mouse.el	26 Oct 2004 12:25:34 -0000
***************
*** 48,53 ****
--- 48,81 ----
    :type 'boolean
    :group 'mouse)
  
+ (defcustom mouse-1-click-follows-link 300
+   "Non-nil means that clicking mouse-1 on a link follows the link.
+ This is only done for links which have the mouse-face property.
+ 
+ If value is an positive integer, it specifies the maximum
+ duration in milli-seconds of the mouse-1 click to be recognized
+ as a mouse-2 click.  If the time between pressing and releasing
+ the mouse button is longer, the normal mouse-1 command (typically
+ set point) is performed.
+ 
+ If value is an negative integer, its absolute value specifies the
+ minimum duration in milli-seconds of the mouse-1 click to be
+ recognized as a mouse-2 click.  If the time between pressing and
+ releasing the mouse button is longer, the normal mouse-1 command
+ is performed.
+ 
+ Otherwise, mouse-1 unconditionally follows the link, unless you
+ drag the mouse in the link to run the normal mouse-1 command."
+   :version "21.4"
+   :type '(choice (const :tag "Disabled" nil)
+                  (number :tag "Click time limit" :value 300)
+                  (other :tag "Enabled" t))
+   :group 'mouse)
+ 
  \f
  ;; Provide a mode-specific menu on a mouse button.
  
***************
*** 877,882 ****
--- 905,929 ----
  			 (or end-point
  			     (= (window-start start-window)
  				start-window-start)))
+ 		(if (and mouse-1-click-follows-link
+ 			 (not end-point)
+ 			 (consp event)
+ 			 (= click-count 0)
+ 			 (= (event-click-count event) 1)
+ 			 (not (input-pending-p))
+ 			 (get-char-property start-point 'mouse-face)
+ 			 (not (get-char-property start-point 'dont-follow-link))
+ 			 (or (not (integerp mouse-1-click-follows-link))
+ 			     (let ((t0 (posn-timestamp (event-start start-event)))
+ 				   (t1 (posn-timestamp (event-end event))))
+ 			       (and (integerp t0) (integerp t1)
+ 				    (if (> mouse-1-click-follows-link 0)
+ 					(<= (- t1 t0) mouse-1-click-follows-link)
+ 				      (< (- t0 t1) mouse-1-click-follows-link)))))
+ 			 (or (not double-click-time)
+ 			     (sit-for 0 (if (integerp double-click-time)
+ 					    double-click-time 500) t)))
+ 		    (setcar event 'mouse-2))
  		(setq unread-command-events
  		      (cons event unread-command-events)))))
  	(delete-overlay mouse-drag-overlay)))))

--
Kim F. Storm <storm@cua.dk> http://www.cua.dk

  reply	other threads:[~2004-10-26 12:23 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <DNEMKBNJBGPAOPIJOOICAEKKCAAA.drew.adams@oracle.com>
2004-10-19  9:04 ` finger-pointer curser as default for mouse-face text Kim F. Storm
2004-10-19 15:31   ` Lennart Borgman
2004-10-19 16:12   ` Drew Adams
2004-10-21 13:56   ` Richard Stallman
2004-10-21 14:47     ` Kim F. Storm
2004-10-21 16:03       ` Lennart Borgman
2004-10-23  4:48       ` Richard Stallman
2004-10-24 12:42         ` Kim F. Storm
2004-10-24 12:59           ` Lennart Borgman
2004-10-24 19:40             ` Kim F. Storm
2004-10-24 20:06               ` Lennart Borgman
2004-10-25 13:13             ` Richard Stallman
2004-10-24 13:10           ` David Kastrup
2004-10-24 19:59             ` Kim F. Storm
2004-10-26  9:04               ` Richard Stallman
2004-10-26 17:05                 ` Lennart Borgman
2004-10-24 22:31           ` Stefan
2004-10-25  7:22             ` David Kastrup
2004-10-25 11:47               ` Stefan
2004-10-25 12:51                 ` David Kastrup
2004-10-25 13:50                   ` Stefan Monnier
2004-10-25 14:52                     ` Ralf Angeli
2004-10-25 15:08                       ` Stefan Monnier
2004-10-25 15:18                         ` David Kastrup
2004-10-25 15:35                           ` Stefan Monnier
2004-10-26  9:00                             ` Kim F. Storm
2004-10-26  9:25                               ` David Kastrup
2004-10-26 12:23                                 ` Kim F. Storm [this message]
2004-10-26 18:55                                   ` Drew Adams
2004-10-26 21:06                                     ` David Kastrup
2004-10-26 21:54                                     ` Kim F. Storm
2004-10-27  2:15                                       ` Luc Teirlinck
2004-10-27 12:52                                         ` Kim F. Storm
2004-10-27 13:02                                           ` Luc Teirlinck
2004-10-27 13:16                                           ` David Kastrup
2004-10-27 14:51                                             ` feature freeze (was: finger-pointer curser as default for mouse-face text) Reiner Steib
2004-10-27 15:15                                               ` Kim F. Storm
2004-10-27 15:15                                               ` feature freeze David Kastrup
2004-10-27 17:29                                           ` finger-pointer curser as default for mouse-face text Drew Adams
2004-10-28 14:05                                             ` Kim F. Storm
2004-10-27 17:35                                       ` Richard Stallman
2004-11-01 14:40                                         ` Karl Eichwalder
2004-11-01 15:44                                           ` Stefan
2004-11-02 14:08                                           ` Richard Stallman
2004-11-02 18:08                                             ` Karl Eichwalder
2004-11-02 21:51                                               ` Miles Bader
2004-11-02 23:41                                                 ` Drew Adams
2004-11-02 23:53                                                   ` Stefan
2004-11-03  1:27                                                     ` incrementor-decrementor commands and bindings (was: finger-pointer curser as default for mouse-face text) Drew Adams
2004-11-03  7:51                                                       ` incrementor-decrementor commands and bindings (was: finger-pointercurser " Stephan Stahl
2004-11-03 15:26                                                         ` Drew Adams
2004-11-04  9:51                                                           ` Richard Stallman
2004-11-03  1:34                                                     ` finger-pointer curser as default for mouse-face text Miles Bader
2004-11-03  9:31                                                       ` Kim F. Storm
2004-11-03  9:26                                                     ` Kim F. Storm
2004-11-03 10:20                                                       ` David Kastrup
2004-11-03 17:04                                                 ` Richard Stallman
2004-11-03  9:11                                               ` Kim F. Storm
2004-11-03 17:03                                               ` Richard Stallman
2004-10-27 17:34                                   ` Richard Stallman
2004-10-27 10:49                               ` Richard Stallman
2004-10-27 12:24                                 ` Kim F. Storm
2004-10-27 13:03                                   ` Stefan Monnier
2004-10-27 13:18                                   ` David Kastrup
2004-10-28  2:27                                 ` Miles Bader
2004-10-27  7:22                             ` Kai Grossjohann
2004-10-27  7:35                               ` David Kastrup
2004-10-27 12:32                                 ` Kim F. Storm
2004-10-28  6:24                                 ` Richard Stallman
2004-10-27 10:47                             ` Richard Stallman
2004-10-26  9:05               ` Richard Stallman
2004-10-25  8:31             ` Kim F. Storm
2004-10-25 10:01               ` David Kastrup
2004-10-25 12:32                 ` Kim F. Storm
2004-10-26  9:05               ` Richard Stallman
2004-10-25 13:13           ` Richard Stallman
2004-10-21 14:09   ` David Kastrup
2004-10-21 14:42     ` Kim F. Storm
2004-10-21 15:21       ` David Kastrup
2004-10-21 19:55         ` Kim F. Storm
2004-10-21 20:09           ` Drew Adams
2004-10-21 21:45             ` Stefan Monnier
2004-10-21 22:09               ` David Kastrup
2004-10-22  9:10                 ` Kim F. Storm
2004-10-22 12:45                   ` David Kastrup
2004-10-22 15:03                     ` Kim F. Storm
2004-10-22 15:56                       ` David Kastrup
2004-10-17 19:27 Drew Adams
2004-10-18 11:19 ` Kim F. Storm
2004-10-18 13:59 ` Richard Stallman
2004-12-07 13:16 ` Per Abrahamsen

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=m3zn29oeg5.fsf@kfs-l.imdomain.dk \
    --to=storm@cua.dk \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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).