shell32: Simplify the creation of an IEnumIDList.

This commit is contained in:
Michael Stefaniuc 2014-03-25 23:33:45 +01:00 committed by Alexandre Julliard
parent 1cf3d8caa4
commit 0aff99771d
1 changed files with 9 additions and 15 deletions

View File

@ -971,14 +971,12 @@ static HRESULT WINAPI ShellFolder2_ParseDisplayName(IShellFolder2* iface, HWND h
return result;
}
static IUnknown *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter);
static IEnumIDList *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter);
static HRESULT WINAPI ShellFolder2_EnumObjects(IShellFolder2* iface, HWND hwndOwner,
SHCONTF grfFlags, IEnumIDList** ppEnumIDList)
{
UnixFolder *This = impl_from_IShellFolder2(iface);
IUnknown *newIterator;
HRESULT hr;
TRACE("(%p)->(%p 0x%08x %p)\n", This, hwndOwner, grfFlags, ppEnumIDList);
@ -987,11 +985,8 @@ static HRESULT WINAPI ShellFolder2_EnumObjects(IShellFolder2* iface, HWND hwndOw
return E_UNEXPECTED;
}
newIterator = UnixSubFolderIterator_Constructor(This, grfFlags);
hr = IUnknown_QueryInterface(newIterator, &IID_IEnumIDList, (void**)ppEnumIDList);
IUnknown_Release(newIterator);
return hr;
*ppEnumIDList = UnixSubFolderIterator_Constructor(This, grfFlags);
return S_OK;
}
static HRESULT CreateUnixFolder(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv, const CLSID *pCLSID);
@ -2521,21 +2516,20 @@ static const IEnumIDListVtbl UnixSubFolderIterator_IEnumIDList_Vtbl = {
UnixSubFolderIterator_IEnumIDList_Clone
};
static IUnknown *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter) {
static IEnumIDList *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter)
{
UnixSubFolderIterator *iterator;
TRACE("(pUnixFolder=%p)\n", pUnixFolder);
iterator = SHAlloc((ULONG)sizeof(UnixSubFolderIterator));
iterator = SHAlloc(sizeof(*iterator));
iterator->lpIEnumIDListVtbl = &UnixSubFolderIterator_IEnumIDList_Vtbl;
iterator->m_cRef = 0;
iterator->m_cRef = 1;
iterator->m_fFilter = fFilter;
iterator->m_dirFolder = opendir(pUnixFolder->m_pszPath);
lstrcpyA(iterator->m_szFolder, pUnixFolder->m_pszPath);
UnixSubFolderIterator_IEnumIDList_AddRef((IEnumIDList*)iterator);
return (IUnknown*)iterator;
return (IEnumIDList*)iterator;
}
#else /* __MINGW32__ || _MSC_VER */