From 1d55f459d6402eb5f97e5ebf65a32e24cdd7a13b Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Sat, 27 Oct 2018 11:53:56 +0300 Subject: [PATCH] [SHELL32] CFSDropTarget: Fix right click menu when shown over the tree view. CORE-11240 --- .../shell32/droptargets/CFSDropTarget.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/dll/win32/shell32/droptargets/CFSDropTarget.cpp b/dll/win32/shell32/droptargets/CFSDropTarget.cpp index 41d4bab1c15..641770b37ae 100644 --- a/dll/win32/shell32/droptargets/CFSDropTarget.cpp +++ b/dll/win32/shell32/droptargets/CFSDropTarget.cpp @@ -206,9 +206,26 @@ HRESULT CFSDropTarget::_GetEffectFromMenu(IDataObject *pDataObject, POINTL pt, D /* FIXME: We need to support shell extensions here */ + /* We shouldn't use the site window here because the menu should work even when we don't have a site */ + HWND hwndDummy = CreateWindowEx(0, + WC_STATIC, + NULL, + WS_OVERLAPPED | WS_DISABLED | WS_CLIPSIBLINGS | WS_BORDER | SS_LEFT, + pt.x, + pt.y, + 1, + 1, + NULL, + NULL, + NULL, + NULL); + UINT uCommand = TrackPopupMenu(hpopupmenu, TPM_LEFTALIGN | TPM_RETURNCMD | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_NONOTIFY, - pt.x, pt.y, 0, m_hwndSite, NULL); + pt.x, pt.y, 0, hwndDummy, NULL); + + DestroyWindow(hwndDummy); + if (uCommand == 0) return S_FALSE; else if (uCommand == IDM_COPYHERE)