editor: support going to prev/next bookmark
This commit is contained in:
parent
3a859b781e
commit
3f19324255
1
README
1
README
@ -69,6 +69,7 @@ Enter Enter key-frame value
|
||||
Del Delete key-frame
|
||||
i Enumerate interpolation mode
|
||||
k Toggle bookmark
|
||||
Shift+PgUp/PgDn Go to prev/next bookmark
|
||||
Space Pause/Resume demo
|
||||
Shift+Up/Down/Left/Right Select
|
||||
Ctrl+C Copy
|
||||
|
||||
@ -287,6 +287,29 @@ public:
|
||||
|
||||
std::wstring fileName;
|
||||
|
||||
int nextRowBookmark(int row) const
|
||||
{
|
||||
std::set<int>::const_iterator it = rowBookmarks.upper_bound(row);
|
||||
if (it == rowBookmarks.end())
|
||||
return -1;
|
||||
return *it;
|
||||
}
|
||||
|
||||
int prevRowBookmark(int row) const
|
||||
{
|
||||
std::set<int>::const_iterator it = rowBookmarks.lower_bound(row);
|
||||
if (it == rowBookmarks.end()) {
|
||||
std::set<int>::const_reverse_iterator it = rowBookmarks.rend();
|
||||
if (it == rowBookmarks.rend())
|
||||
return -1;
|
||||
return *it;
|
||||
} else
|
||||
it--;
|
||||
if (it == rowBookmarks.end())
|
||||
return -1;
|
||||
return *it;
|
||||
}
|
||||
|
||||
private:
|
||||
std::set<int> rowBookmarks;
|
||||
std::vector<size_t> trackOrder;
|
||||
|
||||
@ -993,23 +993,31 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
||||
break;
|
||||
|
||||
case VK_PRIOR:
|
||||
if (GetKeyState(VK_CONTROL) < 0)
|
||||
{
|
||||
if (GetKeyState(VK_CONTROL) < 0) {
|
||||
float bias = 10.0f;
|
||||
if (GetKeyState(VK_SHIFT) < 0) bias = 100.0f;
|
||||
if (GetKeyState(VK_SHIFT) < 0)
|
||||
bias = 100.0f;
|
||||
editBiasValue(bias);
|
||||
}
|
||||
else setEditRow(editRow - 0x10);
|
||||
} else if (GetKeyState(VK_SHIFT) < 0) {
|
||||
int row = doc->prevRowBookmark(editRow);
|
||||
if (row >= 0)
|
||||
setEditRow(row);
|
||||
} else
|
||||
setEditRow(editRow - 0x10);
|
||||
break;
|
||||
|
||||
case VK_NEXT:
|
||||
if (GetKeyState(VK_CONTROL) < 0)
|
||||
{
|
||||
if (GetKeyState(VK_CONTROL) < 0) {
|
||||
float bias = 10.0f;
|
||||
if (GetKeyState(VK_SHIFT) < 0) bias = 100.0f;
|
||||
if (GetKeyState(VK_SHIFT) < 0)
|
||||
bias = 100.0f;
|
||||
editBiasValue(-bias);
|
||||
}
|
||||
else setEditRow(editRow + 0x10);
|
||||
} else if (GetKeyState(VK_SHIFT) < 0) {
|
||||
int row = doc->nextRowBookmark(editRow);
|
||||
if (row >= 0)
|
||||
setEditRow(row);
|
||||
} else
|
||||
setEditRow(editRow + 0x10);
|
||||
break;
|
||||
|
||||
case VK_HOME:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user