diff --git a/dll/win32/browseui/internettoolbar.cpp b/dll/win32/browseui/internettoolbar.cpp index d6f6145553d..ea67bd576d5 100644 --- a/dll/win32/browseui/internettoolbar.cpp +++ b/dll/win32/browseui/internettoolbar.cpp @@ -1539,6 +1539,10 @@ LRESULT CInternetToolbar::OnForwardToCommandTarget(WORD wNotifyCode, WORD wID, H if (fCommandTarget.p != NULL) { hResult = fCommandTarget->Exec(&fCommandCategory, wID, 0, NULL, NULL); + if (FAILED(hResult)) + { + ::SendMessageW(::GetParent(m_hWnd), WM_COMMAND, wID, 0); + } } return 1; } diff --git a/dll/win32/shell32/CDefaultContextMenu.cpp b/dll/win32/shell32/CDefaultContextMenu.cpp index 30d1433df65..d6b0d98d7a8 100644 --- a/dll/win32/shell32/CDefaultContextMenu.cpp +++ b/dll/win32/shell32/CDefaultContextMenu.cpp @@ -95,6 +95,7 @@ class CDefaultContextMenu : HRESULT DoCopyOrCut(LPCMINVOKECOMMANDINFO lpcmi, BOOL bCopy); HRESULT DoRename(LPCMINVOKECOMMANDINFO lpcmi); HRESULT DoProperties(LPCMINVOKECOMMANDINFO lpcmi); + HRESULT DoUndo(LPCMINVOKECOMMANDINFO lpcmi); HRESULT DoCreateNewFolder(LPCMINVOKECOMMANDINFO lpici); HRESULT DoCopyToMoveToFolder(LPCMINVOKECOMMANDINFO lpici, BOOL bCopy); HRESULT InvokeShellExt(LPCMINVOKECOMMANDINFO lpcmi); @@ -895,6 +896,13 @@ CDefaultContextMenu::DoProperties( return S_OK; } +HRESULT +CDefaultContextMenu::DoUndo(LPCMINVOKECOMMANDINFO lpcmi) +{ + ERR("TODO: Undo"); + return E_NOTIMPL; +} + HRESULT CDefaultContextMenu::DoCopyToMoveToFolder(LPCMINVOKECOMMANDINFO lpici, BOOL bCopy) { @@ -1293,6 +1301,9 @@ CDefaultContextMenu::InvokeCommand( case FCIDM_SHVIEW_MOVETO: Result = DoCopyToMoveToFolder(&LocalInvokeInfo, FALSE); break; + case FCIDM_SHVIEW_UNDO: + Result = DoUndo(&LocalInvokeInfo); + break; default: Result = E_INVALIDARG; ERR("Unhandled Verb %xl\n", LOWORD(LocalInvokeInfo.lpVerb)); diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h index e3be5f4f255..391b8330b2b 100644 --- a/dll/win32/shell32/shresdef.h +++ b/dll/win32/shell32/shresdef.h @@ -797,6 +797,7 @@ #define FCIDM_TB_REPORTVIEW 0xA004 #define FCIDM_TB_DESKTOP 0xA005 /* FIXME */ +#define IDM_UNDO (FCIDM_SHVIEW_UNDO - 0x7000) #define IDM_CUT (FCIDM_SHVIEW_CUT - 0x7000) #define IDM_COPY (FCIDM_SHVIEW_COPY - 0x7000) #define IDM_INSERT (FCIDM_SHVIEW_INSERT - 0x7000)