summaryrefslogtreecommitdiff
path: root/src/editor.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-12-31 14:06:20 +0100
committerMaxime Coste <frrrwww@gmail.com>2012-12-31 14:06:20 +0100
commit76c32466427636b01485afd93cafe701ddc83d12 (patch)
tree5b65e7a78a32640f8e3ad095fcedd480f252a6c4 /src/editor.cc
parent4e69ec078ddbb508940b6eb2d6e51b13db59d316 (diff)
Add Editor::select(const Selection&, SelectMode)
Diffstat (limited to 'src/editor.cc')
-rw-r--r--src/editor.cc11
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)