Action on MouseClicked vs MouseReleased

Started by
4 comments, last by 21st Century Moose 12 years, 1 month ago
I was thinking today about what would be a better trigger to activate buttons: mouse clicked or mouse released. By this I mean, would it be better to have the button do its action when the user clicks their mouse down on it, or when the user releases their mouse on it?

Pros for MouseClicked:
1) Faster reaction to the user clicking the button

Pros for MouseReleased:
1) The user can drag their mouse away from the button if they didn't actually want to click it

I clearly didn't think of very much. Maybe that means it's a stupid topic, but what are you guys' opinions on which one is better?
Advertisement
Definitely MouseReleased. ><
The standard is to have the action actually happen only on a completed MouseDown and a matching Mouseup. This is important. If a user is Clicks and holds the mouse button down, then drags and releases over a button, the event should not fire off. It should only happen if the button is already in the pressed position.
Wisdom is knowing when to shut up, so try it.
--Game Development http://nolimitsdesigns.com: Reliable UDP library, Threading library, Math Library, UI Library. Take a look, its all free.
Additionally to what smasherprog said, also the reverse: If the mouse button is pressed and helf over a button, the user drags the cursor off the button and releases it, the event should also not fire off.

If in doubt, compare with your OS behaviour. People prefer common behaviour.

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>


The standard is to have the action actually happen only on a completed MouseDown and a matching Mouseup. This is important. If a user is Clicks and holds the mouse button down, then drags and releases over a button, the event should not fire off. It should only happen if the button is already in the pressed position.

Interesting. I knew of the of the problem with clicking and dragging to another button and then releasing, causing the button to activate. I didn't know that what you described was standard. It definitely makes sense, though.

If in doubt, compare with your OS behaviour. People prefer common behaviour.


This is important. If people are used to the mouse behaving a certain way in their OS, if a program comes along and behaves a different way, the end result is user confusion/unhappiness and added support overhead.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

This topic is closed to new replies.

Advertisement