mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 12:23:31 +00:00
refresh window content after context menu popups only if any command has been executed
svn path=/trunk/; revision=15803
This commit is contained in:
@@ -4113,6 +4113,7 @@ static BOOL CtxMenu_HandleMenuMsg(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
static HRESULT ShellFolderContextMenu(IShellFolder* shell_folder, HWND hwndParent, int cidl, LPCITEMIDLIST* apidl, int x, int y)
|
||||
{
|
||||
IContextMenu* pcm;
|
||||
BOOL executed = FALSE;
|
||||
|
||||
HRESULT hr = (*shell_folder->lpVtbl->GetUIObjectOf)(shell_folder, hwndParent, cidl, apidl, &IID_IContextMenu, NULL, (LPVOID*)&pcm);
|
||||
/* HRESULT hr = CDefFolderMenu_Create2(dir?dir->_pidl:DesktopFolder(), hwndParent, 1, &pidl, shell_folder, NULL, 0, NULL, &pcm); */
|
||||
@@ -4131,19 +4132,20 @@ static HRESULT ShellFolderContextMenu(IShellFolder* shell_folder, HWND hwndParen
|
||||
CtxMenu_reset();
|
||||
|
||||
if (idCmd) {
|
||||
CMINVOKECOMMANDINFO cmi;
|
||||
CMINVOKECOMMANDINFO cmi;
|
||||
|
||||
cmi.cbSize = sizeof(CMINVOKECOMMANDINFO);
|
||||
cmi.fMask = 0;
|
||||
cmi.hwnd = hwndParent;
|
||||
cmi.lpVerb = (LPCSTR)(INT_PTR)(idCmd - FCIDM_SHVIEWFIRST);
|
||||
cmi.lpParameters = NULL;
|
||||
cmi.lpDirectory = NULL;
|
||||
cmi.nShow = SW_SHOWNORMAL;
|
||||
cmi.dwHotKey = 0;
|
||||
cmi.hIcon = 0;
|
||||
cmi.cbSize = sizeof(CMINVOKECOMMANDINFO);
|
||||
cmi.fMask = 0;
|
||||
cmi.hwnd = hwndParent;
|
||||
cmi.lpVerb = (LPCSTR)(INT_PTR)(idCmd - FCIDM_SHVIEWFIRST);
|
||||
cmi.lpParameters = NULL;
|
||||
cmi.lpDirectory = NULL;
|
||||
cmi.nShow = SW_SHOWNORMAL;
|
||||
cmi.dwHotKey = 0;
|
||||
cmi.hIcon = 0;
|
||||
|
||||
hr = (*pcm->lpVtbl->InvokeCommand)(pcm, &cmi);
|
||||
hr = (*pcm->lpVtbl->InvokeCommand)(pcm, &cmi);
|
||||
executed = TRUE;
|
||||
}
|
||||
} else
|
||||
CtxMenu_reset();
|
||||
@@ -4152,7 +4154,7 @@ static HRESULT ShellFolderContextMenu(IShellFolder* shell_folder, HWND hwndParen
|
||||
(*pcm->lpVtbl->Release)(pcm);
|
||||
}
|
||||
|
||||
return hr;
|
||||
return FAILED(hr)? hr: executed? S_OK: S_FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -4487,7 +4489,7 @@ LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam
|
||||
|
||||
/* get and use the parent folder to display correct context menu in all cases */
|
||||
if (SUCCEEDED(SHBindToParent(pidl_abs, &IID_IShellFolder, (LPVOID*)&parentFolder, &pidlLast))) {
|
||||
if (SUCCEEDED(ShellFolderContextMenu(parentFolder, hwnd, 1, &pidlLast, pt.x, pt.y)))
|
||||
if (ShellFolderContextMenu(parentFolder, hwnd, 1, &pidlLast, pt.x, pt.y) == S_OK)
|
||||
refresh_child(child);
|
||||
|
||||
(*parentFolder->lpVtbl->Release)(parentFolder);
|
||||
|
||||
Reference in New Issue
Block a user