diff options
| -rw-r--r-- | gtk/ScintillaGTK.cxx | 5 | ||||
| -rw-r--r-- | src/Editor.cxx | 6 | ||||
| -rw-r--r-- | src/Editor.h | 1 | ||||
| -rw-r--r-- | win32/ScintillaWin.cxx | 7 | 
4 files changed, 17 insertions, 2 deletions
| diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index dfc403dc5..733247cfd 100644 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -154,6 +154,7 @@ private:  	virtual void StartDrag();  	int TargetAsUTF8(char *text);  	int EncodedFromUTF8(char *utf8, char *encoded); +	virtual bool ValidCodePage(int codePage) const;  public: 	// Public for scintilla_send_message  	virtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);  private: @@ -907,6 +908,10 @@ int ScintillaGTK::EncodedFromUTF8(char *utf8, char *encoded) {  	return 0;  } +bool ScintillaGTK::ValidCodePage(int codePage) const { +	return codePage == 0 || codePage == SC_CP_UTF8 || codePage == SC_CP_DBCS; +} +  sptr_t ScintillaGTK::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  	switch (iMessage) { diff --git a/src/Editor.cxx b/src/Editor.cxx index 6fd4c44af..87a0391b4 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -6509,8 +6509,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  		return pdoc->LineEnd(wParam);  	case SCI_SETCODEPAGE: -		pdoc->dbcsCodePage = wParam; -		InvalidateStyleRedraw(); +		if (ValidCodePage(wParam)) { +			pdoc->dbcsCodePage = wParam; +			InvalidateStyleRedraw(); +		}  		break;  	case SCI_GETCODEPAGE: diff --git a/src/Editor.h b/src/Editor.h index 5799b4110..fe7be268a 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -525,6 +525,7 @@ protected:	// ScintillaBase subclass needs access to much of Editor  	void GetHotSpotRange(int& hsStart, int& hsEnd);  	int CodePage() const; +	virtual bool ValidCodePage(int /* codePage */) const { return true; }  	int WrapCount(int line);  	virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) = 0; diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index db8bd5204..f5164c5c7 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -181,6 +181,7 @@ class ScintillaWin :  	virtual void StartDrag();  	sptr_t WndPaint(uptr_t wParam);  	sptr_t HandleComposition(uptr_t wParam, sptr_t lParam); +	virtual bool ValidCodePage(int codePage) const;  	virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);  	virtual bool SetIdle(bool on);  	virtual void SetTicking(bool on); @@ -954,6 +955,12 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam  	return 0l;  } +bool ScintillaWin::ValidCodePage(int codePage) const { +	return codePage == 0 || codePage == SC_CP_UTF8 || +	       codePage == 932 || codePage == 936 || codePage == 949 || +	       codePage == 950 || codePage == 1361; +} +  sptr_t ScintillaWin::DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  	return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);  } | 
