mirror of
https://github.com/reactos/reactos.git
synced 2024-07-01 02:10:07 +00:00
[SHELL32]
- If there is no default menu item, make Open With menu item the default, rename it to Open and disallow it to be submenu. See issue #6801 for more details. svn path=/trunk/; revision=54964
This commit is contained in:
parent
ac19035f70
commit
fa989547b6
|
@ -1160,44 +1160,47 @@ HRESULT WINAPI COpenWithMenu::QueryContextMenu(
|
||||||
UINT idCmdLast,
|
UINT idCmdLast,
|
||||||
UINT uFlags)
|
UINT uFlags)
|
||||||
{
|
{
|
||||||
MENUITEMINFOW mii;
|
|
||||||
WCHAR wszBuf[100];
|
|
||||||
INT DefaultPos;
|
|
||||||
|
|
||||||
TRACE("hMenu %p indexMenu %u idFirst %u idLast %u uFlags %u\n", hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
TRACE("hMenu %p indexMenu %u idFirst %u idLast %u uFlags %u\n", hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
|
||||||
|
|
||||||
if (!LoadStringW(shell32_hInstance, IDS_OPEN_WITH, wszBuf, _countof(wszBuf)))
|
INT DefaultPos = GetMenuDefaultItem(hMenu, TRUE, 0);
|
||||||
|
|
||||||
|
WCHAR wszName[100];
|
||||||
|
UINT NameId = (DefaultPos == -1 ? IDS_OPEN : IDS_OPEN_WITH);
|
||||||
|
if (!LoadStringW(shell32_hInstance, NameId, wszName, _countof(wszName)))
|
||||||
{
|
{
|
||||||
ERR("Failed to load string\n");
|
ERR("Failed to load string\n");
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Init cmd id */
|
/* Init first cmd id and submenu */
|
||||||
m_idCmdFirst = m_idCmdLast = idCmdFirst;
|
m_idCmdFirst = m_idCmdLast = idCmdFirst;
|
||||||
|
m_hSubMenu = NULL;
|
||||||
|
|
||||||
/* Load applications list */
|
/* If we are going to be default item, we shouldn't be submenu */
|
||||||
m_pAppList->Load();
|
if (DefaultPos != -1)
|
||||||
m_pAppList->LoadRecommended(m_wszPath);
|
|
||||||
|
|
||||||
/* Create submenu only if the is some choice */
|
|
||||||
if (m_pAppList->GetRecommendedCount() > 1)
|
|
||||||
{
|
{
|
||||||
m_hSubMenu = CreatePopupMenu();
|
/* Load applications list */
|
||||||
|
m_pAppList->Load();
|
||||||
|
m_pAppList->LoadRecommended(m_wszPath);
|
||||||
|
|
||||||
for(unsigned i = 0; i < m_pAppList->GetCount(); ++i)
|
/* Create submenu only if there is more than one application and menu has a default item */
|
||||||
|
if (m_pAppList->GetRecommendedCount() > 1)
|
||||||
{
|
{
|
||||||
COpenWithList::SApp *pApp = m_pAppList->GetList() + i;
|
m_hSubMenu = CreatePopupMenu();
|
||||||
if (pApp->bRecommended)
|
|
||||||
AddApp(pApp);
|
for(UINT i = 0; i < m_pAppList->GetCount(); ++i)
|
||||||
|
{
|
||||||
|
COpenWithList::SApp *pApp = m_pAppList->GetList() + i;
|
||||||
|
if (pApp->bRecommended)
|
||||||
|
AddApp(pApp);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddChooseProgramItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
AddChooseProgramItem();
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
m_hSubMenu = NULL;
|
|
||||||
|
|
||||||
DefaultPos = GetMenuDefaultItem(hMenu, TRUE, 0);
|
|
||||||
|
|
||||||
|
/* Insert menu item */
|
||||||
|
MENUITEMINFOW mii;
|
||||||
ZeroMemory(&mii, sizeof(mii));
|
ZeroMemory(&mii, sizeof(mii));
|
||||||
mii.cbSize = sizeof(mii);
|
mii.cbSize = sizeof(mii);
|
||||||
mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
|
mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
|
||||||
|
@ -1211,14 +1214,15 @@ HRESULT WINAPI COpenWithMenu::QueryContextMenu(
|
||||||
mii.wID = m_idCmdLast;
|
mii.wID = m_idCmdLast;
|
||||||
|
|
||||||
mii.fType = MFT_STRING;
|
mii.fType = MFT_STRING;
|
||||||
mii.dwTypeData = (LPWSTR)wszBuf;
|
mii.dwTypeData = (LPWSTR)wszName;
|
||||||
mii.cch = wcslen(wszBuf);
|
mii.cch = wcslen(wszName);
|
||||||
|
|
||||||
mii.fState = MFS_ENABLED;
|
mii.fState = MFS_ENABLED;
|
||||||
if (DefaultPos == -1)
|
if (DefaultPos == -1)
|
||||||
mii.fState |= MFS_DEFAULT;
|
mii.fState |= MFS_DEFAULT;
|
||||||
|
|
||||||
InsertMenuItemW(hMenu, DefaultPos + 1, TRUE, &mii);
|
if (!InsertMenuItemW(hMenu, DefaultPos + 1, TRUE, &mii))
|
||||||
|
return E_FAIL;
|
||||||
|
|
||||||
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, m_idCmdLast - m_idCmdFirst + 1);
|
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, m_idCmdLast - m_idCmdFirst + 1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue