aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2021-05-14 14:02:39 +1000
committerNeil <nyamatongwe@gmail.com>2021-05-14 14:02:39 +1000
commitd6136af6d39ae06b4b0b51bd4576338015722591 (patch)
treedd7ece130f6405ddfda06a3289a258ea0b3557af /src
parent17d2d5c793eaa95b170684213b18ff2e3f5ce291 (diff)
downloadscintilla-mirror-d6136af6d39ae06b4b0b51bd4576338015722591.tar.gz
Add elements for hot spots SC_ELEMENT_HOT_SPOT_ACTIVE and
SC_ELEMENT_HOT_SPOT_ACTIVE_BACK.
Diffstat (limited to 'src')
-rw-r--r--src/EditView.cxx14
-rw-r--r--src/Editor.cxx14
-rw-r--r--src/ViewStyle.cxx5
-rw-r--r--src/ViewStyle.h6
4 files changed, 17 insertions, 22 deletions
diff --git a/src/EditView.cxx b/src/EditView.cxx
index 7797236c8..e76921139 100644
--- a/src/EditView.cxx
+++ b/src/EditView.cxx
@@ -871,8 +871,8 @@ static ColourAlpha TextBackground(const EditModel &model, const ViewStyle &vsDra
(i >= ll->edgeColumn) &&
(i < ll->numCharsBeforeEOL))
return vsDraw.theEdge.colour;
- if (inHotspot && vsDraw.hotspotColours.back)
- return *vsDraw.hotspotColours.back;
+ if (inHotspot && vsDraw.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE_BACK))
+ return vsDraw.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE_BACK)->Opaque();
if (background && (styleMain != STYLE_BRACELIGHT) && (styleMain != STYLE_BRACEBAD)) {
return *background;
} else {
@@ -1930,11 +1930,11 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
const int styleMain = ll->styles[i];
ColourAlpha textFore = vsDraw.styles[styleMain].fore;
const Font *textFont = vsDraw.styles[styleMain].font.get();
- //hotspot foreground
+ // Hot-spot foreground
const bool inHotspot = (ll->hotspot.Valid()) && ll->hotspot.ContainsCharacter(iDoc);
if (inHotspot) {
- if (vsDraw.hotspotColours.fore)
- textFore = *vsDraw.hotspotColours.fore;
+ if (vsDraw.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE))
+ textFore = *vsDraw.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE);
}
if (vsDraw.indicatorsSetFore) {
// At least one indicator sets the text colour so see if it applies to this segment
@@ -2074,8 +2074,8 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi
PRectangle rcUL = rcSegment;
rcUL.top = rcUL.top + vsDraw.maxAscent + 1;
rcUL.bottom = rcUL.top + 1;
- if (vsDraw.hotspotColours.fore)
- surface->FillRectangleAligned(rcUL, Fill(*vsDraw.hotspotColours.fore));
+ if (vsDraw.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE))
+ surface->FillRectangleAligned(rcUL, Fill(*vsDraw.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE)));
else
surface->FillRectangleAligned(rcUL, Fill(textFore));
} else if (vsDraw.styles[styleMain].underline) {
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 9b5bfd6ee..1a0248522 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -8114,20 +8114,22 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_SETHOTSPOTACTIVEFORE:
- vs.hotspotColours.fore = OptionalColour(wParam, lParam);
- InvalidateStyleRedraw();
+ if (vs.SetElementColourOptional(SC_ELEMENT_HOT_SPOT_ACTIVE, wParam, lParam)) {
+ InvalidateStyleRedraw();
+ }
break;
case SCI_GETHOTSPOTACTIVEFORE:
- return vs.hotspotColours.fore.value_or(ColourAlpha()).OpaqueRGB();
+ return vs.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE).value_or(ColourAlpha()).OpaqueRGB();
case SCI_SETHOTSPOTACTIVEBACK:
- vs.hotspotColours.back = OptionalColour(wParam, lParam);
- InvalidateStyleRedraw();
+ if (vs.SetElementColourOptional(SC_ELEMENT_HOT_SPOT_ACTIVE_BACK, wParam, lParam)) {
+ InvalidateStyleRedraw();
+ }
break;
case SCI_GETHOTSPOTACTIVEBACK:
- return vs.hotspotColours.back.value_or(ColourAlpha()).OpaqueRGB();
+ return vs.ElementColour(SC_ELEMENT_HOT_SPOT_ACTIVE_BACK).value_or(ColourAlpha()).OpaqueRGB();
case SCI_SETHOTSPOTACTIVEUNDERLINE:
vs.hotspotUnderline = wParam != 0;
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx
index 489758c71..ca59fef2c 100644
--- a/src/ViewStyle.cxx
+++ b/src/ViewStyle.cxx
@@ -87,7 +87,6 @@ ViewStyle::ViewStyle(const ViewStyle &source) : markers(MARKER_MAX + 1), indicat
foldmarginColour = source.foldmarginColour;
foldmarginHighlightColour = source.foldmarginHighlightColour;
- hotspotColours = source.hotspotColours;
hotspotUnderline = source.hotspotUnderline;
controlCharSymbol = source.controlCharSymbol;
@@ -249,9 +248,9 @@ void ViewStyle::Init(size_t stylesSize_) {
someStylesProtected = false;
someStylesForceCase = false;
- hotspotColours.fore.reset();
- hotspotColours.back.reset();
hotspotUnderline = true;
+ elementColours.erase(SC_ELEMENT_HOT_SPOT_ACTIVE);
+ elementAllowsTranslucent.insert(SC_ELEMENT_HOT_SPOT_ACTIVE);
leftMarginWidth = 1;
rightMarginWidth = 1;
diff --git a/src/ViewStyle.h b/src/ViewStyle.h
index cf8da4fe6..524699590 100644
--- a/src/ViewStyle.h
+++ b/src/ViewStyle.h
@@ -58,11 +58,6 @@ inline std::optional<ColourAlpha> OptionalColour(uptr_t wParam, sptr_t lParam) {
}
}
-struct ForeBackColours {
- std::optional<ColourAlpha> fore;
- std::optional<ColourAlpha> back;
-};
-
struct SelectionAppearance {
// Whether to draw on base layer or over text
Layer layer;
@@ -140,7 +135,6 @@ public:
ColourAlpha selbarlight;
std::optional<ColourAlpha> foldmarginColour;
std::optional<ColourAlpha> foldmarginHighlightColour;
- ForeBackColours hotspotColours;
bool hotspotUnderline;
/// Margins are ordered: Line Numbers, Selection Margin, Spacing Margin
int leftMarginWidth; ///< Spacing margin on left of text