When deciding between mousedown
and mouseup
one can consider various practical impacts on UX. Different behaviour is usual for different GUI controls.
Some user actions could potentially be dangerous and that is why I think the button click action happens on mouseup
. Thus the user is able to rethink his intention, move the mouse away from the button and effectively cancel the action. The similar it is with checkbox and optionbox controls. On the contrary, clicking the header pane in MS Office does not imply any serious action or data change, as it only switches the selected toolbar pane. This is not very important action and thus it gets done as early as on mousedown
. The same it is with standard Windows tab control.
Sometimes the use of mousedown
action is practically necessary as with mouse drawing, text selection or drag & drop and resize manipulations. It is also possible to comfortably combine the select action with drag & drop action, e.g. in Chrome user can select a tab with mousedown
, see its content and then immediately start to drag it to another position in the tabs pane. Finally user drops the tab with mouseup
, so all of these actions are performed with only a single mousedown
/mouseup
couple.
mousedown
can also spare some mouse clicks, like with app menus or some selectboxes: on mousedown
, user opens the menu and starts selecting the item with mouse move, while on mouseup
the item is finally selected. This prevents user from clicking twice - once when opening the menu and once when selecting the item.
mousedown
is also practical when it is desirable to perform actions quickly. Imagine some settings dialog with a listbox containing several items. After clicking on each listbox item the displayed settings pane gets changed. As the displayed settings change on mousedown
, user can just hold mouse button and switch between listbox items (and displayed settings) by only moving the mouse, i.e. without the need to click multiple times.
Several GUI controls support some action happening after mousedown
and some delay. You surely know numberbox control with small buttons for increasing/decreasing the displayed number. When user does mousedown
on some of these buttons, after a small delay the number in the numberbox starts increasing/decreasing quickly. The same it is with up/down buttons on scrollbars.
This delay behaviour is quite similar to keydown
and keyup
events. When some action is performed on keyup
and user wants to repeat the action multiple times, he also has to repeat the key press multiple times. With keydown
action it is enough to press the key once, hold it for a longer time and after a small dely the action gets repeated automatically (like when you hold the key 'a' and it starts to write many repeating 'a' characters).