>From 6e0e2ed1f9e7cc101724ba89331a945608ac31c2 Mon Sep 17 00:00:00 2001 From: Sergey Khodych Date: Tue, 1 Sep 2009 01:45:56 +0300 Subject: riched20: Implement handling WM_KEYDOWN VK_ESCAPE in a dialog mode. --- dlls/riched20/editor.c | 4 +++ dlls/riched20/tests/editor.c | 44 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 0 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index ab08000..514198e 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -2289,6 +2289,10 @@ ME_KeyDown(ME_TextEditor *editor, WORD nKey) return TRUE; } break; + case VK_ESCAPE: + if (editor->bDialogMode) + PostMessageW(editor->hwndParent, WM_CLOSE, 0, 0); + return TRUE; case 'A': if (ctrl_is_down) { diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c index 0e3e968..b593d8f 100644 --- a/dlls/riched20/tests/editor.c +++ b/dlls/riched20/tests/editor.c @@ -6813,6 +6813,11 @@ static void test_dialogmode(void) lcount = SendMessage(hwRichEdit, EM_GETLINECOUNT, 0, 0); ok(2 == lcount, "expected 2, got %d\n", lcount); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_GETDLGCODE, 0, (LPARAM)&msg); ok(0x8f == r, "expected 0x8f, got 0x%x\n", r); test_dm_messages(0, 0, 0); @@ -6840,6 +6845,13 @@ static void test_dialogmode(void) ok(2 == lcount, "expected 2, got %d\n", lcount); DestroyWindow(hwButton); + + zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + DestroyWindow(hwRichEdit); /* Check messages from richedit(ES_MULTILINE|ES_WANTRETURN) */ @@ -6855,6 +6867,11 @@ static void test_dialogmode(void) lcount = SendMessage(hwRichEdit, EM_GETLINECOUNT, 0, 0); ok(2 == lcount, "expected 2, got %d\n", lcount); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_GETDLGCODE, 0, (LPARAM)&msg); ok(0x8f == r, "expected 0x8f, got 0x%x\n", r); test_dm_messages(0, 0, 0); @@ -6882,6 +6899,13 @@ static void test_dialogmode(void) ok(4 == lcount, "expected 4, got %d\n", lcount); DestroyWindow(hwButton); + + zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + DestroyWindow(hwRichEdit); /* Check messages from richedit(0) */ @@ -6894,6 +6918,11 @@ static void test_dialogmode(void) test_dm_messages(0, 0, 0); zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_GETDLGCODE, 0, (LPARAM)&msg); ok(0x8b == r, "expected 0x8b, got 0x%x\n", r); test_dm_messages(0, 0, 0); @@ -6914,6 +6943,11 @@ static void test_dialogmode(void) test_dm_messages(0, 1, 1); zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + DestroyWindow(hwRichEdit); /* Check messages from richedit(ES_WANTRETURN) */ @@ -6926,6 +6960,11 @@ static void test_dialogmode(void) test_dm_messages(0, 0, 0); zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_GETDLGCODE, 0, (LPARAM)&msg); ok(0x8b == r, "expected 0x8b, got 0x%x\n", r); test_dm_messages(0, 0, 0); @@ -6946,6 +6985,11 @@ static void test_dialogmode(void) test_dm_messages(0, 0, 0); zero_dm_messages(); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 0); + zero_dm_messages(); + DestroyWindow(hwRichEdit); DestroyWindow(hwParent); } -- 1.5.3.3