mirror of
https://github.com/reactos/reactos.git
synced 2025-06-05 09:20:30 +00:00
[BROWSEUI] CBandSiteMenu
- Move SHGetFolder code to CreateBuiltInISFBand - Get rid of CSIDL_FLAG_CREATE (Windows doesn't create Quick Launch directory) - Use ILFree since variables are reused now
This commit is contained in:
parent
275ab7ba2f
commit
484f33f0d3
2 changed files with 48 additions and 15 deletions
|
@ -48,19 +48,6 @@ CBandSiteMenu::~CBandSiteMenu()
|
||||||
|
|
||||||
HRESULT WINAPI CBandSiteMenu::FinalConstruct()
|
HRESULT WINAPI CBandSiteMenu::FinalConstruct()
|
||||||
{
|
{
|
||||||
HRESULT hr = SHGetFolderLocation(0, CSIDL_DESKTOP, NULL, 0, &m_DesktopPidl);
|
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
|
||||||
return hr;
|
|
||||||
|
|
||||||
WCHAR buffer[MAX_PATH];
|
|
||||||
hr = SHGetFolderPathAndSubDirW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, L"Microsoft\\Internet Explorer\\Quick Launch", buffer);
|
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
|
||||||
return hr;
|
|
||||||
|
|
||||||
m_QLaunchPidl.Attach(ILCreateFromPathW(buffer));
|
|
||||||
if (m_QLaunchPidl == NULL)
|
|
||||||
return E_FAIL;
|
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,12 +137,53 @@ HRESULT CBandSiteMenu::_CreateNewISFBand(HWND hwnd, REFIID riid, void** ppv)
|
||||||
return pISFB->QueryInterface(riid, ppv);
|
return pISFB->QueryInterface(riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LPITEMIDLIST CBandSiteMenu::_GetQLaunchPidl(BOOL refresh)
|
||||||
|
{
|
||||||
|
if (m_QLaunchPidl != NULL)
|
||||||
|
{
|
||||||
|
if (refresh)
|
||||||
|
m_QLaunchPidl.Free();
|
||||||
|
else
|
||||||
|
return m_QLaunchPidl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WCHAR buffer[MAX_PATH];
|
||||||
|
HRESULT hr = SHGetFolderPathAndSubDirW(0, CSIDL_APPDATA, NULL, 0, L"Microsoft\\Internet Explorer\\Quick Launch", buffer);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
m_QLaunchPidl.Attach(ILCreateFromPathW(buffer));
|
||||||
|
return m_QLaunchPidl;
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT CBandSiteMenu::_CreateBuiltInISFBand(UINT uID, REFIID riid, void** ppv)
|
HRESULT CBandSiteMenu::_CreateBuiltInISFBand(UINT uID, REFIID riid, void** ppv)
|
||||||
{
|
{
|
||||||
LPITEMIDLIST pidl;
|
LPITEMIDLIST pidl;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
pidl = (uID == IDM_TASKBAR_TOOLBARS_DESKTOP) ? m_DesktopPidl : m_QLaunchPidl;
|
switch (uID)
|
||||||
|
{
|
||||||
|
case IDM_TASKBAR_TOOLBARS_DESKTOP:
|
||||||
|
{
|
||||||
|
if (m_DesktopPidl != NULL)
|
||||||
|
m_DesktopPidl.Free();
|
||||||
|
|
||||||
|
hr = SHGetFolderLocation(0, CSIDL_DESKTOP, NULL, 0, &m_DesktopPidl);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
pidl = m_DesktopPidl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IDM_TASKBAR_TOOLBARS_QUICKLAUNCH:
|
||||||
|
{
|
||||||
|
pidl = _GetQLaunchPidl(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pidl == NULL)
|
||||||
|
return E_FAIL;
|
||||||
|
|
||||||
CComPtr<IShellFolderBand> pISFB;
|
CComPtr<IShellFolderBand> pISFB;
|
||||||
hr = CISFBand_CreateInstance(IID_IShellFolderBand, (PVOID*)&pISFB);
|
hr = CISFBand_CreateInstance(IID_IShellFolderBand, (PVOID*)&pISFB);
|
||||||
|
@ -238,7 +266,11 @@ UINT CBandSiteMenu::_GetMenuIdFromISFBand(IUnknown *pBand)
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return UINT_MAX;
|
return UINT_MAX;
|
||||||
|
|
||||||
hr = psfDesktop->CompareIDs(0, pidl, m_QLaunchPidl);
|
LPITEMIDLIST _QLaunchPidl = _GetQLaunchPidl(false);
|
||||||
|
if (_QLaunchPidl == NULL)
|
||||||
|
return UINT_MAX;
|
||||||
|
|
||||||
|
hr = psfDesktop->CompareIDs(0, pidl, _QLaunchPidl);
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return UINT_MAX;
|
return UINT_MAX;
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ class CBandSiteMenu :
|
||||||
|
|
||||||
HRESULT _CreateMenuPart();
|
HRESULT _CreateMenuPart();
|
||||||
HRESULT _CreateNewISFBand(HWND hwnd, REFIID riid, void** ppv);
|
HRESULT _CreateNewISFBand(HWND hwnd, REFIID riid, void** ppv);
|
||||||
|
LPITEMIDLIST _GetQLaunchPidl(BOOL refresh);
|
||||||
HRESULT _CreateBuiltInISFBand(UINT uID, REFIID riid, void** ppv);
|
HRESULT _CreateBuiltInISFBand(UINT uID, REFIID riid, void** ppv);
|
||||||
HRESULT _AddISFBandToMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, IUnknown* pBand, DWORD dwBandID, UINT *newMenuId);
|
HRESULT _AddISFBandToMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, IUnknown* pBand, DWORD dwBandID, UINT *newMenuId);
|
||||||
UINT _GetMenuIdFromISFBand(IUnknown *pBand);
|
UINT _GetMenuIdFromISFBand(IUnknown *pBand);
|
||||||
|
|
Loading…
Reference in a new issue