diff --git a/ogl_editor/src/Editor.c b/ogl_editor/src/Editor.c index 6f4f2ff..6b50f34 100644 --- a/ogl_editor/src/Editor.c +++ b/ogl_editor/src/Editor.c @@ -448,8 +448,24 @@ bool Editor_keyDown(int key, int modifiers) case EMGUI_ARROW_DOWN: { + const int active_track = getActiveTrack(); int row = row_pos; + if (modifiers & EMGUI_KEY_CTRL) + { + struct sync_track* t = getTracks()[active_track]; + + if (t->keys) + { + int idx = key_idx_floor(t, row); + + if (idx >= 0) + viewInfo->rowPos = t->keys[emini(idx + 1, t->num_keys - 1)].row; + } + + break; + } + row += modifiers & EMGUI_KEY_ALT ? 8 : 1; if ((modifiers & EMGUI_KEY_COMMAND) || row > viewInfo->endRow) @@ -475,6 +491,19 @@ bool Editor_keyDown(int key, int modifiers) { int row = row_pos; + if (modifiers & EMGUI_KEY_CTRL) + { + struct sync_track* t = getTracks()[active_track]; + + if (t->keys) + { + int idx = key_idx_floor(t, row); + viewInfo->rowPos = t->keys[emaxi(idx - 1, 0)].row; + } + + break; + } + row -= modifiers & EMGUI_KEY_ALT ? 8 : 1; if ((modifiers & EMGUI_KEY_COMMAND) || row < viewInfo->startRow)