From e17f73fca0ac5d7ab1a26f92a3b68a9429925e15 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Tue, 1 Jan 2013 12:21:37 +1100 Subject: Feature #3592730. Option for caret line to be visible without focus. From Vidya Wasi. --- doc/ScintillaDoc.html | 8 ++++++++ doc/ScintillaHistory.html | 1 + include/Scintilla.h | 2 ++ include/Scintilla.iface | 6 ++++++ src/Editor.cxx | 12 ++++++++++-- src/ViewStyle.cxx | 2 ++ src/ViewStyle.h | 1 + 7 files changed, 30 insertions(+), 2 deletions(-) diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html index 99320a947..afce3aa88 100644 --- a/doc/ScintillaDoc.html +++ b/doc/ScintillaDoc.html @@ -2603,6 +2603,8 @@ struct Sci_TextToFind { SCI_GETCARETLINEBACK
SCI_SETCARETLINEBACKALPHA(int alpha)
SCI_GETCARETLINEBACKALPHA
+ SCI_SETCARETLINEVISIBLEALWAYS(bool alwaysVisible)
+ SCI_GETCARETLINEVISIBLEALWAYS
SCI_SETCARETPERIOD(int milliseconds)
SCI_GETCARETPERIOD
SCI_SETCARETSTYLE(int style)
@@ -2667,6 +2669,12 @@ struct Sci_TextToFind { the caret line is drawn after all other features so will affect the colour of all other features.

+

SCI_SETCARETLINEVISIBLEALWAYS(bool alwaysVisible)
+ SCI_GETCARETLINEVISIBLEALWAYS
+ Choose to make the caret line always visible even when the window is not in focus. + Default behaviour SCI_SETCARETLINEVISIBLEALWAYS(false) the caret line is only visible when the window is in focus. +

+

SCI_SETCARETPERIOD(int milliseconds)
SCI_GETCARETPERIOD
The rate at which the caret blinks can be set with SCI_SETCARETPERIOD which diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index c514c39d7..442e6df57 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -414,6 +414,7 @@ Sakshi Verma Joel B. Mohler Isiledhel + Vidya Wasi

diff --git a/include/Scintilla.h b/include/Scintilla.h index 67a44e24a..029102641 100644 --- a/include/Scintilla.h +++ b/include/Scintilla.h @@ -853,6 +853,8 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define SCI_FINDINDICATORHIDE 2642 #define SCI_VCHOMEDISPLAY 2652 #define SCI_VCHOMEDISPLAYEXTEND 2653 +#define SCI_GETCARETLINEVISIBLEALWAYS 2654 +#define SCI_SETCARETLINEVISIBLEALWAYS 2655 #define SCI_STARTRECORD 3001 #define SCI_STOPRECORD 3002 #define SCI_SETLEXER 4001 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index 2937480a0..d6df3cc9d 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -2267,6 +2267,12 @@ fun void VCHomeDisplay=2652(,) # Like VCHomeDisplay but extending selection to new caret position. fun void VCHomeDisplayExtend=2653(,) +# Is the caret line always visible? +get bool GetCaretLineVisibleAlways=2654(,) + +# Sets the caret line to always visible. +set void SetCaretLineVisibleAlways=2655(bool alwaysVisible,) + # Start notifying the container of all key presses and commands. fun void StartRecord=3001(,) diff --git a/src/Editor.cxx b/src/Editor.cxx index bb23e9e6d..34c195f3e 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -2743,7 +2743,7 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis // the color for the highest numbered one is used. bool overrideBackground = false; ColourDesired background; - if (caret.active && vsDraw.showCaretLineBackground && (vsDraw.caretLineAlpha == SC_ALPHA_NOALPHA) && ll->containsCaret) { + if ((caret.active || vsDraw.alwaysShowCaretLineBackground) && vsDraw.showCaretLineBackground && (vsDraw.caretLineAlpha == SC_ALPHA_NOALPHA) && ll->containsCaret) { overrideBackground = true; background = vsDraw.caretLineBackground; } @@ -3193,7 +3193,7 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis // Draw any translucent whole line states rcSegment = rcLine; - if (caret.active && vsDraw.showCaretLineBackground && ll->containsCaret) { + if ((caret.active || vsDraw.alwaysShowCaretLineBackground) && vsDraw.showCaretLineBackground && ll->containsCaret) { SimpleAlphaRectangle(surface, rcSegment, vsDraw.caretLineBackground, vsDraw.caretLineAlpha); } marks = pdoc->GetMark(line); @@ -3738,6 +3738,7 @@ long Editor::FormatRange(bool draw, Sci_RangeToFormat *pfr) { vsPrint.whitespaceBackgroundSet = false; vsPrint.whitespaceForegroundSet = false; vsPrint.showCaretLineBackground = false; + vsPrint.alwaysShowCaretLineBackground = false; // Don't highlight matching braces using indicators vsPrint.braceHighlightIndicatorSet = false; vsPrint.braceBadLightIndicatorSet = false; @@ -8321,6 +8322,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { vs.showCaretLineBackground = wParam != 0; InvalidateStyleRedraw(); break; + case SCI_GETCARETLINEVISIBLEALWAYS: + return vs.alwaysShowCaretLineBackground; + case SCI_SETCARETLINEVISIBLEALWAYS: + vs.alwaysShowCaretLineBackground = wParam != 0; + InvalidateStyleRedraw(); + break; + case SCI_GETCARETLINEBACK: return vs.caretLineBackground.AsLong(); case SCI_SETCARETLINEBACK: diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index a4894ef58..9df8152a1 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -180,6 +180,7 @@ ViewStyle::ViewStyle(const ViewStyle &source) { caretcolour = source.caretcolour; additionalCaretColour = source.additionalCaretColour; showCaretLineBackground = source.showCaretLineBackground; + alwaysShowCaretLineBackground = source.alwaysShowCaretLineBackground; caretLineBackground = source.caretLineBackground; caretLineAlpha = source.caretLineAlpha; edgecolour = source.edgecolour; @@ -274,6 +275,7 @@ void ViewStyle::Init(size_t stylesSize_) { caretcolour = ColourDesired(0, 0, 0); additionalCaretColour = ColourDesired(0x7f, 0x7f, 0x7f); showCaretLineBackground = false; + alwaysShowCaretLineBackground = false; caretLineBackground = ColourDesired(0xff, 0xff, 0); caretLineAlpha = SC_ALPHA_NOALPHA; edgecolour = ColourDesired(0xc0, 0xc0, 0xc0); diff --git a/src/ViewStyle.h b/src/ViewStyle.h index 292ed01ec..25467052f 100644 --- a/src/ViewStyle.h +++ b/src/ViewStyle.h @@ -115,6 +115,7 @@ public: ColourDesired caretcolour; ColourDesired additionalCaretColour; bool showCaretLineBackground; + bool alwaysShowCaretLineBackground; ColourDesired caretLineBackground; int caretLineAlpha; ColourDesired edgecolour; -- cgit v1.2.3