summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/selection.cc18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/selection.cc b/src/selection.cc
index 99b21c3e..f893f21f 100644
--- a/src/selection.cc
+++ b/src/selection.cc
@@ -394,18 +394,18 @@ void SelectionList::for_each(ApplyFunc func, bool may_append)
}
else
{
- ForwardChangesTracker changes_tracker;
for (size_t index = 0; index < m_selections.size(); ++index)
{
- auto& sel = m_selections[index];
-
- sel.anchor() = changes_tracker.get_new_coord_tolerant(sel.anchor());
- sel.cursor() = changes_tracker.get_new_coord_tolerant(sel.cursor());
- kak_assert(m_buffer->is_valid(sel.anchor()) and m_buffer->is_valid(sel.cursor()));
-
- func(index, sel);
-
+ ForwardChangesTracker changes_tracker;
+ func(index, m_selections[index]);
changes_tracker.update(*m_buffer, m_timestamp);
+ for (size_t i = index + 1; i < m_selections.size(); ++i)
+ {
+ auto& sel = m_selections[i];
+ sel.anchor() = changes_tracker.get_new_coord_tolerant(sel.anchor());
+ sel.cursor() = changes_tracker.get_new_coord_tolerant(sel.cursor());
+ kak_assert(m_buffer->is_valid(sel.anchor()) and m_buffer->is_valid(sel.cursor()));
+ }
}
}