diff options
Diffstat (limited to 'src/Editor.cxx')
| -rw-r--r-- | src/Editor.cxx | 8 |
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); } |
