aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2012-05-04 16:09:08 +1000
committernyamatongwe <unknown>2012-05-04 16:09:08 +1000
commitef4f64e801487eff26e4fdba2031fab0e3a9a588 (patch)
treeab4e78385b084d4be6d76164d9569c45c9be8111
parent714dc7340d1255ae4018e1ceb793e25cb12cb74f (diff)
downloadscintilla-mirror-ef4f64e801487eff26e4fdba2031fab0e3a9a588.tar.gz
Bug #3522250. Group undo for newline with selection.
-rw-r--r--src/Editor.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 9a49580d2..2fb2ea03f 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -5037,14 +5037,23 @@ void Editor::NewLine() {
sel.SetSelection(sel.RangeMain());
// Clear main range and insert line end
- ClearSelection();
+ bool needGroupUndo = !sel.Empty();
+ if (needGroupUndo)
+ pdoc->BeginUndoAction();
+
+ if (!sel.Empty())
+ ClearSelection();
const char *eol = "\n";
if (pdoc->eolMode == SC_EOL_CRLF) {
eol = "\r\n";
} else if (pdoc->eolMode == SC_EOL_CR) {
eol = "\r";
} // else SC_EOL_LF -> "\n" already set
- if (pdoc->InsertCString(sel.MainCaret(), eol)) {
+ bool inserted = pdoc->InsertCString(sel.MainCaret(), eol);
+ // Want to end undo group before NotifyChar as applications often modify text here
+ if (needGroupUndo)
+ pdoc->EndUndoAction();
+ if (inserted) {
SetEmptySelection(sel.MainCaret() + istrlen(eol));
while (*eol) {
NotifyChar(*eol);