Paul Licameli
5e4f453a81
Fix crashes when ESCaping a drag
2017-07-13 07:03:30 -04:00
Paul Licameli
6c0b3bb1bf
Shift+TAB cycles hit test targets backwards
2017-07-12 16:39:14 -04:00
Paul Licameli
2cce171fe0
Implement TAB key rotation among hit test targets
2017-07-12 13:03:14 -04:00
Paul Licameli
4ec6baf059
Cursor handling always relies on current mouse state, not remembered
2017-07-12 13:03:13 -04:00
Paul Licameli
cddeb94c4b
Revert "Highlighting of resizers"
...
This reverts commit 3e7f82cf5e4f4ce064a8bf5fcb136f12df933f9a.
2017-07-11 14:16:58 -04:00
Paul Licameli
3e7f82cf5e
Highlighting of resizers
2017-07-11 13:57:59 -04:00
Paul Licameli
51e25cdfa0
Highlighting of Track Control Panel sliders
2017-07-09 12:34:46 -04:00
Paul Licameli
25641ae568
Highlight TCP buttons
2017-07-09 12:34:46 -04:00
Paul Licameli
ada4b6307d
Pass more context information into drawing routines
2017-07-09 12:34:27 -04:00
Paul Licameli
f09a7be3dc
TCP draw use hit target for button, slider state; remove hacky global
2017-07-09 12:34:27 -04:00
Paul Licameli
b3d62e2ab6
Simplify by removing class HitTestResult...
...
... Because all hit tests returned all fields blank, or else, returned a
UIHandle object whose Preview method gives the rest of the information; so
the other fields were redundant.
2017-07-09 07:57:34 -04:00
Paul Licameli
f5b0afc2fc
Rename TrackPanel::HandleCursor as HandleMotion...
...
Call HitTest in just one place
Can now preserve repeatedly hit UIHandle objects during pre-click motion
Fields of HitTestResult besides the handle pointer are now unused
The need to repaint a track during mouse movement can be indicated when
constructing a UIHandle or when updating it for move; HitPreview no longer
does this
And the last allows simplifications of LabelTrack glyph highlighting
Also move the temporary state for label glyph dragging out of LabelTrack
2017-07-09 07:56:47 -04:00
Paul Licameli
2c1a16f593
Changed lifetime management of UIHandle objects, no singletons...
...
... Rather, construct them during hit tests (also capturing more state sooner
rather than at Click time, and adding some accessors for later use)
This also fixes bug 1677 by other means and avoids similar problems.
A cell may be implemented to re-use a previously hit handle object, not yet
clicked, in a later hit test, by remembering a weak pointer, but TrackPanel
holds the strong pointers that determine when the object is destroyed.
And the objects will surely be destroyed after drag-release, or ESC key.
For now they are also destroyed whenever not dragging, and hit-testing is
re-invoked; that will be changed later, so that the re-use mentioned above
becomes effective, but still they will be destroyed when the pointer moves
from one cell to another.
2017-07-09 07:23:28 -04:00
Paul Licameli
3a8280c562
Distinguish TrackPanelMouseState from TrackPanelMouseEvent...
...
... Let cell hit tests, and handle preview, know states only, not transitions.
Cell hit tests are passed a mouse state that does not always match the current,
but anticipates the button click to come; usually left, but if the Control
[sic] key on Mac is down, then right.
Thus, pressing and releasing Mac Control in multi-tool switches in and out of
the magnifier cursor.
2017-07-09 06:38:55 -04:00
Paul Licameli
e424f8e54e
TrackPanel::mpClickedTrack is a safe weak_ptr
2017-06-28 01:46:59 -04:00
Paul Licameli
f8b74db76e
Iterators over TrackPanelCell give shared_ptr
2017-06-26 17:14:33 -04:00
Paul Licameli
750fc34fac
Clarify what the TrackList events are for...
...
Also fixes this bug:
Vertical rulers did not narrow as needed after deletion of the lowest track.
2017-06-25 03:00:28 -04:00
Paul Licameli
91c86fd937
TrackPanelCellIterator visits all cells, and FindCell simply uses it
2017-06-17 03:01:40 -04:00
Paul Licameli
ffbc4d5f90
Simplify iterations over TrackPanelCells with range-for
2017-06-17 03:01:40 -04:00
Paul Licameli
a94eb75b4e
Further regularize the odd case of hit-test on the resizer region
2017-06-16 18:05:09 -04:00
Paul Licameli
34026d19fd
Still better cursor handling: change cursor at once...
...
... on start or stop of transport, in cases as described in the previous
commit comment, even if the pointer does not move.
2017-06-16 18:05:08 -04:00
Paul Licameli
d9a91c1431
TrackPanel simplifications; improved cursor handling...
...
... in cases such as: dragging an envelope point, then hitting space to play,
which forces the drag to finish early. If you move the mouse, cursor will
remain "ban", even while the mouse button remains down but no drag is really
happening.
2017-06-16 18:05:08 -04:00
Paul Licameli
41a56441dc
Remove unnecessary "virtual"
2017-06-16 18:05:08 -04:00
Paul Licameli
ef9e6465d0
Use override
2017-06-16 18:05:08 -04:00
Paul Licameli
d6b430c262
Remove unused function
2017-06-16 18:05:07 -04:00
Paul Licameli
770b3b52ef
TrackPanel no longer implements the selection tool or MIDI stretch...
...
This one's big!
Also restores the effect of ctrl-click on label track.
Also adds ESC key handling for the Stretch.
2017-06-15 08:54:59 -04:00
Paul Licameli
efdb9889b1
TrackPanel no longer implements label keystrokes, drags, text selection...
...
... also implemented ESC key for those drags
... temporarily loses the special CTRL click handling
2017-06-15 08:54:58 -04:00
Paul Licameli
bbfa574790
Move track resizing code out of TrackPanel.cpp, though it still...
...
... cooperates more closely with TrackPanel than the other UIHandle subclasses
do.
2017-06-15 08:54:58 -04:00
Paul Licameli
703abe87bc
TrackPanel no longer implements track selection click or rearrange drag...
...
... also implement ESC key for the drag
2017-06-15 08:54:57 -04:00
Paul Licameli
e4627b1668
TrackPanel no longer implements other mouse wheel actions
2017-06-15 08:21:42 -04:00
Paul Licameli
674ccc5e15
Clean up last bits of old popup menu code
2017-06-15 08:21:40 -04:00
Paul Licameli
91e6239eeb
Move code for vertical ruler clicks, drags, popup menus, scroll wheel
2017-06-15 08:21:40 -04:00
Paul Licameli
a313bcdb11
Move code for Wave track menu items
2017-06-15 08:21:40 -04:00
Paul Licameli
ba5f6ce411
Move code for Note track menu items
2017-06-15 08:21:39 -04:00
Paul Licameli
01d5d30b7e
Move code for Label track menu items
2017-06-15 08:21:38 -04:00
Paul Licameli
516d812f3a
Move code for Time track menu items
2017-06-15 08:21:38 -04:00
Paul Licameli
0e5e7b1c05
Move code for common track menu items
2017-06-15 08:21:37 -04:00
Paul Licameli
bd0603b66a
Remove the duplicate button-drawing functions that are now unused
2017-06-15 08:21:37 -04:00
Paul Licameli
1a317af2f5
Move code for handling the menu button out of TrackPanel, but...
...
... Still to do, move out the code for menu items. They remain accessible
from Shift-M but not from the menu button.
And ESC key is now implemented.
2017-06-15 08:21:36 -04:00
Paul Licameli
c3f5fea5fc
TrackPanel still draws Miminize and Close, but no longer handles...
...
clicks on them...
... also implemented ESC key for those drags
2017-06-15 08:21:36 -04:00
Paul Licameli
7cab380192
TrackPanel still draws Velocity, but no longer handles clicks on it...
...
... also implemented ESC key for that drag
2017-06-15 08:21:35 -04:00
Paul Licameli
a569476e79
TrackPanel still draws Gain and Pan, but no longer handles clicks on them...
...
... also implemented ESC key for those drags
2017-06-15 08:21:35 -04:00
Paul Licameli
5ee73f944d
TrackPanel still draws Mute and Solo, but no longer handles clicks on them...
...
... also implemented ESC key for those drags
2017-06-15 08:21:34 -04:00
Paul Licameli
f89cbefc7b
Temporary hack lets us defer encapsulation of track control panel drawing...
...
... while we can work on encapsulating the click-drag actions.
2017-06-15 08:21:33 -04:00
Paul Licameli
43968c4ac9
TrackPanel no longer implements clip joining or cutline expansion/deletion...
...
... also implement ESC key for these and added status bar message for
mouse-over
2017-06-15 08:21:30 -04:00
Paul Licameli
2496b0d7bc
TrackPanel no longer implements the envelope tool...
...
... also implement ESC key for it
2017-06-15 08:21:02 -04:00
Paul Licameli
ef38af71dd
Move more time-shifting functions out of TrackPanel.cpp
2017-06-15 08:21:01 -04:00
Paul Licameli
251976d93d
TrackPanel no longer implements the time shift tool...
...
... also implement ESC key for it
2017-06-15 08:21:01 -04:00
Paul Licameli
f1f254f974
TrackPanel no longer implements the draw tool...
...
... also implement ESC key for it
2017-06-15 08:21:00 -04:00
Paul Licameli
85c03bb3b3
TrackPanel no longer implements the zoom tool...
...
... Also changed the behavior of drawing of dashed lines: make them
disappear when they approach close enough that right-up will zoom out,
not in.
2017-06-15 08:20:59 -04:00