diff options
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(); |