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