diff options
| -rw-r--r-- | include/Scintilla.h | 1 | ||||
| -rw-r--r-- | include/Scintilla.iface | 3 | ||||
| -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 | 
6 files changed, 27 insertions, 9 deletions
| diff --git a/include/Scintilla.h b/include/Scintilla.h index 20c5f267a..2a51f84f6 100644 --- a/include/Scintilla.h +++ b/include/Scintilla.h @@ -205,6 +205,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,  #define SCI_SETCARETLINEVISIBLE 2096  #define SCI_GETCARETLINEBACK 2097  #define SCI_SETCARETLINEBACK 2098 +#define SCI_STYLESETCHANGEABLE 2099  #define SCI_AUTOCSHOW 2100  #define SCI_AUTOCCANCEL 2101  #define SCI_AUTOCACTIVE 2102 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index 9e30673d7..d83c71321 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -472,6 +472,9 @@ get colour GetCaretLineBack=2097(,)  # Set the colour of the background of the line containing the caret.  set void SetCaretLineBack=2098(colour back,) +# Set a style to be changeable or not (read only). +set void StyleSetChangeable=2099(int style, bool changeable) +  # Display a auto-completion list.  # The lenEntered parameter indicates how many characters before  # the caret should be used to provide context. 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() { | 
