Based on work by Bastien and Brecht, this adds more generic support for
drag-all-selected and uses it for Node Editor, VSE and Dopesheet.
The behavior is supposed to work as follows:
- Clicking a unselected item immediately selects it, and deselects other items (doesn't wait for release events).
- Click+drag on an unselected item immediately selects it, deselects others and drags it in one go (don't require selecting it first!).
- Click+drag on a selected item won't change the selection state (and won't send an undo push) and start dragging all selected items as soon as the drag event is recognized.
- Clicking on a selected item will still deselect others, but that will only happen on mouse release, when we know the intention is not to drag the item.
In the Node Editor this behavior already worked, I only refactored it a
bit to use the new generic code.
Note that in the VSE implementation of this, the behavior doesn't only
work for strips, but also for the strip handles. So you can click and
drag multiple stip handles now too.