mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[SHELL32] Improve StartButton context menu (#5008)
- Add uFlags argument to CDefaultContextMenu::AddShellExtensionsToMenu- CCopyToMenu, CMoveToMenu, and CSendToMenu check the uFlags against (CMF_NOVERBS | CMF_VERBSONLY). CORE-16544
This commit is contained in:
parent
5f1fff696b
commit
8e036fe74d
4 changed files with 13 additions and 4 deletions
|
@ -271,6 +271,9 @@ CCopyToMenu::QueryContextMenu(HMENU hMenu,
|
||||||
TRACE("CCopyToMenu::QueryContextMenu(%p, %u, %u, %u, %u)\n",
|
TRACE("CCopyToMenu::QueryContextMenu(%p, %u, %u, %u, %u)\n",
|
||||||
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
||||||
|
|
||||||
|
if (uFlags & (CMF_NOVERBS | CMF_VERBSONLY))
|
||||||
|
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 0);
|
||||||
|
|
||||||
m_idCmdFirst = m_idCmdLast = idCmdFirst;
|
m_idCmdFirst = m_idCmdLast = idCmdFirst;
|
||||||
|
|
||||||
// insert separator if necessary
|
// insert separator if necessary
|
||||||
|
|
|
@ -84,7 +84,7 @@ class CDefaultContextMenu :
|
||||||
BOOL IsShellExtensionAlreadyLoaded(REFCLSID clsid);
|
BOOL IsShellExtensionAlreadyLoaded(REFCLSID clsid);
|
||||||
HRESULT LoadDynamicContextMenuHandler(HKEY hKey, REFCLSID clsid);
|
HRESULT LoadDynamicContextMenuHandler(HKEY hKey, REFCLSID clsid);
|
||||||
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(LPCMINVOKECOMMANDINFOEX lpcmi, BOOL bLink);
|
HRESULT DoPaste(LPCMINVOKECOMMANDINFOEX lpcmi, BOOL bLink);
|
||||||
HRESULT DoOpenOrExplore(LPCMINVOKECOMMANDINFOEX lpcmi);
|
HRESULT DoOpenOrExplore(LPCMINVOKECOMMANDINFOEX lpcmi);
|
||||||
|
@ -417,7 +417,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;
|
||||||
|
|
||||||
|
@ -429,7 +429,7 @@ CDefaultContextMenu::AddShellExtensionsToMenu(HMENU hMenu, UINT* pIndexMenu, UIN
|
||||||
{
|
{
|
||||||
DynamicShellEntry& info = m_DynamicEntries.GetNext(it);
|
DynamicShellEntry& info = m_DynamicEntries.GetNext(it);
|
||||||
|
|
||||||
HRESULT hr = info.pCM->QueryContextMenu(hMenu, *pIndexMenu, idCmdFirst + cIds, idCmdLast, CMF_NORMAL);
|
HRESULT hr = info.pCM->QueryContextMenu(hMenu, *pIndexMenu, idCmdFirst + cIds, idCmdLast, uFlags);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
info.iIdCmdFirst = cIds;
|
info.iIdCmdFirst = cIds;
|
||||||
|
@ -636,7 +636,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;
|
||||||
|
|
|
@ -270,6 +270,9 @@ CMoveToMenu::QueryContextMenu(HMENU hMenu,
|
||||||
TRACE("CMoveToMenu::QueryContextMenu(%p, %u, %u, %u, %u)\n",
|
TRACE("CMoveToMenu::QueryContextMenu(%p, %u, %u, %u, %u)\n",
|
||||||
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
||||||
|
|
||||||
|
if (uFlags & (CMF_NOVERBS | CMF_VERBSONLY))
|
||||||
|
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 0);
|
||||||
|
|
||||||
m_idCmdFirst = m_idCmdLast = idCmdFirst;
|
m_idCmdFirst = m_idCmdLast = idCmdFirst;
|
||||||
|
|
||||||
// insert separator if necessary
|
// insert separator if necessary
|
||||||
|
|
|
@ -295,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, 0);
|
||||||
|
|
||||||
HMENU hSubMenu = CreateMenu();
|
HMENU hSubMenu = CreateMenu();
|
||||||
if (!hSubMenu)
|
if (!hSubMenu)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue