[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