diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Editor.cxx | 71 | ||||
| -rw-r--r-- | src/Editor.h | 1 | 
2 files changed, 40 insertions, 32 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index 9c4e39490..5c9e20d71 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -5694,6 +5694,39 @@ sptr_t Editor::StyleGetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lPar  	return 0;  } +void Editor::SetSelectionNMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { +	InvalidateRange(sel.Range(wParam).Start().Position(), sel.Range(wParam).End().Position()); + +	switch (iMessage) { +	case SCI_SETSELECTIONNCARET: +		sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam)); +		break; + +	case SCI_SETSELECTIONNANCHOR: +		sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam)); +		break; + +	case SCI_SETSELECTIONNCARETVIRTUALSPACE: +		sel.Range(wParam).caret.SetVirtualSpace(static_cast<int>(lParam)); +		break; + +	case SCI_SETSELECTIONNANCHORVIRTUALSPACE: +		sel.Range(wParam).anchor.SetVirtualSpace(static_cast<int>(lParam)); +		break; + +	case SCI_SETSELECTIONNSTART: +		sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam)); +		break; + +	case SCI_SETSELECTIONNEND: +		sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam)); +		break; +	} + +	InvalidateRange(sel.Range(wParam).Start().Position(), sel.Range(wParam).End().Position()); +	ContainerNeedsUpdate(SC_UPDATE_SELECTION); +} +  sptr_t Editor::StringResult(sptr_t lParam, const char *val) {  	const size_t len = val ? strlen(val) : 0;  	if (lParam) { @@ -7967,55 +8000,29 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  		return sel.Main();  	case SCI_SETSELECTIONNCARET: -		sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam)); -		ContainerNeedsUpdate(SC_UPDATE_SELECTION); -		Redraw(); +	case SCI_SETSELECTIONNANCHOR: +	case SCI_SETSELECTIONNCARETVIRTUALSPACE: +	case SCI_SETSELECTIONNANCHORVIRTUALSPACE: +	case SCI_SETSELECTIONNSTART: +	case SCI_SETSELECTIONNEND: +		SetSelectionNMessage(iMessage, wParam, lParam);  		break;  	case SCI_GETSELECTIONNCARET:  		return sel.Range(wParam).caret.Position(); -	case SCI_SETSELECTIONNANCHOR: -		sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam)); -		ContainerNeedsUpdate(SC_UPDATE_SELECTION); -		Redraw(); -		break;  	case SCI_GETSELECTIONNANCHOR:  		return sel.Range(wParam).anchor.Position(); -	case SCI_SETSELECTIONNCARETVIRTUALSPACE: -		sel.Range(wParam).caret.SetVirtualSpace(static_cast<int>(lParam)); -		ContainerNeedsUpdate(SC_UPDATE_SELECTION); -		Redraw(); -		break; -  	case SCI_GETSELECTIONNCARETVIRTUALSPACE:  		return sel.Range(wParam).caret.VirtualSpace(); -	case SCI_SETSELECTIONNANCHORVIRTUALSPACE: -		sel.Range(wParam).anchor.SetVirtualSpace(static_cast<int>(lParam)); -		ContainerNeedsUpdate(SC_UPDATE_SELECTION); -		Redraw(); -		break; -  	case SCI_GETSELECTIONNANCHORVIRTUALSPACE:  		return sel.Range(wParam).anchor.VirtualSpace(); -	case SCI_SETSELECTIONNSTART: -		sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam)); -		ContainerNeedsUpdate(SC_UPDATE_SELECTION); -		Redraw(); -		break; -  	case SCI_GETSELECTIONNSTART:  		return sel.Range(wParam).Start().Position(); -	case SCI_SETSELECTIONNEND: -		sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam)); -		ContainerNeedsUpdate(SC_UPDATE_SELECTION); -		Redraw(); -		break; -  	case SCI_GETSELECTIONNEND:  		return sel.Range(wParam).End().Position(); diff --git a/src/Editor.h b/src/Editor.h index 052507381..64eb42db7 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -577,6 +577,7 @@ protected:	// ScintillaBase subclass needs access to much of Editor  	bool ValidMargin(uptr_t wParam) const;  	void StyleSetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);  	sptr_t StyleGetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam); +	void SetSelectionNMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);  	static const char *StringFromEOLMode(int eolMode); | 
