Skip to content

Commit 4562306

Browse files
authored
[BROWSEUI] Find files must forward IItemNameLimits to the FS folder (reactos#8176)
1 parent 4afb871 commit 4562306

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

dll/win32/browseui/shellfind/CFindFolder.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,21 @@ STDMETHODIMP CFindFolder::MessageSFVCB(UINT uMsg, WPARAM wParam, LPARAM lParam)
12291229
return E_NOTIMPL;
12301230
}
12311231

1232+
//// *** IItemNameLimits methods ***
1233+
STDMETHODIMP CFindFolder::GetMaxLength(LPCWSTR pszName, int *piMaxNameLen)
1234+
{
1235+
CComPtr<IItemNameLimits> pLimits;
1236+
HRESULT hr = m_pisfInner->QueryInterface(IID_PPV_ARG(IItemNameLimits, &pLimits));
1237+
return FAILED_UNEXPECTEDLY(hr) ? hr : pLimits->GetMaxLength(pszName, piMaxNameLen);;
1238+
}
1239+
1240+
STDMETHODIMP CFindFolder::GetValidCharacters(LPWSTR *ppwszValidChars, LPWSTR *ppwszInvalidChars)
1241+
{
1242+
CComPtr<IItemNameLimits> pLimits;
1243+
HRESULT hr = m_pisfInner->QueryInterface(IID_PPV_ARG(IItemNameLimits, &pLimits));
1244+
return FAILED_UNEXPECTEDLY(hr) ? hr : pLimits->GetValidCharacters(ppwszValidChars, ppwszInvalidChars);
1245+
}
1246+
12321247
//// *** IPersistFolder2 methods ***
12331248
STDMETHODIMP CFindFolder::GetCurFolder(PIDLIST_ABSOLUTE *pidl)
12341249
{

dll/win32/browseui/shellfind/CFindFolder.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class CFindFolder :
1616
public IShellFolder2,
1717
public IPersistFolder2,
1818
public IShellFolderViewCB,
19+
public IItemNameLimits,
1920
public IConnectionPointContainerImpl<CFindFolder>,
2021
public IConnectionPointImpl<CFindFolder, &DIID_DSearchCommandEvents>
2122
{
@@ -62,6 +63,10 @@ class CFindFolder :
6263
//// *** IShellFolderViewCB methods ***
6364
STDMETHODIMP MessageSFVCB(UINT uMsg, WPARAM wParam, LPARAM lParam);
6465

66+
//// *** IItemNameLimits methods ***
67+
STDMETHOD(GetMaxLength)(LPCWSTR pszName, int *piMaxNameLen) override;
68+
STDMETHOD(GetValidCharacters)(LPWSTR *ppwszValidChars, LPWSTR *ppwszInvalidChars) override;
69+
6570
private:
6671
LPITEMIDLIST m_pidl;
6772
CComPtr<IShellFolder2> m_pisfInner, m_pSfDesktop;
@@ -121,6 +126,7 @@ class CFindFolder :
121126
COM_INTERFACE_ENTRY_IID(IID_IShellFolder2, IShellFolder2)
122127
COM_INTERFACE_ENTRY_IID(IID_IShellFolder, IShellFolder)
123128
COM_INTERFACE_ENTRY_IID(IID_IShellFolderViewCB, IShellFolderViewCB)
129+
COM_INTERFACE_ENTRY_IID(IID_IItemNameLimits, IItemNameLimits)
124130
COM_INTERFACE_ENTRY_IID(IID_IPersistFolder2, IPersistFolder2)
125131
COM_INTERFACE_ENTRY_IID(IID_IPersistFolder, IPersistFolder)
126132
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)

dll/win32/shell32/folders/CFSFolder.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,9 @@ class CFSFolder :
9797
GetValidCharacters(LPWSTR *ppwszValidChars, LPWSTR *ppwszInvalidChars) override
9898
{
9999
if (ppwszValidChars)
100-
{
101100
*ppwszValidChars = NULL;
102-
}
103101
if (ppwszInvalidChars)
104-
{
105-
SHStrDupW(INVALID_FILETITLE_CHARACTERSW, ppwszInvalidChars);
106-
}
102+
return SHStrDupW(INVALID_FILETITLE_CHARACTERSW, ppwszInvalidChars);
107103
return S_OK;
108104
}
109105

0 commit comments

Comments
 (0)