emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: when to bind *down-mouse* vs *mouse*?


From: Drew Adams
Subject: RE: when to bind *down-mouse* vs *mouse*?
Date: Mon, 6 Dec 2004 11:16:20 -0800

    When the action creates a popup menu, I think we want to bind it to
    the mouse-down event.  I seem to situations where the menu would
    disappear as soon as you released the mouse.  If you released the
    mouse on a menu item, that menu item has been "chosen" by the user.

It's not clear to me what you're saying here. I think you're suggesting,
first, that binding to down-mouse lets the mouse-up event choose the menu
item, and if the menu were bound to just mouse (mouse-up), then you would
need to first click to bring up the menu, and then click again to choose the
menu item. Is that what you mean?

Are you also saying that there was (is?) a bug that caused the popup menu to
disappear on mouse-up? Was that with the menu bound to down-mouse or just
mouse (-up)?

When I look at other applications running on Windows - that's all I have
available right now -, they generally bring up a popup menu on mouse-up, not
on mouse-down. That includes most popup menus in Microsoft applications
(including Word, Outlook, Internet Explorer, Windows Explorer, Windows Media
Player, and Windows XP dialog boxes), but also WinZIP, Framemaker,
DreamWeaver, HomeSite, WS_FTP, SmartFTP, TextPad, TopStyle, and Irfanview.
(There are some exceptions, notably Netscape, Acrobat, and MS Excel.)

And these applications nevertheless let you keep the button pressed and
release it on a menu item to choose the item. And they let you,
alternatively, use separate clicks: one to bring up the menu, one to choose
each submenu (if any), and one to choose a menu item.

So, I would say that it is not clear that popup menus should be opened on
down-mouse - the reasons given so far aren't convincing. I'm not saying that
Emacs should necessarily behave like Windows apps; I'm just asking why it is
a good idea to bind popup menu opening to down-mouse, rather than mouse
(mouse-up).

The question of S-down-mouse-1 on Windows is a separate issue. On platforms
besides Windows, or if `w32-use-w32-font-dialog' is nil, a popup menu is
displayed. But on Windows with `w32-use-w32-font-dialog' non-nil (default
value), this just opens a dialog box. I see no reason to bind down-mouse
instead of mouse (-up), just to bring up a dialog box.

    Similary, when the action involves a position, we want to use
    mouse-down.  One example is yanking with the mouse.  We want to yank
    where the user clicked the mouse button (down), not where the user
    released it.

    Conversely, when the action is triggered by clicking into some
    sensitive area (eg. buttons, links), then we should use mouse-up, so
    that the user can change his mind after mouse-down and move away from
    the button or link in order to cancel.

These makes sense. Perhaps similar guidance should be in the Emacs (or
Elisp) manual - especially the second paragraph, which is less obvious than
the first. If so, the text should point out that the second criterion
overrides the first (a button or link also "involves a position").

Thanks,

  Drew






reply via email to

[Prev in Thread] Current Thread [Next in Thread]