>From 26dc04d0a99c8ea4b92f65c8082fb25763d1d54a Mon Sep 17 00:00:00 2001 From: Sergey Khodych Date: Sun, 4 Oct 2009 23:16:08 +0300 Subject: riched20: Implement handling of WM_KEYDOWN VK_TAB in the dialog mode. --- dlls/riched20/editor.c | 4 ++++ dlls/riched20/tests/editor.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 0 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index d978ac5..b5ad21c 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -2293,6 +2293,10 @@ ME_KeyDown(ME_TextEditor *editor, WORD nKey) if (editor->bDialogMode && editor->hwndParent) PostMessageW(editor->hwndParent, WM_CLOSE, 0, 0); return TRUE; + case VK_TAB: + if (editor->bDialogMode && editor->hwndParent) + SendMessageW(editor->hwndParent, WM_NEXTDLGCTL, shift_is_down, 0); + return TRUE; case 'A': if (ctrl_is_down) { diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c index 93f0041..70c100a 100644 --- a/dlls/riched20/tests/editor.c +++ b/dlls/riched20/tests/editor.c @@ -6816,6 +6816,11 @@ static void test_dialogmode(void) ok(0 == r, "expected 0, got %d\n", r); test_dm_messages(0, 1, 0); + memset(&dm_messages, 0, sizeof(dm_messages)); + r = SendMessage(hwRichEdit, WM_KEYDOWN, VK_TAB, 0xf0001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 1); + DestroyWindow(hwRichEdit); /* Check messages from richedit(ES_MULTILINE) */ @@ -6836,6 +6841,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_TAB, 0xf0001); + 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); @@ -6853,6 +6863,11 @@ static void test_dialogmode(void) 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_KEYDOWN, VK_TAB, 0xf0001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 1); + hwButton = CreateWindow("BUTTON", "OK", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, 100, 100, 50, 20, hwParent, (HMENU)ID_RICHEDITTESTDBUTTON, GetModuleHandleA(0), NULL); ok(hwButton!=NULL, "CreateWindow failed with error code %d\n", GetLastError()); @@ -6886,6 +6901,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_TAB, 0xf0001); + 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); @@ -6903,6 +6923,11 @@ static void test_dialogmode(void) 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_KEYDOWN, VK_TAB, 0xf0001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 1); + hwButton = CreateWindow("BUTTON", "OK", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, 100, 100, 50, 20, hwParent, (HMENU)ID_RICHEDITTESTDBUTTON, GetModuleHandleA(0), NULL); ok(hwButton!=NULL, "CreateWindow failed with error code %d\n", GetLastError()); @@ -6933,6 +6958,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_TAB, 0xf0001); + 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); @@ -6947,6 +6977,11 @@ static void test_dialogmode(void) 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_KEYDOWN, VK_TAB, 0xf0001); + ok(0 == r, "expected 0, got %d\n", r); + test_dm_messages(0, 0, 1); + hwButton = CreateWindow("BUTTON", "OK", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, 100, 100, 50, 20, hwParent, (HMENU)ID_RICHEDITTESTDBUTTON, GetModuleHandleA(0), NULL); ok(hwButton!=NULL, "CreateWindow failed with error code %d\n", GetLastError()); -- 1.5.3.3