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; | 
