- Sync to Wine: date: 2004/11/24 18:28:31; author: julliard Avoid using the MAKEPOINTS macro, it's broken on big endian.
- Fix of this patch: use screen relative coordinates for ShellFolderContextMenu() Modified: trunk/reactos/subsys/system/winefile/winefile.c _____
Modified: trunk/reactos/subsys/system/winefile/winefile.c --- trunk/reactos/subsys/system/winefile/winefile.c 2005-05-11 14:19:23 UTC (rev 15210) +++ trunk/reactos/subsys/system/winefile/winefile.c 2005-05-11 14:33:51 UTC (rev 15211) @@ -1,7 +1,7 @@
/* * Winefile * - * Copyright 2000, 2003, 2004 Martin Fuchs + * Copyright 2000, 2003, 2004, 2005 Martin Fuchs * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -3768,16 +3768,17 @@
#ifdef _SHELL_FOLDERS case WM_CONTEXTMENU: { + POINT pt, pt_clnt; Pane* pane; int idx;
/* first select the current item in the listbox */ HWND hpanel = (HWND) wparam; - POINTS* ppos = &MAKEPOINTS(lparam); - POINT pt; POINTSTOPOINT(pt, *ppos); - ScreenToClient(hpanel, &pt); - SendMessage(hpanel, WM_LBUTTONDOWN, 0, MAKELONG(pt.x, pt.y)); - SendMessage(hpanel, WM_LBUTTONUP, 0, MAKELONG(pt.x, pt.y)); + pt_clnt.x = pt.x = (short)LOWORD(lparam); + pt_clnt.y = pt.y = (short)HIWORD(lparam); + ScreenToClient(hpanel, &pt_clnt); + SendMessage(hpanel, WM_LBUTTONDOWN, 0, MAKELONG(pt_clnt.x, pt_clnt.y)); + SendMessage(hpanel, WM_LBUTTONUP, 0, MAKELONG(pt_clnt.x, pt_clnt.y));
/* now create the popup menu using shell namespace and IContextMenu */ pane = GetFocus()==child->left.hwnd? &child->left: &child->right; @@ -3795,7 +3796,7 @@
/* get and use the parent folder to display correct context menu in all cases */ if (SUCCEEDED(SHBindToParent(pidl_abs, &IID_IShellFolder, (LPVOID*)&parentFolder, &pidlLast))) { - hr = ShellFolderContextMenu(parentFolder, hwnd, 1, &pidlLast, ppos->x, ppos->y); + hr = ShellFolderContextMenu(parentFolder, hwnd, 1, &pidlLast, pt.x, pt.y);
(*parentFolder->lpVtbl->Release)(parentFolder); }