aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.cxx
diff options
context:
space:
mode:
authorJohn Ehresman <jpe@wingware.com>2016-06-17 17:20:53 -0400
committerJohn Ehresman <jpe@wingware.com>2016-06-17 17:20:53 -0400
commitb5d9addc5beea11472d05cd12a3540e243c998bf (patch)
treeb9b57a9add8767e0f7334999996d74f3e634449f /src/Editor.cxx
parent74a12e8f40cbc552a6882096dc0a616c5cd77837 (diff)
downloadscintilla-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.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();