diff options
-rw-r--r-- | doc/ScintillaDoc.html | 7 | ||||
-rw-r--r-- | include/Scintilla.h | 2 | ||||
-rw-r--r-- | include/Scintilla.iface | 6 | ||||
-rw-r--r-- | src/Editor.cxx | 13 | ||||
-rw-r--r-- | src/Editor.h | 1 |
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; |