diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-12-31 14:06:20 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-12-31 14:06:20 +0100 |
| commit | 76c32466427636b01485afd93cafe701ddc83d12 (patch) | |
| tree | 5b65e7a78a32640f8e3ad095fcedd480f252a6c4 /src/editor.cc | |
| parent | 4e69ec078ddbb508940b6eb2d6e51b13db59d316 (diff) | |
Add Editor::select(const Selection&, SelectMode)
Diffstat (limited to 'src/editor.cc')
| -rw-r--r-- | src/editor.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/editor.cc b/src/editor.cc index 3a81a4d0..b1afe6ee 100644 --- a/src/editor.cc +++ b/src/editor.cc @@ -211,18 +211,21 @@ void Editor::remove_selection(int index) m_selections.erase(m_selections.begin() + index); } -void Editor::select(const BufferIterator& iterator, SelectMode mode) +void Editor::select(const Selection& selection, SelectMode mode) { if (mode == SelectMode::Replace) - m_selections = SelectionList{ {iterator, iterator} }; + m_selections = SelectionList{ selection }; else if (mode == SelectMode::Extend) { for (auto& sel : m_selections) - sel.last() = iterator; + sel.merge_with(selection); sort_and_merge_overlapping(m_selections); } else if (mode == SelectMode::Append) - assert(false); + { + m_selections.push_back(selection); + sort_and_merge_overlapping(m_selections); + } } void Editor::select(SelectionList selections) |
