diff options
Diffstat (limited to 'src/PositionCache.cxx')
| -rw-r--r-- | src/PositionCache.cxx | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/src/PositionCache.cxx b/src/PositionCache.cxx index 666399503..860a780d9 100644 --- a/src/PositionCache.cxx +++ b/src/PositionCache.cxx @@ -440,7 +440,7 @@ void BreakFinder::Insert(int val) {  }  BreakFinder::BreakFinder(const LineLayout *ll_, const Selection *psel, Range lineRange_, int posLineStart_, -	int xStart, bool breakForSelection, const Document *pdoc_, const SpecialRepresentations *preprs_) : +	int xStart, bool breakForSelection, const Document *pdoc_, const SpecialRepresentations *preprs_, const ViewStyle *pvsDraw) :  	ll(ll_),  	lineRange(lineRange_),  	posLineStart(posLineStart_), @@ -475,7 +475,17 @@ BreakFinder::BreakFinder(const LineLayout *ll_, const Selection *psel, Range lin  			}  		}  	} - +	if (pvsDraw && pvsDraw->indicatorsSetFore > 0) { +		for (Decoration *deco = pdoc->decorations.root; deco; deco = deco->next) { +			if (pvsDraw->indicators[deco->indicator].OverridesTextFore()) { +				int startPos = deco->rs.EndRun(posLineStart); +				while (startPos < (posLineStart + lineRange.end)) { +					Insert(startPos - posLineStart); +					startPos = deco->rs.EndRun(startPos); +				} +			} +		} +	}  	Insert(ll->edgeColumn);  	Insert(lineRange.end);  	saeNext = (!selAndEdge.empty()) ? selAndEdge[0] : -1; | 
