[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

Timo Kreuzer timo.kreuzer at web.de
Tue Apr 21 17:48:41 CEST 2009


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 at 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);
>  }
>  
>
>
>   



More information about the Ros-dev mailing list