summaryrefslogtreecommitdiffstats
path: root/scintilla/src/ViewStyle.cxx
diff options
context:
space:
mode:
authorXhmikosR <xhmikosr@gmail.com>2015-11-07 12:31:06 +0200
committerXhmikosR <xhmikosr@gmail.com>2015-11-07 12:31:06 +0200
commit017529246a001ffe1df321bd5f799c29aa59d486 (patch)
tree6b9d847225816ca9bedb2cddb63cba47bbefe48e /scintilla/src/ViewStyle.cxx
parent0e976db39a47728f48aed5ef8dbda32cba25afcf (diff)
downloadnotepad2-mod-017529246a001ffe1df321bd5f799c29aa59d486.zip
notepad2-mod-017529246a001ffe1df321bd5f799c29aa59d486.tar.gz
notepad2-mod-017529246a001ffe1df321bd5f799c29aa59d486.tar.bz2
Update Scintilla to v3.6.2.
Diffstat (limited to 'scintilla/src/ViewStyle.cxx')
-rw-r--r--scintilla/src/ViewStyle.cxx51
1 files changed, 36 insertions, 15 deletions
diff --git a/scintilla/src/ViewStyle.cxx b/scintilla/src/ViewStyle.cxx
index eff7a82..e288464 100644
--- a/scintilla/src/ViewStyle.cxx
+++ b/scintilla/src/ViewStyle.cxx
@@ -151,6 +151,7 @@ ViewStyle::ViewStyle(const ViewStyle &source) {
ms[margin] = source.ms[margin];
}
maskInLine = source.maskInLine;
+ maskDrawInText = source.maskDrawInText;
fixedColumnWidth = source.fixedColumnWidth;
marginInside = source.marginInside;
textStart = source.textStart;
@@ -191,6 +192,32 @@ ViewStyle::~ViewStyle() {
fonts.clear();
}
+void ViewStyle::CalculateMarginWidthAndMask() {
+ fixedColumnWidth = marginInside ? leftMarginWidth : 0;
+ maskInLine = 0xffffffff;
+ int maskDefinedMarkers = 0;
+ for (int margin = 0; margin <= SC_MAX_MARGIN; margin++) {
+ fixedColumnWidth += ms[margin].width;
+ if (ms[margin].width > 0)
+ maskInLine &= ~ms[margin].mask;
+ maskDefinedMarkers |= ms[margin].mask;
+ }
+ maskDrawInText = 0;
+ for (int markBit = 0; markBit < 32; markBit++) {
+ const int maskBit = 1 << markBit;
+ switch (markers[markBit].markType) {
+ case SC_MARK_EMPTY:
+ maskInLine &= ~maskBit;
+ break;
+ case SC_MARK_BACKGROUND:
+ case SC_MARK_UNDERLINE:
+ maskInLine &= ~maskBit;
+ maskDrawInText |= maskDefinedMarkers & maskBit;
+ break;
+ }
+ }
+}
+
void ViewStyle::Init(size_t stylesSize_) {
AllocStyles(stylesSize_);
nextExtendedStyle = 256;
@@ -265,13 +292,7 @@ void ViewStyle::Init(size_t stylesSize_) {
ms[2].width = 0;
ms[2].mask = 0;
marginInside = true;
- fixedColumnWidth = marginInside ? leftMarginWidth : 0;
- maskInLine = 0xffffffff;
- for (int margin=0; margin <= SC_MAX_MARGIN; margin++) {
- fixedColumnWidth += ms[margin].width;
- if (ms[margin].width > 0)
- maskInLine &= ~ms[margin].mask;
- }
+ CalculateMarginWidthAndMask();
textStart = marginInside ? fixedColumnWidth : leftMarginWidth;
zoomLevel = 0;
viewWhitespace = wsInvisible;
@@ -368,13 +389,7 @@ void ViewStyle::Refresh(Surface &surface, int tabInChars) {
controlCharWidth = surface.WidthChar(styles[STYLE_CONTROLCHAR].font, static_cast<char>(controlCharSymbol));
}
- fixedColumnWidth = marginInside ? leftMarginWidth : 0;
- maskInLine = 0xffffffff;
- for (int margin=0; margin <= SC_MAX_MARGIN; margin++) {
- fixedColumnWidth += ms[margin].width;
- if (ms[margin].width > 0)
- maskInLine &= ~ms[margin].mask;
- }
+ CalculateMarginWidthAndMask();
textStart = marginInside ? fixedColumnWidth : leftMarginWidth;
}
@@ -477,7 +492,7 @@ ColourOptional ViewStyle::Background(int marksOfLine, bool caretActive, bool lin
int marksMasked = marksOfLine & maskInLine;
if (marksMasked) {
for (int markBit = 0; (markBit < 32) && marksMasked; markBit++) {
- if ((marksMasked & 1) && (markers[markBit].markType != SC_MARK_EMPTY) &&
+ if ((marksMasked & 1) &&
(markers[markBit].alpha == SC_ALPHA_NOALPHA)) {
background = ColourOptional(markers[markBit].back, true);
}
@@ -497,6 +512,12 @@ bool ViewStyle::WhitespaceBackgroundDrawn() const {
return (viewWhitespace != wsInvisible) && (whitespaceColours.back.isSet);
}
+bool ViewStyle::WhiteSpaceVisible(bool inIndent) const {
+ return (!inIndent && viewWhitespace == wsVisibleAfterIndent) ||
+ (inIndent && viewWhitespace == wsVisibleOnlyInIndent) ||
+ viewWhitespace == wsVisibleAlways;
+}
+
ColourDesired ViewStyle::WrapColour() const {
if (whitespaceColours.fore.isSet)
return whitespaceColours.fore;