aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx10
-rw-r--r--src/Style.cxx15
-rw-r--r--src/Style.h5
-rw-r--r--src/ViewStyle.cxx2
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() {