diff options
| author | John Ehresman <jpe@wingware.com> | 2016-06-17 17:20:53 -0400 | 
|---|---|---|
| committer | John Ehresman <jpe@wingware.com> | 2016-06-17 17:20:53 -0400 | 
| commit | b5d9addc5beea11472d05cd12a3540e243c998bf (patch) | |
| tree | b9b57a9add8767e0f7334999996d74f3e634449f /src/Editor.cxx | |
| parent | 74a12e8f40cbc552a6882096dc0a616c5cd77837 (diff) | |
| download | scintilla-mirror-b5d9addc5beea11472d05cd12a3540e243c998bf.tar.gz | |
Bug [#1888]. Only invalidate selection when using SCI_SETSELECTIONN api's
Diffstat (limited to 'src/Editor.cxx')
| -rw-r--r-- | src/Editor.cxx | 71 | 
1 files changed, 39 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();  | 
