aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r--src/Editor.cxx12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 1c3437b7e..bd5a0b2c1 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -516,10 +516,14 @@ void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) {
}
PRectangle Editor::RectangleFromRange(Range r, int overlap) {
- const Sci::Line minLine = pcs->DisplayFromDoc(
- pdoc->SciLineFromPosition(r.First()));
- const Sci::Line maxLine = pcs->DisplayLastFromDoc(
- pdoc->SciLineFromPosition(r.Last()));
+ const Sci::Line docLineFirst = pdoc->SciLineFromPosition(r.First());
+ const Sci::Line minLine = pcs->DisplayFromDoc(docLineFirst);
+ Sci::Line docLineLast = docLineFirst; // Common case where range is wholly in one document line
+ if (r.Last() >= pdoc->LineStart(docLineFirst + 1)) {
+ // Range covers multiple lines so need last line
+ docLineLast = pdoc->SciLineFromPosition(r.Last());
+ }
+ const Sci::Line maxLine = pcs->DisplayLastFromDoc(docLineLast);
const PRectangle rcClientDrawing = GetClientDrawingRectangle();
PRectangle rc;
const int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0;