mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 22:02:58 +00:00
[0.4.14][SHELL32] Improve StartButton context menu (#5008) CORE-16544
It regressed by the introduction of the SendTo-menu in: 0.4.14-dev-238-g5308a606dc
Since then we had some unintended verbs in the start buttons context menu. Fix that by *partially* porting back: 0.4.15-dev-5611-g8e036fe74d
[SHELL32] Improve StartButton context menu (#5008) 0.4.15-dev-5614-gf156f9a137
[SHELL32] Follow-up I picked only the parts that I needed to hide the CSendToMenu, because the older branches do not have the CCopyToMenu, CMoveToMenu. And I do not intend to ever add the new source files implementing them.
This commit is contained in:
parent
38dd7d8094
commit
1e4c5509f5
2 changed files with 10 additions and 9 deletions
|
@ -50,7 +50,6 @@ struct _StaticInvokeCommandMap_
|
||||||
{ "rename", FCIDM_SHVIEW_RENAME},
|
{ "rename", FCIDM_SHVIEW_RENAME},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class CDefaultContextMenu :
|
class CDefaultContextMenu :
|
||||||
public CComObjectRootEx<CComMultiThreadModelNoCS>,
|
public CComObjectRootEx<CComMultiThreadModelNoCS>,
|
||||||
public IContextMenu3,
|
public IContextMenu3,
|
||||||
|
@ -85,7 +84,7 @@ class CDefaultContextMenu :
|
||||||
BOOL IsShellExtensionAlreadyLoaded(const CLSID *pclsid);
|
BOOL IsShellExtensionAlreadyLoaded(const CLSID *pclsid);
|
||||||
HRESULT LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *pclsid);
|
HRESULT LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *pclsid);
|
||||||
BOOL EnumerateDynamicContextHandlerForKey(HKEY hRootKey);
|
BOOL EnumerateDynamicContextHandlerForKey(HKEY hRootKey);
|
||||||
UINT AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UINT idCmdFirst, UINT idCmdLast);
|
UINT AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
|
||||||
UINT AddStaticContextMenusToMenu(HMENU hMenu, UINT* IndexMenu, UINT iIdCmdFirst, UINT iIdCmdLast);
|
UINT AddStaticContextMenusToMenu(HMENU hMenu, UINT* IndexMenu, UINT iIdCmdFirst, UINT iIdCmdLast);
|
||||||
HRESULT DoPaste(LPCMINVOKECOMMANDINFO lpcmi, BOOL bLink);
|
HRESULT DoPaste(LPCMINVOKECOMMANDINFO lpcmi, BOOL bLink);
|
||||||
HRESULT DoOpenOrExplore(LPCMINVOKECOMMANDINFO lpcmi);
|
HRESULT DoOpenOrExplore(LPCMINVOKECOMMANDINFO lpcmi);
|
||||||
|
@ -152,7 +151,6 @@ CDefaultContextMenu::CDefaultContextMenu() :
|
||||||
m_iIdCBLast(0),
|
m_iIdCBLast(0),
|
||||||
m_iIdDfltFirst(0),
|
m_iIdDfltFirst(0),
|
||||||
m_iIdDfltLast(0)
|
m_iIdDfltLast(0)
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,7 +346,6 @@ HRESULT
|
||||||
CDefaultContextMenu::LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *pclsid)
|
CDefaultContextMenu::LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *pclsid)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
TRACE("LoadDynamicContextMenuHandler entered with This %p hKey %p pclsid %s\n", this, hKey, wine_dbgstr_guid(pclsid));
|
TRACE("LoadDynamicContextMenuHandler entered with This %p hKey %p pclsid %s\n", this, hKey, wine_dbgstr_guid(pclsid));
|
||||||
|
|
||||||
if (IsShellExtensionAlreadyLoaded(pclsid))
|
if (IsShellExtensionAlreadyLoaded(pclsid))
|
||||||
|
@ -470,7 +467,7 @@ CDefaultContextMenu::EnumerateDynamicContextHandlerForKey(HKEY hRootKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT
|
UINT
|
||||||
CDefaultContextMenu::AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UINT idCmdFirst, UINT idCmdLast)
|
CDefaultContextMenu::AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
||||||
{
|
{
|
||||||
UINT cIds = 0;
|
UINT cIds = 0;
|
||||||
|
|
||||||
|
@ -480,7 +477,7 @@ CDefaultContextMenu::AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UIN
|
||||||
PDynamicShellEntry pEntry = m_pDynamicEntries;
|
PDynamicShellEntry pEntry = m_pDynamicEntries;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
HRESULT hr = pEntry->pCM->QueryContextMenu(hMenu, *pIndexMenu, idCmdFirst + cIds, idCmdLast, CMF_NORMAL);
|
HRESULT hr = pEntry->pCM->QueryContextMenu(hMenu, *pIndexMenu, idCmdFirst + cIds, idCmdLast, uFlags);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
pEntry->iIdCmdFirst = cIds;
|
pEntry->iIdCmdFirst = cIds;
|
||||||
|
@ -502,7 +499,7 @@ UINT
|
||||||
CDefaultContextMenu::AddStaticContextMenusToMenu(
|
CDefaultContextMenu::AddStaticContextMenusToMenu(
|
||||||
HMENU hMenu,
|
HMENU hMenu,
|
||||||
UINT* pIndexMenu,
|
UINT* pIndexMenu,
|
||||||
UINT iIdCmdFirst,
|
UINT iIdCmdFirst,
|
||||||
UINT iIdCmdLast)
|
UINT iIdCmdLast)
|
||||||
{
|
{
|
||||||
MENUITEMINFOW mii;
|
MENUITEMINFOW mii;
|
||||||
|
@ -688,7 +685,7 @@ CDefaultContextMenu::QueryContextMenu(
|
||||||
idCmdNext = idCmdFirst + cIds;
|
idCmdNext = idCmdFirst + cIds;
|
||||||
|
|
||||||
/* Add dynamic context menu handlers */
|
/* Add dynamic context menu handlers */
|
||||||
cIds += AddShellExtensionsToMenu(hMenu, &IndexMenu, idCmdNext, idCmdLast);
|
cIds += AddShellExtensionsToMenu(hMenu, &IndexMenu, idCmdNext, idCmdLast, uFlags);
|
||||||
m_iIdSHEFirst = m_iIdSCMLast;
|
m_iIdSHEFirst = m_iIdSCMLast;
|
||||||
m_iIdSHELast = cIds;
|
m_iIdSHELast = cIds;
|
||||||
idCmdNext = idCmdFirst + cIds;
|
idCmdNext = idCmdFirst + cIds;
|
||||||
|
|
|
@ -244,6 +244,7 @@ UINT CSendToMenu::InsertSendToItems(HMENU hMenu, UINT idCmdFirst, UINT Pos)
|
||||||
{
|
{
|
||||||
CStringW strNone(MAKEINTRESOURCEW(IDS_NONE));
|
CStringW strNone(MAKEINTRESOURCEW(IDS_NONE));
|
||||||
AppendMenuW(hMenu, MF_GRAYED | MF_DISABLED | MF_STRING, idCmd, strNone);
|
AppendMenuW(hMenu, MF_GRAYED | MF_DISABLED | MF_STRING, idCmd, strNone);
|
||||||
|
++idCmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
return idCmd - idCmdFirst;
|
return idCmd - idCmdFirst;
|
||||||
|
@ -294,6 +295,9 @@ CSendToMenu::QueryContextMenu(HMENU hMenu,
|
||||||
TRACE("%p %p %u %u %u %u\n", this,
|
TRACE("%p %p %u %u %u %u\n", this,
|
||||||
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
||||||
|
|
||||||
|
if (uFlags & (CMF_NOVERBS | CMF_VERBSONLY))
|
||||||
|
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdFirst);
|
||||||
|
|
||||||
HMENU hSubMenu = CreateMenu();
|
HMENU hSubMenu = CreateMenu();
|
||||||
if (!hSubMenu)
|
if (!hSubMenu)
|
||||||
{
|
{
|
||||||
|
@ -323,7 +327,7 @@ CSendToMenu::QueryContextMenu(HMENU hMenu,
|
||||||
m_hSubMenu = hSubMenu;
|
m_hSubMenu = hSubMenu;
|
||||||
DestroyMenu(hOldSubMenu);
|
DestroyMenu(hOldSubMenu);
|
||||||
|
|
||||||
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, cItems);
|
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, idCmdFirst + cItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP
|
STDMETHODIMP
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue