aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--doc/ScintillaDoc.html7
-rw-r--r--include/Scintilla.h2
-rw-r--r--include/Scintilla.iface6
-rw-r--r--src/Editor.cxx13
-rw-r--r--src/Editor.h1
5 files changed, 28 insertions, 1 deletions
diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html
index eee4ced84..47b2bb501 100644
--- a/doc/ScintillaDoc.html
+++ b/doc/ScintillaDoc.html
@@ -1459,6 +1459,8 @@ struct TextToFind {
<a class="message" href="#SCI_GETADDITIONALCARETFORE">SCI_GETADDITIONALCARETFORE</a><br />
<a class="message" href="#SCI_SETADDITIONALCARETSBLINK">SCI_SETADDITIONALCARETSBLINK(bool additionalCaretsBlink)</a><br />
<a class="message" href="#SCI_GETADDITIONALCARETSBLINK">SCI_GETADDITIONALCARETSBLINK</a><br />
+ <a class="message" href="#SCI_SETADDITIONALCARETSVISIBLE">SCI_SETADDITIONALCARETSVISIBLE(bool additionalCaretsVisible)</a><br />
+ <a class="message" href="#SCI_GETADDITIONALCARETSVISIBLE">SCI_GETADDITIONALCARETSVISIBLE</a><br />
<br />
<a class="message" href="#SCI_SWAPMAINANCHORCARET">SCI_SWAPMAINANCHORCARET</a><br />
@@ -1597,6 +1599,11 @@ struct TextToFind {
<a class="message" href="#SCI_GETCARETPERIOD"><code>SCI_GETCARETPERIOD</code></a>.</p>
<p>
+ <b id="SCI_SETADDITIONALCARETSVISIBLE">SCI_SETADDITIONALCARETSVISIBLE(bool additionalCaretsVisible)</b><br />
+ <b id="SCI_GETADDITIONALCARETSVISIBLE">SCI_GETADDITIONALCARETSVISIBLE</b><br />
+ Determine whether to show additional carets (defaults to <code>true</code>).
+
+ <p>
<b id="SCI_SWAPMAINANCHORCARET">SCI_SWAPMAINANCHORCARET</b><br />
<b id="SCI_ROTATESELECTION">SCI_ROTATESELECTION</b><br />
These commands may be assigned to keys to make it possible to manipulate multiple selections.
diff --git a/include/Scintilla.h b/include/Scintilla.h
index b5b14678f..b9871ecb8 100644
--- a/include/Scintilla.h
+++ b/include/Scintilla.h
@@ -730,6 +730,8 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
#define SCI_GETADDITIONALSELECTIONTYPING 2566
#define SCI_SETADDITIONALCARETSBLINK 2567
#define SCI_GETADDITIONALCARETSBLINK 2568
+#define SCI_SETADDITIONALCARETSVISIBLE 2608
+#define SCI_GETADDITIONALCARETSVISIBLE 2609
#define SCI_GETSELECTIONS 2570
#define SCI_CLEARSELECTIONS 2571
#define SCI_SETSELECTION 2572
diff --git a/include/Scintilla.iface b/include/Scintilla.iface
index 0b31c8d5b..fd89aa3f8 100644
--- a/include/Scintilla.iface
+++ b/include/Scintilla.iface
@@ -1951,6 +1951,12 @@ set void SetAdditionalCaretsBlink=2567(bool additionalCaretsBlink,)
# Whether additional carets will blink
get bool GetAdditionalCaretsBlink=2568(,)
+# Set whether additional carets are visible
+set void SetAdditionalCaretsVisible=2608(bool additionalCaretsBlink,)
+
+# Whether additional carets are visible
+get bool GetAdditionalCaretsVisible=2609(,)
+
# How many selections are there?
get int GetSelections=2570(,)
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;