diff options
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index d11de5e72..e9489123e 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -679,8 +679,7 @@ void Editor::RedrawSelMargin(int line, bool allAfter) { PRectangle rcSelMargin = GetClientRectangle(); rcSelMargin.right = rcSelMargin.left + vs.fixedColumnWidth; if (line != -1) { - int position = pdoc->LineStart(line); - PRectangle rcLine = RectangleFromRange(position, position); + PRectangle rcLine = RectangleFromRange(Range(pdoc->LineStart(line))); // Inflate line rectangle if there are image markers with height larger than line height if (vs.largestMarkerHeight > vs.lineHeight) { @@ -710,16 +709,9 @@ void Editor::RedrawSelMargin(int line, bool allAfter) { } } -PRectangle Editor::RectangleFromRange(int start, int end) { - int minPos = start; - if (minPos > end) - minPos = end; - int maxPos = start; - if (maxPos < end) - maxPos = end; - int minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(minPos)); - int lineDocMax = pdoc->LineFromPosition(maxPos); - int maxLine = cs.DisplayFromDoc(lineDocMax) + cs.GetHeight(lineDocMax) - 1; +PRectangle Editor::RectangleFromRange(Range r) { + const int minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(r.First())); + const int maxLine = cs.DisplayLastFromDoc(pdoc->LineFromPosition(r.Last())); PRectangle rcClient = GetTextRectangle(); PRectangle rc; const int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0; @@ -734,7 +726,7 @@ PRectangle Editor::RectangleFromRange(int start, int end) { } void Editor::InvalidateRange(int start, int end) { - RedrawRect(RectangleFromRange(start, end)); + RedrawRect(RectangleFromRange(Range(start, end))); } int Editor::CurrentPosition() const { @@ -1930,18 +1922,18 @@ void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) { } // Old code does not know about new markers needed to distinguish all cases - int folderOpenMid = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEROPENMID, + const int folderOpenMid = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEROPENMID, SC_MARKNUM_FOLDEROPEN); - int folderEnd = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEREND, + const int folderEnd = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEREND, SC_MARKNUM_FOLDER); while ((visibleLine < cs.LinesDisplayed()) && yposScreen < rc.bottom) { PLATFORM_ASSERT(visibleLine < cs.LinesDisplayed()); - int lineDoc = cs.DocFromDisplay(visibleLine); + const int lineDoc = cs.DocFromDisplay(visibleLine); PLATFORM_ASSERT(cs.GetVisible(lineDoc)); - bool firstSubLine = visibleLine == cs.DisplayFromDoc(lineDoc); - bool lastSubLine = visibleLine == (cs.DisplayFromDoc(lineDoc + 1) - 1); + const bool firstSubLine = visibleLine == cs.DisplayFromDoc(lineDoc); + const bool lastSubLine = visibleLine == cs.DisplayLastFromDoc(lineDoc); int marks = pdoc->GetMark(lineDoc); if (!firstSubLine) @@ -1951,10 +1943,10 @@ void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) { if (vs.ms[margin].mask & SC_MASK_FOLDERS) { // Decide which fold indicator should be displayed - int level = pdoc->GetLevel(lineDoc); - int levelNext = pdoc->GetLevel(lineDoc + 1); - int levelNum = level & SC_FOLDLEVELNUMBERMASK; - int levelNextNum = levelNext & SC_FOLDLEVELNUMBERMASK; + const int level = pdoc->GetLevel(lineDoc); + const int levelNext = pdoc->GetLevel(lineDoc + 1); + const int levelNum = level & SC_FOLDLEVELNUMBERMASK; + const int levelNextNum = levelNext & SC_FOLDLEVELNUMBERMASK; if (level & SC_FOLDLEVELHEADERFLAG) { if (firstSubLine) { if (levelNum < levelNextNum) { @@ -1984,9 +1976,9 @@ void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) { } } needWhiteClosure = false; - int firstFollowupLine = cs.DocFromDisplay(cs.DisplayFromDoc(lineDoc + 1)); - int firstFollowupLineLevel = pdoc->GetLevel(firstFollowupLine); - int secondFollowupLineLevelNum = pdoc->GetLevel(firstFollowupLine + 1) & SC_FOLDLEVELNUMBERMASK; + const int firstFollowupLine = cs.DocFromDisplay(cs.DisplayFromDoc(lineDoc + 1)); + const int firstFollowupLineLevel = pdoc->GetLevel(firstFollowupLine); + const int secondFollowupLineLevelNum = pdoc->GetLevel(firstFollowupLine + 1) & SC_FOLDLEVELNUMBERMASK; if (!cs.GetExpanded(lineDoc)) { if ((firstFollowupLineLevel & SC_FOLDLEVELWHITEFLAG) && (levelNum > secondFollowupLineLevelNum)) @@ -6894,7 +6886,7 @@ void Editor::CheckForChangeOutsidePaint(Range r) { if (!r.Valid()) return; - PRectangle rcRange = RectangleFromRange(r.start, r.end); + PRectangle rcRange = RectangleFromRange(r); PRectangle rcText = GetTextRectangle(); if (rcRange.top < rcText.top) { rcRange.top = rcText.top; |