From 4023128077c54e37ea9c35e2ab56abf10b36c9ba Mon Sep 17 00:00:00 2001 From: Zufu Liu Date: Thu, 19 Mar 2020 08:54:52 +1100 Subject: Backport: Feature [feature-requests:1302] Simplify DrawCarets. Backport of changeset 8011:bf8531a046ff. --- src/EditView.cxx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/EditView.cxx b/src/EditView.cxx index f2b4e6c03..300209f0f 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -1355,18 +1355,17 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt const bool caretVisibleState = additionalCaretsVisible || mainCaret; if ((xposCaret >= 0) && vsDraw.IsCaretVisible() && (drawDrag || (caretBlinkState && caretVisibleState))) { - bool caretAtEOF = false; - bool caretAtEOL = false; + bool canDrawBlockCaret = true; bool drawBlockCaret = false; XYPOSITION widthOverstrikeCaret; XYPOSITION caretWidthOffset = 0; PRectangle rcCaret = rcLine; if (posCaret.Position() == model.pdoc->Length()) { // At end of document - caretAtEOF = true; + canDrawBlockCaret = false; widthOverstrikeCaret = vsDraw.aveCharWidth; } else if ((posCaret.Position() - posLineStart) >= ll->numCharsInLine) { // At end of line - caretAtEOL = true; + canDrawBlockCaret = false; widthOverstrikeCaret = vsDraw.aveCharWidth; } else { const int widthChar = model.pdoc->LenChar(posCaret.Position()); @@ -1391,7 +1390,7 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt } else if ((caretShape == ViewStyle::CaretShape::block) || imeCaretBlockOverride) { /* Block caret */ rcCaret.left = xposCaret; - if (!caretAtEOL && !caretAtEOF && (ll->chars[offset] != '\t') && !(IsControlCharacter(ll->chars[offset]))) { + if (canDrawBlockCaret && !(IsControlCharacter(ll->chars[offset]))) { drawBlockCaret = true; rcCaret.right = xposCaret + widthOverstrikeCaret; } else { -- cgit v1.2.3