aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 9f3999b08..eb31d40f9 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -4155,6 +4155,12 @@ int Editor::KeyDownWithModifiers(Keys key, KeyMod modifiers, bool *consumed) {
void Editor::Indent(bool forwards, bool lineIndent) {
UndoGroup ug(pdoc);
+ // Avoid problems with recalculating rectangular range multiple times by temporarily
+ // treating rectangular selection as multiple stream selection.
+ const Selection::SelTypes selType = sel.selType;
+ if (sel.IsRectangular()) {
+ sel.selType = Selection::SelTypes::stream;
+ }
for (size_t r=0; r<sel.Count(); r++) {
const Sci::Line lineOfAnchor =
pdoc->SciLineFromPosition(sel.Range(r).anchor.Position());
@@ -4231,6 +4237,8 @@ void Editor::Indent(bool forwards, bool lineIndent) {
}
}
}
+ sel.selType = selType; // Restore rectangular mode
+ ThinRectangularRange();
ContainerNeedsUpdate(Update::Selection);
}