[PATCH] This patch fixes context menu crashes for edit controls as apparent in vb apps.
Michael Martin
martinmnet at hotmail.com
Wed Apr 29 11:47:58 CDT 2009
---
dlls/user32/edit.c | 73 ++++++++++++++++++++++------------------------------
1 files changed, 31 insertions(+), 42 deletions(-)
diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c
index eadcc3d..ca91d46 100644
--- a/dlls/user32/edit.c
+++ b/dlls/user32/edit.c
@@ -3357,43 +3357,6 @@ static LRESULT EDIT_WM_Char(EDITSTATE *es, WCHAR c)
/*********************************************************************
*
- * WM_COMMAND
- *
- */
-static void EDIT_WM_Command(EDITSTATE *es, INT code, INT id, HWND control)
-{
- if (code || control)
- return;
-
- switch (id) {
- case EM_UNDO:
- SendMessageW(es->hwndSelf, WM_UNDO, 0, 0);
- break;
- case WM_CUT:
- SendMessageW(es->hwndSelf, WM_CUT, 0, 0);
- break;
- case WM_COPY:
- SendMessageW(es->hwndSelf, WM_COPY, 0, 0);
- break;
- case WM_PASTE:
- SendMessageW(es->hwndSelf, WM_PASTE, 0, 0);
- break;
- case WM_CLEAR:
- SendMessageW(es->hwndSelf, WM_CLEAR, 0, 0);
- break;
- case EM_SETSEL:
- EDIT_EM_SetSel(es, 0, (UINT)-1, FALSE);
- EDIT_EM_ScrollCaret(es);
- break;
- default:
- ERR("unknown menu item, please report\n");
- break;
- }
-}
-
-
-/*********************************************************************
- *
* WM_CONTEXTMENU
*
* Note: the resource files resource/sysres_??.rc cannot define a
@@ -3415,6 +3378,8 @@ static void EDIT_WM_ContextMenu(EDITSTATE *es, INT x, INT y)
UINT start = es->selection_start;
UINT end = es->selection_end;
+ BOOL selectedMenuItem;
+
ORDER_UINT(start, end);
/* undo */
@@ -3440,7 +3405,35 @@ static void EDIT_WM_ContextMenu(EDITSTATE *es, INT x, INT y)
y = rc.top + (rc.bottom - rc.top) / 2;
}
- TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON, x, y, 0, es->hwndSelf, NULL);
+ selectedMenuItem = TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TMPRETURNCMD, x, y, 0, es->hwndSelf, NULL);
+
+ switch (selectedMenuItem) {
+ case 0:
+ break;
+ case EM_UNDO:
+ SendMessageW(es->hwndSelf, WM_UNDO, 0, 0);
+ break;
+ case WM_CUT:
+ SendMessageW(es->hwndSelf, WM_CUT, 0, 0);
+ break;
+ case WM_COPY:
+ SendMessageW(es->hwndSelf, WM_COPY, 0, 0);
+ break;
+ case WM_PASTE:
+ SendMessageW(es->hwndSelf, WM_PASTE, 0, 0);
+ break;
+ case WM_CLEAR:
+ SendMessageW(es->hwndSelf, WM_CLEAR, 0, 0);
+ break;
+ case EM_SETSEL:
+ EDIT_EM_SetSel(es, 0, (UINT)-1, FALSE);
+ EDIT_EM_ScrollCaret(es);
+ break;
+ default:
+ ERR("unknown menu item, please report\n");
+ break;
+ }
+
DestroyMenu(menu);
}
@@ -5192,10 +5185,6 @@ static LRESULT EditWndProc_common( HWND hwnd, UINT msg,
EDIT_WM_Clear(es);
break;
- case WM_COMMAND:
- EDIT_WM_Command(es, HIWORD(wParam), LOWORD(wParam), (HWND)lParam);
- break;
-
case WM_CONTEXTMENU:
EDIT_WM_ContextMenu(es, (short)LOWORD(lParam), (short)HIWORD(lParam));
break;
--
1.5.6
_________________________________________________________________
Rediscover Hotmail®: Get e-mail storage that grows with you.
http://windowslive.com/RediscoverHotmail?ocid=TXT_TAGLM_WL_HM_Rediscover_Storage2_042009
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20090429/aca38c7a/attachment.htm>
More information about the wine-patches
mailing list