refresh window content after context menu popups only if any command has been executed
Modified: trunk/reactos/subsys/system/winefile/winefile.c

Modified: trunk/reactos/subsys/system/winefile/winefile.c
--- trunk/reactos/subsys/system/winefile/winefile.c	2005-06-05 12:08:39 UTC (rev 15802)
+++ trunk/reactos/subsys/system/winefile/winefile.c	2005-06-05 12:20:07 UTC (rev 15803)
@@ -4113,6 +4113,7 @@
 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 @@
 				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 @@
 		(*pcm->lpVtbl->Release)(pcm);
 	}
 
-	return hr;
+	return FAILED(hr)? hr: executed? S_OK: S_FALSE;
 }
 
 
@@ -4487,7 +4489,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))) {
-						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);