[SHELL32]

- CDefView: Correct the check for SVSI_EDIT because SVSI_EDIT implies SVSI_SELECT. This actualyl fixes SVSI_SELECT to not cause a rename.

[BROWSEUI]
- ExplorerMessageLoop: Implement the /select parameter for explorer.

svn path=/trunk/; revision=73158
This commit is contained in:
Giannis Adamopoulos 2016-11-06 20:47:21 +00:00
parent 3c58a339dc
commit 0814bc5358
2 changed files with 27 additions and 1 deletions

View file

@ -357,14 +357,40 @@ static HRESULT ExplorerMessageLoop(IEThreadParamBlock * parameters)
if (parameters && parameters->offsetF8)
parameters->offsetF8->AddRef();
/* Handle /e parameter */
UINT wFlags = 0;
if ((parameters->dwFlags & SH_EXPLORER_CMDLINE_FLAG_E))
wFlags |= SBSP_EXPLOREMODE;
/* Handle /select parameter */
PUITEMID_CHILD pidlSelect = NULL;
if ((parameters->dwFlags & SH_EXPLORER_CMDLINE_FLAG_SELECT) &&
(ILGetNext(parameters->directoryPIDL) != NULL))
{
pidlSelect = ILClone(ILFindLastID(parameters->directoryPIDL));
ILRemoveLastID(parameters->directoryPIDL);
}
hResult = CShellBrowser_CreateInstance(parameters->directoryPIDL, wFlags, IID_PPV_ARG(IBrowserService2, &browser));
if (FAILED_UNEXPECTEDLY(hResult))
return hResult;
if (pidlSelect != NULL)
{
CComPtr<IShellBrowser> pisb;
hResult = browser->QueryInterface(IID_PPV_ARG(IShellBrowser, &pisb));
if (SUCCEEDED(hResult))
{
CComPtr<IShellView> shellView;
hResult = pisb->QueryActiveShellView(&shellView);
if (SUCCEEDED(hResult))
{
shellView->SelectItem(pidlSelect, SVSI_SELECT|SVSI_ENSUREVISIBLE);
}
}
ILFree(pidlSelect);
}
while ((Ret = GetMessage(&Msg, NULL, 0, 0)) != 0)
{
if (Ret == -1)

View file

@ -2203,7 +2203,7 @@ HRESULT WINAPI CDefView::SelectItem(PCUITEMID_CHILD pidl, UINT uFlags)
lvItem.iItem++;
}
if(uFlags & SVSI_EDIT)
if((uFlags & SVSI_EDIT) == SVSI_EDIT)
m_ListView.EditLabel(i);
return S_OK;