diff options
Diffstat (limited to 'src/EditView.cxx')
-rw-r--r-- | src/EditView.cxx | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/EditView.cxx b/src/EditView.cxx index 0bde50833..d107ac3a9 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -370,10 +370,11 @@ constexpr bool IsControlCharacter(int ch) noexcept { * Copy the given @a line and its styles from the document into local arrays. * Also determine the x position at which each character starts. */ -void EditView::LayoutLine(const EditModel &model, Sci::Line line, Surface *surface, const ViewStyle &vstyle, LineLayout *ll, int width) { +void EditView::LayoutLine(const EditModel &model, Surface *surface, const ViewStyle &vstyle, LineLayout *ll, int width) { if (!ll) return; + const Sci::Line line = ll->LineNumber(); PLATFORM_ASSERT(line < model.pdoc->LinesTotal()); PLATFORM_ASSERT(ll->chars); const Sci::Position posLineStart = model.pdoc->LineStart(line); @@ -637,7 +638,7 @@ Point EditView::LocationFromPosition(Surface *surface, const EditModel &model, S const Sci::Line lineVisible = model.pcs->DisplayFromDoc(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { - LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); + LayoutLine(model, surface, vs, ll, model.wrapWidth); const int posInLine = static_cast<int>(pos.Position() - posLineStart); pt = ll->PointFromPosition(posInLine, vs.lineHeight, pe); pt.x += vs.textStart - model.xOffset; @@ -677,7 +678,7 @@ Range EditView::RangeDisplayLine(Surface *surface, const EditModel &model, Sci:: const Sci::Position positionLineStart = model.pdoc->LineStart(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { - LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); + LayoutLine(model, surface, vs, ll, model.wrapWidth); const Sci::Line lineStartSet = model.pcs->DisplayFromDoc(lineDoc); const int subLine = static_cast<int>(lineVisible - lineStartSet); if (subLine < ll->lines) { @@ -708,7 +709,7 @@ SelectionPosition EditView::SPositionFromLocation(Surface *surface, const EditMo const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { - LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); + LayoutLine(model, surface, vs, ll, model.wrapWidth); const Sci::Line lineStartSet = model.pcs->DisplayFromDoc(lineDoc); const int subLine = static_cast<int>(visibleLine - lineStartSet); if (subLine < ll->lines) { @@ -760,7 +761,7 @@ SelectionPosition EditView::SPositionFromLineX(Surface *surface, const EditModel AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); - LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); + LayoutLine(model, surface, vs, ll, model.wrapWidth); const Range rangeSubLine = ll->SubLineRange(0, LineLayout::Scope::visibleOnly); const XYPOSITION subLineStart = ll->positions[rangeSubLine.start]; const Sci::Position positionInLine = ll->FindPositionFromX(x + subLineStart, rangeSubLine, false); @@ -780,7 +781,7 @@ Sci::Line EditView::DisplayFromPosition(Surface *surface, const EditModel &model Sci::Line lineDisplay = model.pcs->DisplayFromDoc(lineDoc); AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model)); if (surface && ll) { - LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth); + LayoutLine(model, surface, vs, ll, model.wrapWidth); const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc); const Sci::Position posInLine = pos - posLineStart; lineDisplay--; // To make up for first increment ahead. @@ -799,7 +800,7 @@ Sci::Position EditView::StartEndDisplayLine(Surface *surface, const EditModel &m Sci::Position posRet = INVALID_POSITION; if (surface && ll) { const Sci::Position posLineStart = model.pdoc->LineStart(line); - LayoutLine(model, line, surface, vs, ll, model.wrapWidth); + LayoutLine(model, surface, vs, ll, model.wrapWidth); const Sci::Position posInLine = pos - posLineStart; if (posInLine <= ll->maxLineLength) { for (int subLine = 0; subLine < ll->lines; subLine++) { @@ -2344,7 +2345,7 @@ void EditView::PaintText(Surface *surfaceWindow, const EditModel &model, PRectan if (lineDoc != lineDocPrevious) { ll.Set(nullptr); ll.Set(RetrieveLineLayout(lineDoc, model)); - LayoutLine(model, lineDoc, surface, vsDraw, ll, model.wrapWidth); + LayoutLine(model, surface, vsDraw, ll, model.wrapWidth); lineDocPrevious = lineDoc; } #if defined(TIME_PAINTING) @@ -2610,8 +2611,8 @@ Sci::Position EditView::FormatRange(bool draw, const Sci_RangeToFormat *pfr, Sur // Copy this line and its styles from the document into local arrays // and determine the x position at which each character starts. - LineLayout ll(static_cast<int>(model.pdoc->LineStart(lineDoc + 1) - model.pdoc->LineStart(lineDoc) + 1)); - LayoutLine(model, lineDoc, surfaceMeasure, vsPrint, &ll, widthPrint); + LineLayout ll(lineDoc, static_cast<int>(model.pdoc->LineStart(lineDoc + 1) - model.pdoc->LineStart(lineDoc) + 1)); + LayoutLine(model, surfaceMeasure, vsPrint, &ll, widthPrint); ll.containsCaret = false; |