From 5d67cf8a95eeb492c3989a6c81daedad7b4a05f3 Mon Sep 17 00:00:00 2001 From: Neil Date: Sun, 3 Nov 2019 08:00:52 +1100 Subject: Backport: Bug [#2130]. Setting rectangular selection made faster by reusing surface. Backport of changeset 7758:703e30efe7bf. --- doc/ScintillaHistory.html | 4 ++++ src/Editor.cxx | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index b3a58e810..7d6566f60 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -566,6 +566,10 @@ Avoid unnecessary IME caret movement on Win32. Feature #1304. +
  • + Setting rectangular selection made faster. + Bug #2130. +
  • Release 3.11.1 diff --git a/src/Editor.cxx b/src/Editor.cxx index cb7269685..b26d19c8b 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -591,8 +591,11 @@ void Editor::SetRectangularRange() { const Sci::Line lineCaret = pdoc->SciLineFromPosition(sel.Rectangular().caret.Position()); const int increment = (lineCaret > lineAnchorRect) ? 1 : -1; + AutoSurface surface(this); for (Sci::Line line=lineAnchorRect; line != lineCaret+increment; line += increment) { - SelectionRange range(SPositionFromLineX(line, xCaret), SPositionFromLineX(line, xAnchor)); + SelectionRange range( + view.SPositionFromLineX(surface, *this, line, xCaret, vs), + view.SPositionFromLineX(surface, *this, line, xAnchor, vs)); if ((virtualSpaceOptions & SCVS_RECTANGULARSELECTION) == 0) range.ClearVirtualSpace(); if (line == lineAnchorRect) -- cgit v1.2.3