From 1c48dba45ec12f0397d806d595207752ba30b746 Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 23 Jun 2020 11:24:47 +0200 Subject: [PATCH] Improved multiple cursor placement after left/right keys --- src/source_base.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/source_base.cpp b/src/source_base.cpp index fa19951..b4e1be6 100644 --- a/src/source_base.cpp +++ b/src/source_base.cpp @@ -1197,6 +1197,24 @@ bool Source::BaseView::on_key_press_event_extra_cursors(GdkEventKey *key) { return false; } + // Move cursors left/right of selection + if((key->keyval == GDK_KEY_Left || key->keyval == GDK_KEY_KP_Left) && (key->state & GDK_SHIFT_MASK) == 0 && get_buffer()->get_has_selection()) { + enable_multiple_cursors = false; + for(auto &extra_cursor : extra_cursors) { + auto iter = std::min(extra_cursor.insert->get_iter(), extra_cursor.selection_bound->get_iter()); + extra_cursor.move(iter, false); + } + return false; + } + if((key->keyval == GDK_KEY_Right || key->keyval == GDK_KEY_KP_Right) && (key->state & GDK_SHIFT_MASK) == 0 && get_buffer()->get_has_selection()) { + enable_multiple_cursors = false; + for(auto &extra_cursor : extra_cursors) { + auto iter = std::max(extra_cursor.insert->get_iter(), extra_cursor.selection_bound->get_iter()); + extra_cursor.move(iter, false); + } + return false; + } + return false; }