[PATCH 3/4] shell32: Add IQueryInfo to more shellfolder
Detlef Riekenberg
wine.dev at web.de
Fri May 18 06:06:18 CDT 2012
--
By by ... Detlef
---
dlls/shell32/shfldr_desktop.c | 10 ++++++++++
dlls/shell32/shfldr_fs.c | 7 +++++++
dlls/shell32/shfldr_mycomp.c | 12 +++++++++++-
dlls/shell32/shfldr_netplaces.c | 10 ++++++++++
4 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c
index 43d4108..e3e85eb 100644
--- a/dlls/shell32/shfldr_desktop.c
+++ b/dlls/shell32/shfldr_desktop.c
@@ -566,8 +566,18 @@ static HRESULT WINAPI ISF_Desktop_fnGetUIObjectOf (IShellFolder2 * iface,
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
SHFree (pidl);
}
+ else if (IsEqualIID(riid, &IID_IQueryInfo) && (cidl == 1))
+ {
+ pidl = ILCombine (This->pidlRoot, apidl[0]);
+ pObj = (IUnknown *) IQueryInfo_Constructor (pidl);
+ SHFree (pidl);
+ hr = S_OK;
+ }
else
+ {
+ FIXME("Unknown interface %s (cidl: %d)\n", debugstr_guid(riid), cidl);
hr = E_NOINTERFACE;
+ }
if (SUCCEEDED(hr) && !pObj)
hr = E_OUTOFMEMORY;
diff --git a/dlls/shell32/shfldr_fs.c b/dlls/shell32/shfldr_fs.c
index 3bbe26e..839d68d 100644
--- a/dlls/shell32/shfldr_fs.c
+++ b/dlls/shell32/shfldr_fs.c
@@ -767,7 +767,14 @@ IShellFolder_fnGetUIObjectOf (IShellFolder2 * iface,
pidl = ILCombine (This->pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
SHFree (pidl);
+
+ } else if (IsEqualIID(riid, &IID_IQueryInfo) && (cidl == 1)) {
+ pidl = ILCombine (This->pidlRoot, apidl[0]);
+ pObj = (IUnknown *) IQueryInfo_Constructor (pidl);
+ SHFree (pidl);
+ hr = S_OK;
} else {
+ FIXME("Unknown interface %s (cidl: %d)\n", debugstr_guid(riid), cidl);
hr = E_NOINTERFACE;
}
diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c
index 200ad86..9f5b891 100644
--- a/dlls/shell32/shfldr_mycomp.c
+++ b/dlls/shell32/shfldr_mycomp.c
@@ -566,8 +566,18 @@ static HRESULT WINAPI ISF_MyComputer_fnGetUIObjectOf (IShellFolder2 * iface,
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*) &pObj);
SHFree (pidl);
}
- else
+ else if (IsEqualIID(riid, &IID_IQueryInfo) && (cidl == 1))
+ {
+ pidl = ILCombine (This->pidlRoot, apidl[0]);
+ pObj = (IUnknown *) IQueryInfo_Constructor (pidl);
+ SHFree (pidl);
+ hr = S_OK;
+ }
+ else
+ {
+ FIXME("Unknown interface %s (cidl: %d)\n", debugstr_guid(riid), cidl);
hr = E_NOINTERFACE;
+ }
if (SUCCEEDED(hr) && !pObj)
hr = E_OUTOFMEMORY;
diff --git a/dlls/shell32/shfldr_netplaces.c b/dlls/shell32/shfldr_netplaces.c
index 39f748b..dcdee8b 100644
--- a/dlls/shell32/shfldr_netplaces.c
+++ b/dlls/shell32/shfldr_netplaces.c
@@ -451,8 +451,18 @@ static HRESULT WINAPI ISF_NetworkPlaces_fnGetUIObjectOf (IShellFolder2 * iface,
{
hr = IShellFolder_QueryInterface (iface, &IID_IDropTarget, (LPVOID *) & pObj);
}
+ else if (IsEqualIID(riid, &IID_IQueryInfo) && (cidl == 1))
+ {
+ pidl = ILCombine (This->pidlRoot, apidl[0]);
+ pObj = (IUnknown *) IQueryInfo_Constructor (pidl);
+ SHFree (pidl);
+ hr = S_OK;
+ }
else
+ {
+ FIXME("Unknown interface %s (cidl: %d)\n", debugstr_guid(riid), cidl);
hr = E_NOINTERFACE;
+ }
if (SUCCEEDED(hr) && !pObj)
hr = E_OUTOFMEMORY;
--
1.7.5.4
More information about the wine-patches
mailing list