+ fix: undo destructive operation on selection (rectangle) does not restore selection

or preserves selection mode (extends selection on caret movement)
   -> need to send SCI_CANCEL at the end of restored selection
This commit is contained in:
Rainer Kottenhoff 2017-08-22 22:53:00 +02:00
parent 3ea54a6c74
commit aad331f1be

View File

@ -7073,7 +7073,6 @@ void RestoreSelectionAction(int token)
UndoRedoSelection sel = { -1,-1,-1 };
if (UndoSelectionMap(token, &sel) >= 0) {
// we are inside undo transaction, so do delayed PostMessage() instead of SendMessage()
int currSelMode = (int)SendMessage(hwndEdit, SCI_GETSELECTIONMODE, 0, 0);
PostMessage(hwndEdit, SCI_SETSELECTIONMODE, (WPARAM)sel.selMode, 0);
if (sel.selMode == SC_SEL_RECTANGLE)
{
@ -7083,7 +7082,7 @@ void RestoreSelectionAction(int token)
else {
PostMessage(hwndEdit, SCI_SETSELECTION, (WPARAM)sel.currPos, (LPARAM)sel.anchorPos);
}
PostMessage(hwndEdit, SCI_SETSELECTIONMODE, (WPARAM)currSelMode, 0);
PostMessage(hwndEdit, SCI_CANCEL, 0, 0);
}
}