diff options
Diffstat (limited to 'src/EditView.cxx')
| -rw-r--r-- | src/EditView.cxx | 32 | 
1 files changed, 15 insertions, 17 deletions
| diff --git a/src/EditView.cxx b/src/EditView.cxx index 650734ad1..e0a212f48 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -994,8 +994,11 @@ static ColourRGBA TextBackground(const EditModel &model, const ViewStyle &vsDraw  		(i >= ll->edgeColumn) &&  		(i < ll->numCharsBeforeEOL))  		return vsDraw.theEdge.colour; -	if (inHotspot && vsDraw.ElementColour(Element::HotSpotActiveBack)) -		return vsDraw.ElementColour(Element::HotSpotActiveBack)->Opaque(); +	if (inHotspot) { +		if (const ColourOptional colourHotSpotBack = vsDraw.ElementColour(Element::HotSpotActiveBack)) { +			return colourHotSpotBack->Opaque(); +		} +	}  	if (background && (styleMain != StyleBraceLight) && (styleMain != StyleBraceBad)) {  		return *background;  	} else { @@ -1853,9 +1856,8 @@ namespace {  void DrawWrapIndentAndMarker(Surface *surface, const ViewStyle &vsDraw, const LineLayout *ll,  	int xStart, PRectangle rcLine, ColourOptional background, DrawWrapMarkerFn customDrawWrapMarker,  	bool caretActive) { -	// default bgnd here.. -	surface->FillRectangleAligned(rcLine, Fill(background ? *background : -		vsDraw.styles[StyleDefault].back)); +	// default background here.. +	surface->FillRectangleAligned(rcLine, Fill(background.value_or(vsDraw.styles[StyleDefault].back)));  	if (vsDraw.IsLineFrameOpaque(caretActive, ll->containsCaret)) {  		// Draw left of frame under marker @@ -2154,8 +2156,9 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi  			// Hot-spot foreground  			const bool inHotspot = model.hotspot.Valid() && model.hotspot.ContainsCharacter(iDoc);  			if (inHotspot) { -				if (vsDraw.ElementColour(Element::HotSpotActive)) -					textFore = *vsDraw.ElementColour(Element::HotSpotActive); +				if (const ColourOptional colourHotSpot = vsDraw.ElementColour(Element::HotSpotActive)) { +					textFore = *colourHotSpot; +				}  			}  			if (vsDraw.indicatorsSetFore) {  				// At least one indicator sets the text colour so see if it applies to this segment @@ -2187,8 +2190,7 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi  			InSelection inSelection = vsDraw.selection.visible ? model.sel.CharacterInSelection(iDoc) : InSelection::inNone;  			if (FlagSet(vsDraw.caret.style, CaretStyle::Curses) && (inSelection == InSelection::inMain))  				inSelection = CharacterInCursesSelection(iDoc, model, vsDraw); -			const ColourOptional selectionFore = SelectionForeground(model, vsDraw, inSelection); -			if (selectionFore) { +			if (const ColourOptional selectionFore = SelectionForeground(model, vsDraw, inSelection)) {  				textFore = *selectionFore;  			}  			ColourRGBA textBack = TextBackground(model, vsDraw, ll, background, inSelection, inHotspot, styleMain, i); @@ -2314,10 +2316,8 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi  				PRectangle rcUL = rcSegment;  				rcUL.top = rcUL.top + vsDraw.maxAscent + 1;  				rcUL.bottom = rcUL.top + 1; -				if (vsDraw.ElementColour(Element::HotSpotActive)) -					surface->FillRectangleAligned(rcUL, Fill(*vsDraw.ElementColour(Element::HotSpotActive))); -				else -					surface->FillRectangleAligned(rcUL, Fill(textFore)); +				const ColourOptional colourHotSpot = vsDraw.ElementColour(Element::HotSpotActive); +				surface->FillRectangleAligned(rcUL, Fill(colourHotSpot.value_or(textFore)));  			} else if (vsDraw.styles[styleMain].underline) {  				PRectangle rcUL = rcSegment;  				rcUL.top = rcUL.top + vsDraw.maxAscent + 1; @@ -2509,8 +2509,7 @@ static void DrawFoldLines(Surface *surface, const EditModel &model, const ViewSt  		}  	}  	if (lastSubLine && model.pcs->GetVisible(line) && !model.pcs->GetVisible(line + 1)) { -		ColourOptional hiddenLineColour = vsDraw.ElementColour(Element::HiddenLine); -		if (hiddenLineColour) { +		if (const ColourOptional hiddenLineColour = vsDraw.ElementColour(Element::HiddenLine)) {  			surface->FillRectangleAligned(Side(rcLine, Edge::bottom, 1.0), *hiddenLineColour);  		}  	} @@ -2720,11 +2719,10 @@ void EditView::FillLineRemainder(Surface *surface, const EditModel &model, const  		eolInSelection = model.LineEndInSelection(line);  	} -	const ColourOptional background = vsDraw.Background(model.GetMark(line), model.caret.active, ll->containsCaret); -  	if (eolInSelection && vsDraw.selection.eolFilled && (line < model.pdoc->LinesTotal() - 1) && (vsDraw.selection.layer == Layer::Base)) {  		surface->FillRectangleAligned(rcArea, Fill(SelectionBackground(model, vsDraw, eolInSelection).Opaque()));  	} else { +		const ColourOptional background = vsDraw.Background(model.GetMark(line), model.caret.active, ll->containsCaret);  		if (background) {  			surface->FillRectangleAligned(rcArea, Fill(*background));  		} else if (vsDraw.styles[ll->styles[ll->numCharsInLine]].eolFilled) { | 
