diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2013-12-15 14:14:52 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2013-12-15 14:14:52 +0000 |
| commit | 9b6639eb2754a72d5f6ae35055b750da10b262c1 (patch) | |
| tree | c6e1ae96d6b5467e4663bbf14d7aaf46bd811f8c /src/input_handler.cc | |
| parent | 4e3d551426d840eb10f8ba0ac4f448f31d09ccc6 (diff) | |
Remove Editor::move_selections
Diffstat (limited to 'src/input_handler.cc')
| -rw-r--r-- | src/input_handler.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc index 79501e59..c7f809b2 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -923,22 +923,22 @@ public: erase(); else if (key == Key::Left) { - m_edition.editor().move_selections(-1_char, SelectMode::Replace); + move(-1_char); moved = true; } else if (key == Key::Right) { - m_edition.editor().move_selections(1_char, SelectMode::Replace); + move(1_char); moved = true; } else if (key == Key::Up) { - m_edition.editor().move_selections(-1_line, SelectMode::Replace); + move(-1_line); moved = true; } else if (key == Key::Down) { - m_edition.editor().move_selections(1_line, SelectMode::Replace); + move(1_line); moved = true; } else if (key.modifiers == Key::Modifiers::None) @@ -992,6 +992,19 @@ private: } } + template<typename Type> + void move(Type offset) + { + auto& selections = context().editor().selections(); + for (auto& sel : selections) + { + auto last = context().has_window() ? context().window().offset_coord(sel.last(), offset) + : context().buffer().offset_coord(sel.last(), offset); + sel.first() = sel.last() = last; + } + selections.sort_and_merge_overlapping(); + } + void insert(memoryview<String> strings) { auto& buffer = m_edition.editor().buffer(); |
