diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Editor.cxx | 13 | ||||
-rw-r--r-- | src/Editor.h | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 8d48440e5..2825aeb5d 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -151,6 +151,7 @@ Editor::Editor() { multipleSelection = false; additionalSelectionTyping = false; additionalCaretsBlink = true; + additionalCaretsVisible = true; virtualSpaceOptions = SCVS_NONE; pixmapLine = Surface::Allocate(); @@ -3103,8 +3104,10 @@ void Editor::DrawCarets(Surface *surface, ViewStyle &vsDraw, int lineDoc, int xS if (lineStart != 0) // Wrapped xposCaret += ll->wrapIndent; } + bool caretBlinkState = (caret.active && caret.on) || (!additionalCaretsBlink && !mainCaret); + bool caretVisibleState = additionalCaretsVisible || mainCaret; if ((xposCaret >= 0) && (vsDraw.caretWidth > 0) && (vsDraw.caretStyle != CARETSTYLE_INVISIBLE) && - ((posDrag.IsValid()) || ((caret.active && caret.on) || (!additionalCaretsBlink && !mainCaret)))) { + ((posDrag.IsValid()) || (caretBlinkState && caretVisibleState))) { bool caretAtEOF = false; bool caretAtEOL = false; bool drawBlockCaret = false; @@ -8206,6 +8209,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_GETADDITIONALCARETSBLINK: return additionalCaretsBlink; + case SCI_SETADDITIONALCARETSVISIBLE: + additionalCaretsVisible = wParam != 0; + InvalidateCaret(); + break; + + case SCI_GETADDITIONALCARETSVISIBLE: + return additionalCaretsVisible; + case SCI_GETSELECTIONS: return sel.Count(); diff --git a/src/Editor.h b/src/Editor.h index 8f1ca9b7c..fb29b3df7 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -143,6 +143,7 @@ protected: // ScintillaBase subclass needs access to much of Editor bool multipleSelection; bool additionalSelectionTyping; bool additionalCaretsBlink; + bool additionalCaretsVisible; int virtualSpaceOptions; |