Lei Zhang : user32: Fix WM_CHAR return value for edit controls.

Alexandre Julliard julliard at winehq.org
Tue Apr 8 06:38:04 CDT 2008


Module: wine
Branch: master
Commit: c8a4bb8fff225aa74d9a2c115cde7f2c4d31c5ba
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c8a4bb8fff225aa74d9a2c115cde7f2c4d31c5ba

Author: Lei Zhang <thestig at google.com>
Date:   Mon Apr  7 14:11:58 2008 -0700

user32: Fix WM_CHAR return value for edit controls.

---

 dlls/user32/edit.c       |    9 +++++----
 dlls/user32/tests/edit.c |   25 ++++++++++++++++---------
 2 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c
index e6d2530..8afc87a 100644
--- a/dlls/user32/edit.c
+++ b/dlls/user32/edit.c
@@ -257,7 +257,7 @@ static BOOL	EDIT_EM_Undo(EDITSTATE *es);
 /*
  *	WM_XXX message handlers
  */
-static void	EDIT_WM_Char(EDITSTATE *es, WCHAR c);
+static LRESULT	EDIT_WM_Char(EDITSTATE *es, WCHAR c);
 static void	EDIT_WM_Command(EDITSTATE *es, INT code, INT id, HWND conrtol);
 static void	EDIT_WM_ContextMenu(EDITSTATE *es, INT x, INT y);
 static void	EDIT_WM_Copy(EDITSTATE *es);
@@ -834,7 +834,7 @@ static LRESULT WINAPI EditWndProc_common( HWND hwnd, UINT msg,
                 strng[1] = wParam & 0xff;
                 if (strng[0]) MultiByteToWideChar(CP_ACP, 0, strng, 2, &charW, 1);
                 else MultiByteToWideChar(CP_ACP, 0, &strng[1], 1, &charW, 1);
-		EDIT_WM_Char(es, charW);
+		result = EDIT_WM_Char(es, charW);
 		break;
             }
             /* fall through */
@@ -866,7 +866,7 @@ static LRESULT WINAPI EditWndProc_common( HWND hwnd, UINT msg,
                   if (charW == VK_TAB || charW == VK_RETURN)
                       break;
                 }
-		EDIT_WM_Char(es, charW);
+		result = EDIT_WM_Char(es, charW);
 		break;
 	}
 
@@ -3994,7 +3994,7 @@ static BOOL EDIT_EM_Undo(EDITSTATE *es)
  *	WM_CHAR
  *
  */
-static void EDIT_WM_Char(EDITSTATE *es, WCHAR c)
+static LRESULT EDIT_WM_Char(EDITSTATE *es, WCHAR c)
 {
         BOOL control;
 
@@ -4065,6 +4065,7 @@ static void EDIT_WM_Char(EDITSTATE *es, WCHAR c)
  		}
 		break;
 	}
+    return 1;
 }
 
 
diff --git a/dlls/user32/tests/edit.c b/dlls/user32/tests/edit.c
index 0eafc80..396f74d 100644
--- a/dlls/user32/tests/edit.c
+++ b/dlls/user32/tests/edit.c
@@ -731,6 +731,7 @@ static void test_edit_control_2(void)
 {
     HWND hwndMain;
     char szLocalString[MAXLEN];
+    LONG r;
 
     /* Create main and edit windows. */
     hwndMain = CreateWindow(szEditTest2Class, "ET2", WS_OVERLAPPEDWINDOW,
@@ -749,9 +750,12 @@ static void test_edit_control_2(void)
 
     trace("EDIT: SETTEXT atomicity\n");
     /* Send messages to "type" in the word 'foo'. */
-    SendMessage(hwndET2, WM_CHAR, 'f', 1);
-    SendMessage(hwndET2, WM_CHAR, 'o', 1);
-    SendMessage(hwndET2, WM_CHAR, 'o', 1);
+    r = SendMessage(hwndET2, WM_CHAR, 'f', 1);
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
+    r = SendMessage(hwndET2, WM_CHAR, 'o', 1);
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
+    r = SendMessage(hwndET2, WM_CHAR, 'o', 1);
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
     /* 'foo' should have been changed to 'bar' by the UPDATE handler. */
     GetWindowText(hwndET2, szLocalString, MAXLEN);
     ok(lstrcmp(szLocalString, "bar")==0,
@@ -1553,7 +1557,8 @@ static void test_espassword(void)
 
     /* select all, cut (ctrl-x) */
     SendMessage(hwEdit, EM_SETSEL, 0, -1);
-    SendMessage(hwEdit, WM_CHAR, 24, 0);
+    r = SendMessage(hwEdit, WM_CHAR, 24, 0);
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
 
     /* get text */
     r = SendMessage(hwEdit, WM_GETTEXT, 1024, (LPARAM) buffer);
@@ -1569,8 +1574,10 @@ static void test_espassword(void)
 
     /* select all, copy (ctrl-c) and paste (ctrl-v) */
     SendMessage(hwEdit, EM_SETSEL, 0, -1);
-    SendMessage(hwEdit, WM_CHAR, 3, 0);
-    SendMessage(hwEdit, WM_CHAR, 22, 0);
+    r = SendMessage(hwEdit, WM_CHAR, 3, 0);
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
+    r = SendMessage(hwEdit, WM_CHAR, 22, 0);
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
 
     /* get text */
     buffer[0] = 0;
@@ -1607,7 +1614,7 @@ static void test_undo(void)
 
     /* cut (ctrl-x) */
     r = SendMessage(hwEdit, WM_CHAR, 24, 0);
-    todo_wine { ok(1 == r, "Expected: %d, got: %d\n", 1, r); }
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
 
     /* get text */
     buffer[0] = 0;
@@ -1617,7 +1624,7 @@ static void test_undo(void)
 
     /* undo (ctrl-z) */
     r = SendMessage(hwEdit, WM_CHAR, 26, 0);
-    todo_wine { ok(1 == r, "Expected: %d, got: %d\n", 1, r); }
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
 
     /* get text */
     buffer[0] = 0;
@@ -1627,7 +1634,7 @@ static void test_undo(void)
 
     /* undo again (ctrl-z) */
     r = SendMessage(hwEdit, WM_CHAR, 26, 0);
-    todo_wine { ok(1 == r, "Expected: %d, got: %d\n", 1, r); }
+    ok(1 == r, "Expected: %d, got: %d\n", 1, r);
 
     /* get text */
     buffer[0] = 0;




More information about the wine-cvs mailing list