aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r--src/Editor.cxx71
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();