From a1ffcd3ddc32f913998b657ee71ffaa0f2b0ba30 Mon Sep 17 00:00:00 2001 From: Martin Fouilleul Date: Wed, 13 Sep 2023 16:21:59 +0200 Subject: [PATCH] [ui] macOS text edit shortcuts --- src/ui/ui.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/src/ui/ui.c b/src/ui/ui.c index 6f68fe3..a0138ca 100644 --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -2778,15 +2778,29 @@ const oc_ui_edit_command OC_UI_EDIT_COMMANDS_MACOS[] = { .direction = 1 }, //NOTE(martin): move start { - .key = OC_KEY_Q, + .key = OC_KEY_A, .mods = OC_KEYMOD_CTRL, .operation = OC_UI_EDIT_MOVE, .move = OC_UI_EDIT_MOVE_LINE, .direction = -1 }, + { .key = OC_KEY_UP, .operation = OC_UI_EDIT_MOVE, .move = OC_UI_EDIT_MOVE_LINE, .direction = -1 }, + + { .key = OC_KEY_UP, + .mods = OC_KEYMOD_CMD, + .operation = OC_UI_EDIT_MOVE, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = -1 }, + + { .key = OC_KEY_LEFT, + .mods = OC_KEYMOD_CMD, + .operation = OC_UI_EDIT_MOVE, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = -1 }, + //NOTE(martin): move end { .key = OC_KEY_E, @@ -2794,10 +2808,24 @@ const oc_ui_edit_command OC_UI_EDIT_COMMANDS_MACOS[] = { .operation = OC_UI_EDIT_MOVE, .move = OC_UI_EDIT_MOVE_LINE, .direction = 1 }, + { .key = OC_KEY_DOWN, .operation = OC_UI_EDIT_MOVE, .move = OC_UI_EDIT_MOVE_LINE, .direction = 1 }, + + { .key = OC_KEY_DOWN, + .mods = OC_KEYMOD_CMD, + .operation = OC_UI_EDIT_MOVE, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = 1 }, + + { .key = OC_KEY_RIGHT, + .mods = OC_KEYMOD_CMD, + .operation = OC_UI_EDIT_MOVE, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = 1 }, + //NOTE(martin): select one left { .key = OC_KEY_LEFT, @@ -2828,16 +2856,29 @@ const oc_ui_edit_command OC_UI_EDIT_COMMANDS_MACOS[] = { .direction = 1 }, //NOTE(martin): extend select to start { - .key = OC_KEY_Q, + .key = OC_KEY_A, .mods = OC_KEYMOD_CTRL | OC_KEYMOD_SHIFT, .operation = OC_UI_EDIT_SELECT_EXTEND, .move = OC_UI_EDIT_MOVE_LINE, .direction = -1 }, + { .key = OC_KEY_UP, .mods = OC_KEYMOD_SHIFT, .operation = OC_UI_EDIT_SELECT_EXTEND, .move = OC_UI_EDIT_MOVE_LINE, .direction = -1 }, + + { .key = OC_KEY_UP, + .mods = OC_KEYMOD_CMD | OC_KEYMOD_SHIFT, + .operation = OC_UI_EDIT_SELECT_EXTEND, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = -1 }, + + { .key = OC_KEY_LEFT, + .mods = OC_KEYMOD_CMD | OC_KEYMOD_SHIFT, + .operation = OC_UI_EDIT_SELECT_EXTEND, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = -1 }, //NOTE(martin): extend select to end { .key = OC_KEY_E, @@ -2845,14 +2886,28 @@ const oc_ui_edit_command OC_UI_EDIT_COMMANDS_MACOS[] = { .operation = OC_UI_EDIT_SELECT_EXTEND, .move = OC_UI_EDIT_MOVE_LINE, .direction = 1 }, + { .key = OC_KEY_DOWN, .mods = OC_KEYMOD_SHIFT, .operation = OC_UI_EDIT_SELECT_EXTEND, .move = OC_UI_EDIT_MOVE_LINE, .direction = 1 }, + + { .key = OC_KEY_DOWN, + .mods = OC_KEYMOD_CMD | OC_KEYMOD_SHIFT, + .operation = OC_UI_EDIT_SELECT_EXTEND, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = 1 }, + + { .key = OC_KEY_RIGHT, + .mods = OC_KEYMOD_CMD | OC_KEYMOD_SHIFT, + .operation = OC_UI_EDIT_SELECT_EXTEND, + .move = OC_UI_EDIT_MOVE_LINE, + .direction = 1 }, + //NOTE(martin): select all { - .key = OC_KEY_Q, + .key = OC_KEY_A, .mods = OC_KEYMOD_CMD, .operation = OC_UI_EDIT_SELECT_ALL, .move = OC_UI_EDIT_MOVE_NONE }, @@ -2945,6 +3000,7 @@ const oc_ui_edit_command OC_UI_EDIT_COMMANDS_WINDOWS[] = { .operation = OC_UI_EDIT_MOVE, .move = OC_UI_EDIT_MOVE_LINE, .direction = 1 }, + { .key = OC_KEY_DOWN, .operation = OC_UI_EDIT_MOVE, .move = OC_UI_EDIT_MOVE_LINE, @@ -3178,7 +3234,7 @@ oc_str32 oc_ui_edit_perform_operation(oc_ui_context* ui, oc_ui_edit_op operation case OC_UI_EDIT_MOVE: { bool wasSelectionEmpty = ui->editCursor == ui->editMark; - + //NOTE(martin): we place the cursor on the direction-most side of the selection // before performing the move u32 cursor = direction < 0 ? oc_min(ui->editCursor, ui->editMark) : oc_max(ui->editCursor, ui->editMark);