diff options
| author | Zufu Liu <unknown> | 2020-03-19 08:54:52 +1100 |
|---|---|---|
| committer | Zufu Liu <unknown> | 2020-03-19 08:54:52 +1100 |
| commit | 4023128077c54e37ea9c35e2ab56abf10b36c9ba (patch) | |
| tree | 375b4bf729657c789eceb4a1007ee51978ce0f9b | |
| parent | 63fcc3edaf7ca501fdf7d6d98bb0a5de24939f71 (diff) | |
| download | scintilla-mirror-4023128077c54e37ea9c35e2ab56abf10b36c9ba.tar.gz | |
Backport: Feature [feature-requests:1302] Simplify DrawCarets.
Backport of changeset 8011:bf8531a046ff.
| -rw-r--r-- | src/EditView.cxx | 9 |
1 files changed, 4 insertions, 5 deletions
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 { |
