diff options
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 6969458d3..e6f44f5df 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -1230,12 +1230,14 @@ void Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) { if (line == lineCaret) { int offset = Platform::Minimum(posCaret - posLineStart, LineLayout::maxLineLength); int xposCaret = ll.positions[offset] + xStart; - int widthOverstrikeCaret = - ll.positions[offset + 1] - ll.positions[offset]; - if (posCaret == pdoc->Length()) // At end of document + int widthOverstrikeCaret = 1; + if (posCaret == pdoc->Length()) { // At end of document widthOverstrikeCaret = vs.aveCharWidth; - if ((posCaret - posLineStart) >= ll.numCharsInLine) // At end of line + } else if ((posCaret - posLineStart) >= ll.numCharsInLine) { // At end of line widthOverstrikeCaret = vs.aveCharWidth; + } else { + widthOverstrikeCaret = ll.positions[offset + 1] - ll.positions[offset]; + } if (widthOverstrikeCaret < 3) // Make sure its visible widthOverstrikeCaret = 3; if (((caret.active && caret.on) || (posDrag >= 0)) && xposCaret >= 0) { |