Mouse drag algorithm
press
-----
if flags_clear:
if near marker:
flag.dragging_marker = true
else if near selection:
flag.dragging_selection = true
selection.start_point = other side of selection
else:
flag.dragging_selection = true
selection.start_point = this_point
else:
clear_flags
motion
------
if flags.dragging_marker:
set_marker()
if not flags.cursor_set:
set_cursor(<->)
flags.cursor_set = true
else if flags.dragging_selection:
set_selection(selection.start_point, this_point)
flags.did_move = true
if not flags.cursor_set:
set_cursor(<->)
flags.cursor_set = true
else if near marker:
if not flags.cursor_set:
set_cursor(<->)
flags.cursor_set = true
else if near selection:
if not flags.cursor_set:
set_cursor(<->)
flags.cursor_set = true
else if flags.cursor_set:
restore_cursor()
release
-------
if flags.dragging_marker:
set_marker()
if flags.dragging_selection:
if flags.did_move:
set_selection(selection.starting_point, this_point)
else:
set_marker()
if flags.cursor_set:
restore_cursor
clear_flags(flags)
|