diff options
-rw-r--r-- | src/Editor.cxx | 73 | ||||
-rw-r--r-- | src/Editor.h | 3 | ||||
-rw-r--r-- | win32/scintilla_vc6.mak | 25 |
3 files changed, 62 insertions, 39 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 0c540d513..8f5918bd1 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -1793,6 +1793,42 @@ void Editor::DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, highlight ? *pixmapIndentGuideHighlight : *pixmapIndentGuide); } +void Editor::DrawEOL(Surface *surface, ViewStyle &vsDraw, PRectangle rcLine, LineLayout *ll, + int line, int lineEnd, int xStart, int subLine, int subLineStart, + bool overrideBackground, ColourAllocated background) { + + int styleMask = pdoc->stylingBitsMask; + PRectangle rcSegment = rcLine; + + // Fill in a PRectangle representing the end of line characters + int xEol = ll->positions[lineEnd] - subLineStart; + rcSegment.left = xEol + xStart; + rcSegment.right = xEol + vsDraw.aveCharWidth + xStart; + int posLineEnd = pdoc->LineStart(line + 1); + bool eolInSelection = (subLine == (ll->lines-1)) && + (posLineEnd > ll->selStart) && (posLineEnd <= ll->selEnd) && (ll->selStart != ll->selEnd); + if (eolInSelection && vsDraw.selbackset && (line < pdoc->LinesTotal() - 1)) { + if (primarySelection) + surface->FillRectangle(rcSegment, vsDraw.selbackground.allocated); + else + surface->FillRectangle(rcSegment, vsDraw.selbackground2.allocated); + } else if (overrideBackground) { + surface->FillRectangle(rcSegment, background); + } else { + surface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].back.allocated); + } + + rcSegment.left = xEol + vsDraw.aveCharWidth + xStart; + rcSegment.right = rcLine.right; + if (overrideBackground) { + surface->FillRectangle(rcSegment, background); + } else if (vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].eolFilled) { + surface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].back.allocated); + } else { + surface->FillRectangle(rcSegment, vsDraw.styles[STYLE_DEFAULT].back.allocated); + } +} + void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVisible, int xStart, PRectangle rcLine, LineLayout *ll, int subLine) { @@ -1848,7 +1884,6 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis indentWidth = pdoc->tabInChars * vsDraw.spaceWidth; int posLineStart = pdoc->LineStart(line); - int posLineEnd = pdoc->LineStart(line + 1); int startseg = ll->LineStart(subLine); int subLineStart = ll->positions[startseg]; @@ -1911,6 +1946,12 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis startseg = i + 1; } } + + if (twoPhaseDraw) { + DrawEOL(surface, vsDraw, rcLine, ll, line, lineEnd, + xStart, subLine, subLineStart, overrideBackground, background); + } + inIndentation = subLine == 0; // Do not handle indentation except on first subline. startseg = ll->LineStart(subLine); // Foreground drawing loop @@ -2077,33 +2118,9 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis } // End of the drawing of the current line - int styleMask = pdoc->stylingBitsMask; - - // Fill in a PRectangle representing the end of line characters - int xEol = ll->positions[lineEnd] - subLineStart; - rcSegment.left = xEol + xStart; - rcSegment.right = xEol + vsDraw.aveCharWidth + xStart; - bool eolInSelection = (subLine == (ll->lines-1)) && - (posLineEnd > ll->selStart) && (posLineEnd <= ll->selEnd) && (ll->selStart != ll->selEnd); - if (eolInSelection && vsDraw.selbackset && (line < pdoc->LinesTotal() - 1)) { - if (primarySelection) - surface->FillRectangle(rcSegment, vsDraw.selbackground.allocated); - else - surface->FillRectangle(rcSegment, vsDraw.selbackground2.allocated); - } else if (overrideBackground) { - surface->FillRectangle(rcSegment, background); - } else { - surface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].back.allocated); - } - - rcSegment.left = xEol + vsDraw.aveCharWidth + xStart; - rcSegment.right = rcLine.right; - if (overrideBackground) { - surface->FillRectangle(rcSegment, background); - } else if (vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].eolFilled) { - surface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].back.allocated); - } else { - surface->FillRectangle(rcSegment, vsDraw.styles[STYLE_DEFAULT].back.allocated); + if (!twoPhaseDraw) { + DrawEOL(surface, vsDraw, rcLine, ll, line, lineEnd, + xStart, subLine, subLineStart, overrideBackground, background); } if (vsDraw.edgeState == EDGE_LINE) { diff --git a/src/Editor.h b/src/Editor.h index ed5cc6612..6304f078a 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -353,6 +353,9 @@ protected: // ScintillaBase subclass needs access to much of Editor int width=LineLayout::wrapWidthInfinite); ColourAllocated TextBackground(ViewStyle &vsDraw, bool overrideBackground, ColourAllocated background, bool inSelection, int styleMain, int i, LineLayout *ll); void DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, int start, PRectangle rcSegment, bool highlight); + void DrawEOL(Surface *surface, ViewStyle &vsDraw, PRectangle rcLine, LineLayout *ll, + int line, int lineEnd, int xStart, int subLine, int subLineStart, + bool overrideBackground, ColourAllocated background); void DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVisible, int xStart, PRectangle rcLine, LineLayout *ll, int subLine=0); void Paint(Surface *surfaceWindow, PRectangle rcArea); diff --git a/win32/scintilla_vc6.mak b/win32/scintilla_vc6.mak index 270d0ce2b..bcd1c4352 100644 --- a/win32/scintilla_vc6.mak +++ b/win32/scintilla_vc6.mak @@ -105,7 +105,8 @@ SOBJS=\ $(DIR_O)\ScintillaWin.obj \ $(DIR_O)\Style.obj \ $(DIR_O)\UniConversion.obj \ - $(DIR_O)\ViewStyle.obj + $(DIR_O)\ViewStyle.obj \ + $(DIR_O)\XPM.obj #++Autogenerated -- run src/LexGen.py to regenerate #**LEXOBJS=\\\n\(\t$(DIR_O)\\\*.obj \\\n\) @@ -157,6 +158,7 @@ LOBJS=\ $(DIR_O)\StyleContext.obj \ $(DIR_O)\UniConversion.obj \ $(DIR_O)\ViewStyle.obj \ + $(DIR_O)\XPM.obj \ $(LEXOBJS) $(DIR_O)\ScintRes.res : ScintRes.rc @@ -224,7 +226,7 @@ $(DIR_O)\Editor.obj: ../src/Editor.cxx ../include/Platform.h \ ../include/Scintilla.h ../src/ContractionState.h ../src/SVector.h \ ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h \ ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \ - ../src/Document.h ../src/Editor.h + ../src/Document.h ../src/Editor.h ../src/XPM.h $(DIR_O)\ExternalLexer.obj: ExternalLexer.cxx ../include/Platform.h \ ../include/SciLexer.h ../include/PropSet.h ../include/SString.h \ ../include/Accessor.h ../src/DocumentAccessor.h ../include/KeyWords.h \ @@ -288,9 +290,9 @@ $(DIR_O)\LexVB.obj: ..\src\LexVB.cxx $(LEX_HEADERS) #--Autogenerated -- end of automatically generated section $(DIR_O)\LineMarker.obj: ../src/LineMarker.cxx ../include/Platform.h \ - ../include/Scintilla.h ../src/LineMarker.h + ../include/Scintilla.h ../src/LineMarker.h ../src/XPM.h $(DIR_O)\PlatWin.obj: PlatWin.cxx ../include/Platform.h PlatformRes.h \ - ../src/UniConversion.h + ../src/UniConversion.h ../src/XPM.h $(DIR_O)\PropSet.obj: ../src/PropSet.cxx ../include/Platform.h \ ../include/PropSet.h ../include/SString.h $(DIR_O)\RESearch.obj: ../src/RESearch.cxx ../src/RESearch.h @@ -300,23 +302,23 @@ $(DIR_O)\ScintillaBase.obj: ../src/ScintillaBase.cxx ../include/Platform.h \ ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h \ ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \ ../src/AutoComplete.h ../src/Document.h ../src/Editor.h \ - ../src/ScintillaBase.h + ../src/ScintillaBase.h ../src/XPM.h $(DIR_O)\ScintillaBaseL.obj: ..\src\ScintillaBase.cxx ..\include\Platform.h ..\include\Scintilla.h ..\include\SciLexer.h \ ..\src\ContractionState.h ..\src\CellBuffer.h ..\src\CallTip.h ..\src\KeyMap.h ..\src\Indicator.h \ ..\src\LineMarker.h ..\src\Style.h ..\src\AutoComplete.h ..\src\ViewStyle.h ..\src\Document.h ..\src\Editor.h \ - ..\src\ScintillaBase.h ..\include\PropSet.h \ - ..\include\SString.h ..\include\Accessor.h ..\src\DocumentAccessor.h ..\include\KeyWords.h + ..\src\ScintillaBase.h ..\include\PropSet.h ..\include\SString.h ..\include\Accessor.h \ + ..\src\DocumentAccessor.h ..\include\KeyWords.h ../src/XPM.h $(DIR_O)\ScintillaWin.obj: ScintillaWin.cxx ../include/Platform.h \ ../include/Scintilla.h ../include/SString.h ../src/ContractionState.h \ ../src/SVector.h ../src/CellBuffer.h ../src/CallTip.h ../src/KeyMap.h \ ../src/Indicator.h ../src/LineMarker.h ../src/Style.h \ ../src/AutoComplete.h ../src/ViewStyle.h ../src/Document.h \ - ../src/Editor.h ../src/ScintillaBase.h ../src/UniConversion.h + ../src/Editor.h ../src/ScintillaBase.h ../src/UniConversion.h ../src/XPM.h $(DIR_O)\ScintillaWinL.obj: ScintillaWin.cxx ..\include\Platform.h ..\include\Scintilla.h ..\include\SciLexer.h \ ..\src\ContractionState.h ..\src\CellBuffer.h ..\src\CallTip.h ..\src\KeyMap.h ..\src\Indicator.h \ ..\src\LineMarker.h ..\src\Style.h ..\src\AutoComplete.h ..\src\ViewStyle.h ..\src\Document.h ..\src\Editor.h \ ..\src\ScintillaBase.h ..\include\PropSet.h \ - ..\include\SString.h ..\include\Accessor.h ..\include\KeyWords.h ..\src\UniConversion.h + ..\include\SString.h ..\include\Accessor.h ..\include\KeyWords.h ..\src\UniConversion.h ../src/XPM.h $(DIR_O)\ScintillaWinS.obj: ScintillaWin.cxx ..\include\Platform.h ..\include\Scintilla.h \ ..\src\ContractionState.h ..\src\CellBuffer.h ..\src\CallTip.h ..\src\KeyMap.h ..\src\Indicator.h \ ..\src\LineMarker.h ..\src\Style.h ..\src\AutoComplete.h ..\src\ViewStyle.h ..\src\Document.h ..\src\Editor.h \ @@ -329,7 +331,8 @@ $(DIR_O)\StyleContext.obj: ../src/StyleContext.cxx ../include/Platform.h \ $(DIR_O)\UniConversion.obj: ../src/UniConversion.cxx ../src/UniConversion.h $(DIR_O)\ViewStyle.obj: ../src/ViewStyle.cxx ../include/Platform.h \ ../include/Scintilla.h ../src/Indicator.h ../src/LineMarker.h \ - ../src/Style.h ../src/ViewStyle.h + ../src/Style.h ../src/ViewStyle.h ../src/XPM.h $(DIR_O)\WindowAccessor.obj: ../src/WindowAccessor.cxx ../include/Platform.h \ ../include/PropSet.h ../include/SString.h ../include/Accessor.h \ - ../include/WindowAccessor.h ../include/Scintilla.h
\ No newline at end of file + ../include/WindowAccessor.h ../include/Scintilla.h +$(DIR_O)\XPM.obj: ../src/XPM.cxx ../include/Platform.h ../src/XPM.h |