diff options
| -rw-r--r-- | src/Editor.cxx | 5 | ||||
| -rw-r--r-- | src/PositionCache.cxx | 5 | ||||
| -rw-r--r-- | src/PositionCache.h | 1 | 
3 files changed, 8 insertions, 3 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index 3373424da..b27775750 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -2915,8 +2915,7 @@ void Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) {  				// Draw the Caret  				if (lineDoc == lineCaret) {  					int offset = Platform::Minimum(posCaret - rangeLine.start, ll->maxLineLength); -					if ((offset >= ll->LineStart(subLine)) && -					        ((offset < ll->LineStart(subLine + 1)) || offset == ll->numCharsInLine)) { +					if (ll->InLine(offset, subLine)) {  						int xposCaret = ll->positions[offset] - ll->positions[ll->LineStart(subLine)] + xStart;  						if (actualWrapVisualStartIndent != 0) { @@ -2945,7 +2944,7 @@ void Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) {  							if (widthOverstrikeCaret < 3)	// Make sure its visible  								widthOverstrikeCaret = 3; -							if (offset > 0) +							if (offset > ll->LineStart(subLine))  								caretWidthOffset = 1;	// Move back so overlaps both character cells.  							if (posDrag >= 0) {  								/* Dragging text, use a line caret */ diff --git a/src/PositionCache.cxx b/src/PositionCache.cxx index 13140b779..354dddd1a 100644 --- a/src/PositionCache.cxx +++ b/src/PositionCache.cxx @@ -126,6 +126,11 @@ int LineLayout::LineLastVisible(int line) const {  	}  } +bool LineLayout::InLine(int offset, int line) const { +	return ((offset >= LineStart(line)) && (offset < LineStart(line + 1)) ||  +		((offset == numCharsInLine) && (line == (lines-1)))); +} +  void LineLayout::SetLineStart(int line, int start) {  	if ((line >= lenLineStarts) && (line != 0)) {  		int newMaxLines = line + 20; diff --git a/src/PositionCache.h b/src/PositionCache.h index ec1014c96..764702fce 100644 --- a/src/PositionCache.h +++ b/src/PositionCache.h @@ -59,6 +59,7 @@ public:  	void Invalidate(validLevel validity_);  	int LineStart(int line) const;  	int LineLastVisible(int line) const; +	bool InLine(int offset, int line) const;  	void SetLineStart(int line, int start);  	void SetBracesHighlight(Range rangeLine, Position braces[],  		char bracesMatchStyle, int xHighlight); | 
