diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Editor.cxx | 10 | ||||
-rw-r--r-- | src/Style.cxx | 15 | ||||
-rw-r--r-- | src/Style.h | 5 | ||||
-rw-r--r-- | src/ViewStyle.cxx | 2 |
4 files changed, 23 insertions, 9 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 1f7588a28..439e1388d 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -549,11 +549,11 @@ int Editor::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) { int mask = pdoc->stylingBitsMask; if (moveDir > 0) { while ((pos < pdoc->Length()) && - (!vs.styles[pdoc->StyleAt(pos - 1) & mask].visible)) + (vs.styles[pdoc->StyleAt(pos - 1) & mask].IsProtected())) pos++; } else { while ((pos > 0) && - (!vs.styles[pdoc->StyleAt(pos - 1) & mask].visible)) + (vs.styles[pdoc->StyleAt(pos - 1) & mask].IsProtected())) pos--; } return pos; @@ -4542,6 +4542,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { InvalidateStyleRedraw(); } break; + case SCI_STYLESETCHANGEABLE: + if (wParam <= STYLE_MAX) { + vs.styles[wParam].changeable = lParam; + InvalidateStyleRedraw(); + } + break; case SCI_STYLERESETDEFAULT: vs.ResetDefaultStyle(); diff --git a/src/Style.cxx b/src/Style.cxx index 5989dae80..2ee09f57d 100644 --- a/src/Style.cxx +++ b/src/Style.cxx @@ -16,13 +16,13 @@ Style::Style() { aliasOfDefaultFont = true; Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff), Platform::DefaultFontSize(), 0, SC_CHARSET_DEFAULT, - false, false, false, false, caseMixed, true); + false, false, false, false, caseMixed, true, true); } Style::Style(const Style &source) { Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff), 0, 0, 0, - false, false, false, false, caseMixed, true); + false, false, false, false, caseMixed, true, true); fore.desired = source.fore.desired; back.desired = source.back.desired; characterSet = source.characterSet; @@ -33,6 +33,7 @@ Style::Style(const Style &source) { underline = source.underline; caseForce = source.caseForce; visible = source.visible; + changeable = source.changeable; } Style::~Style() { @@ -48,7 +49,7 @@ Style &Style::operator=(const Style &source) { return * this; Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff), 0, 0, SC_CHARSET_DEFAULT, - false, false, false, false, caseMixed, true); + false, false, false, false, caseMixed, true, true); fore.desired = source.fore.desired; back.desired = source.back.desired; characterSet = source.characterSet; @@ -59,13 +60,15 @@ Style &Style::operator=(const Style &source) { underline = source.underline; caseForce = source.caseForce; visible = source.visible; + changeable = source.changeable; return *this; } void Style::Clear(ColourDesired fore_, ColourDesired back_, int size_, const char *fontName_, int characterSet_, bool bold_, bool italic_, bool eolFilled_, - bool underline_, ecaseForced caseForce_, bool visible_) { + bool underline_, ecaseForced caseForce_, + bool visible_, bool changeable_) { fore.desired = fore_; back.desired = back_; characterSet = characterSet_; @@ -77,6 +80,7 @@ void Style::Clear(ColourDesired fore_, ColourDesired back_, int size_, underline = underline_; caseForce = caseForce_; visible = visible_; + changeable = changeable_; if (aliasOfDefaultFont) font.SetID(0); else @@ -96,7 +100,8 @@ void Style::ClearTo(const Style &source) { source.eolFilled, source.underline, source.caseForce, - source.visible); + source.visible, + source.changeable); } bool Style::EquivalentFontTo(const Style *other) const { diff --git a/src/Style.h b/src/Style.h index 17d32ac33..63259b1a9 100644 --- a/src/Style.h +++ b/src/Style.h @@ -25,6 +25,7 @@ public: enum ecaseForced {caseMixed, caseUpper, caseLower}; ecaseForced caseForce; bool visible; + bool changeable; Font font; int sizeZoomed; @@ -43,10 +44,12 @@ public: int size_, const char *fontName_, int characterSet_, bool bold_, bool italic_, bool eolFilled_, - bool underline_, ecaseForced caseForce_, bool visible_); + bool underline_, ecaseForced caseForce_, + bool visible_, bool changeable_); void ClearTo(const Style &source); bool EquivalentFontTo(const Style *other) const; void Realise(Surface &surface, int zoomLevel, Style *defaultStyle = 0); + bool IsProtected() { return !(changeable && visible);} ; }; #endif diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index 40615da65..7937e1fca 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -219,7 +219,7 @@ void ViewStyle::ResetDefaultStyle() { ColourDesired(0xff,0xff,0xff), Platform::DefaultFontSize(), fontNames.Save(Platform::DefaultFont()), SC_CHARSET_DEFAULT, - false, false, false, false, Style::caseMixed, true); + false, false, false, false, Style::caseMixed, true, true); } void ViewStyle::ClearStyles() { |