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() { | 
