{\r
if (pDoc->IsReadOnly()) return;\r
\r
- pDoc->CloseUndoRegion();\r
if (IsRegionSelected()) {\r
ReplaceText(SelectedRegion(), TEXT(""));\r
} else {\r
r.posStart = pView->GetCaretPosition();\r
if (!r.IsEmptyRegion()) ReplaceText(r, TEXT(""));\r
}\r
+ pDoc->CloseUndoRegion();\r
}\r
\r
void YAEditImpl::CmdDeleteChar()\r
static void UndoTest4();\r
static void UndoTest5();\r
static void UndoTest6();\r
+static void UndoTest7();\r
\r
\r
void YAEditDocTest(TestRunner *r) {\r
UndoTest4();\r
UndoTest5();\r
UndoTest6();\r
+ UndoTest7();\r
}\r
\r
////////////////////////////////////////////////\r
// expect is --ab---\r
\r
}\r
+\r
+// 'a', 'b', 'c', BS, 'D', Ctrl-Z, Ctl-Z, Ctl-Z\r
+void UndoTest7() {\r
+ YAEditDoc *pDoc = new YAEditDoc();\r
+ ASSERT(pDoc->Init(TEXT("-----"), NULL, NULL));\r
+ // -----\r
+ Region r1(2, 0, 2, 0);\r
+ ASSERT(pDoc->ReplaceString(&r1, TEXT("a")));\r
+\r
+ Region r2(3, 0, 3, 0);\r
+ ASSERT(pDoc->ReplaceString(&r2, TEXT("b")));\r
+\r
+ Region r3(4, 0, 4, 0);\r
+ ASSERT(pDoc->ReplaceString(&r3, TEXT("c")));\r
+// --abc---\r
+\r
+ Region r4(4, 0, 5, 0);\r
+ ASSERT(pDoc->ReplaceString(&r4, TEXT("")));\r
+ pDoc->CloseUndoRegion();\r
+\r
+ Region r5(4, 0, 4, 0);\r
+ ASSERT(pDoc->ReplaceString(&r5, TEXT("d")));\r
+\r
+ ASSERT(pDoc->Undo());\r
+ ASSERT(pDoc->Undo());\r
+\r
+ DWORD nLen;\r
+ LPTSTR pResult;\r
+\r
+ pResult = pDoc->GetDocumentData(&nLen);\r
+ ASSERT(pResult != NULL);\r
+ ASSERT(_tcsncmp(pResult, TEXT("--abd---"), nLen) == 0);\r
+ ASSERT(nLen == 8);\r
+\r
+ ASSERT(pDoc->Undo());\r
+ ASSERT(0);\r
+}
\ No newline at end of file