aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx13
-rw-r--r--src/Editor.h1
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;