>From 769d7b9204343e7a7028651f20f6608a8e8a5f7e Mon Sep 17 00:00:00 2001 From: Sergey Khodych Date: Sat, 5 Sep 2009 22:25:32 +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 f611c0b..41778ba 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -2286,6 +2286,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 333dd4f..3890a4f 100644 --- a/dlls/riched20/tests/editor.c +++ b/dlls/riched20/tests/editor.c @@ -6806,6 +6806,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); + memset(&dm_messages, 0, sizeof(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); @@ -6833,6 +6838,13 @@ static void test_dialogmode(void) ok(2 == lcount, "expected 2, got %d\n", lcount); DestroyWindow(hwButton); + + memset(&dm_messages, 0, sizeof(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); + memset(&dm_messages, 0, sizeof(dm_messages)); + DestroyWindow(hwRichEdit); /* Check messages from richedit(ES_MULTILINE|ES_WANTRETURN) */ @@ -6848,6 +6860,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); + memset(&dm_messages, 0, sizeof(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); @@ -6875,6 +6892,13 @@ static void test_dialogmode(void) ok(4 == lcount, "expected 4, got %d\n", lcount); DestroyWindow(hwButton); + + memset(&dm_messages, 0, sizeof(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); + memset(&dm_messages, 0, sizeof(dm_messages)); + DestroyWindow(hwRichEdit); /* Check messages from richedit(0) */ @@ -6887,6 +6911,11 @@ static void test_dialogmode(void) test_dm_messages(0, 0, 0); memset(&dm_messages, 0, sizeof(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); + memset(&dm_messages, 0, sizeof(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); @@ -6907,6 +6936,11 @@ static void test_dialogmode(void) test_dm_messages(0, 1, 1); memset(&dm_messages, 0, sizeof(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); + memset(&dm_messages, 0, sizeof(dm_messages)); + DestroyWindow(hwRichEdit); /* Check messages from richedit(ES_WANTRETURN) */ @@ -6919,6 +6953,11 @@ static void test_dialogmode(void) test_dm_messages(0, 0, 0); memset(&dm_messages, 0, sizeof(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); + memset(&dm_messages, 0, sizeof(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); @@ -6939,6 +6978,11 @@ static void test_dialogmode(void) test_dm_messages(0, 0, 0); memset(&dm_messages, 0, sizeof(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); + memset(&dm_messages, 0, sizeof(dm_messages)); + DestroyWindow(hwRichEdit); DestroyWindow(hwParent); } -- 1.5.3.3