Michael Martin wrote:
I submitted the same changes to wine. Do we need to revert and wait till they make the changes, which may very well be different?
Even though I usually frown upon static variables myself, can you explain why using a static variable here a bad idea?
  
Because the code isn't thread safe.

Fairly certain the problems in edit.c, did tests on XP and edit controls do not receive WM_COMMAND from menu controls.
  
The question is not if Windows sends WM_COMMAND, but if the control handles WM_COMMAND. And have you ever seen Windows send a WM_MENUSELECT to an edit control?

martin


  
Date: Tue, 21 Apr 2009 17:48:41 +0200
From: timo.kreuzer@web.de
To: ros-dev@reactos.org
Subject: Re: [ros-dev] [ros-diffs] [mjmartin] 40630: - edit.c: Add TPM_RETURNCMD flag to TrackPopupMenu so that WM_COMMAND messages are not sent to the edit control. Use WM_MENUSELECT vice WM_COMMAND to determine which clipboard message to send. - Fixes vb apps edit context menu and maybe others. Bug #4404

edit.c is shared with wine. Also using a static variable here looks like
a bad idea.
I would think that the problem is somewhere else.

mjmartin@svn.reactos.org schrieb:
    
Author: mjmartin
Date: Tue Apr 21 08:45:08 2009
New Revision: 40630

URL: http://svn.reactos.org/svn/reactos?rev=40630&view=rev
Log:
- edit.c: Add TPM_RETURNCMD flag to TrackPopupMenu so that WM_COMMAND messages are not sent to the edit control.
Use WM_MENUSELECT vice WM_COMMAND to determine which clipboard message to send.
- Fixes vb apps edit context menu and maybe others. Bug #4404

Modified:
    trunk/reactos/dll/win32/user32/controls/edit.c

Modified: trunk/reactos/dll/win32/user32/controls/edit.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/controls/edit.c?rev=40630&r1=40629&r2=40630&view=diff
==============================================================================
--- trunk/reactos/dll/win32/user32/controls/edit.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/controls/edit.c [iso-8859-1] Tue Apr 21 08:45:08 2009
@@ -255,7 +255,7 @@
  *	WM_XXX message handlers
  */
 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_MenuSelect(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);
 static LRESULT	EDIT_WM_Create(EDITSTATE *es, LPCWSTR name);
@@ -947,8 +947,8 @@
 		EDIT_WM_Clear(es);
 		break;
 
-	case WM_COMMAND:
-		EDIT_WM_Command(es, HIWORD(wParam), LOWORD(wParam), (HWND)lParam);
+	case WM_MENUSELECT:
+		EDIT_WM_MenuSelect(es, HIWORD(wParam), LOWORD(wParam), (HWND)lParam);
 		break;
 
         case WM_CONTEXTMENU:
@@ -4224,12 +4224,17 @@
  *	WM_COMMAND
  *
  */
-static void EDIT_WM_Command(EDITSTATE *es, INT code, INT id, HWND control)
-{
-	if (code || control)
+static void EDIT_WM_MenuSelect(EDITSTATE *es, INT code, INT id, HWND control)
+{
+
+	static INT MenuSelected;
+
+	if (id != 0) {
+		MenuSelected = id;
 		return;
-
-	switch (id) {
+	}
+
+	switch (MenuSelected) {
 		case EM_UNDO:
                         SendMessageW(es->hwndSelf, WM_UNDO, 0, 0);
 			break;
@@ -4308,7 +4313,7 @@
             y = rc.top + (rc.bottom - rc.top) / 2;
         }
 
-	TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON, x, y, 0, es->hwndSelf, NULL);
+	TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, x, y, 0, es->hwndSelf, NULL);
 	DestroyMenu(menu);
 }
 


  
      
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev
    

_________________________________________________________________
Rediscover HotmailŪ: Get e-mail storage that grows with you. 
http://windowslive.com/RediscoverHotmail?ocid=TXT_TAGLM_WL_HM_Rediscover_Storage2_042009
  

_______________________________________________ Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev