[SHELL32] Display cut items as ghosted (#7739)

- When Ctrl+X is pressed on a selected item, it will appear ghosted until another clipboard action takes place.
- Generate SHCNE_UPDATE* notifications when file attributes change.
- When an items hidden attribute is changed (filesystem notification), we must update the ghosted state.

CORE-9465
This commit is contained in:
Whindmar Saksit 2025-03-02 13:07:23 +01:00 committed by GitHub
parent c3505bb4f6
commit f1a66daeeb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 158 additions and 46 deletions

View file

@ -1031,10 +1031,16 @@ HRESULT CDefaultContextMenu::DoCopyOrCut(LPCMINVOKECOMMANDINFOEX lpcmi, BOOL bCo
GlobalUnlock(medium.hGlobal);
m_pDataObj->SetData(&formatetc, &medium, TRUE);
CComPtr<IShellFolderView> psfv;
if (SUCCEEDED(IUnknown_QueryService(m_site, SID_SFolderView, IID_PPV_ARG(IShellFolderView, &psfv))))
psfv->SetPoints(m_pDataObj);
HRESULT hr = OleSetClipboard(m_pDataObj);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
if (psfv)
psfv->SetClipboard(!bCopy);
return S_OK;
}
@ -1161,7 +1167,7 @@ CDefaultContextMenu::DoCreateNewFolder(
return S_OK;
/* Get a pointer to the shell view */
hr = IUnknown_QueryService(m_site, SID_IFolderView, IID_PPV_ARG(IShellView, &psv));
hr = IUnknown_QueryService(m_site, SID_SFolderView, IID_PPV_ARG(IShellView, &psv));
if (FAILED_UNEXPECTEDLY(hr))
return S_OK;