David Hedberg : shell32: Add ICommDlgBrowser3 stub to the ExplorerBrowser control.

Alexandre Julliard julliard at winehq.org
Wed Aug 25 12:35:08 CDT 2010


Module: wine
Branch: master
Commit: 59965f9c80f1c112a59e48b307e88e328ca411b5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=59965f9c80f1c112a59e48b307e88e328ca411b5

Author: David Hedberg <david.hedberg at gmail.com>
Date:   Wed Aug 25 15:24:34 2010 +0200

shell32: Add ICommDlgBrowser3 stub to the ExplorerBrowser control.

---

 dlls/shell32/ebrowser.c       |  128 +++++++++++++++++++++++++++++++++++++++++
 dlls/shell32/tests/ebrowser.c |    6 +-
 2 files changed, 131 insertions(+), 3 deletions(-)

diff --git a/dlls/shell32/ebrowser.c b/dlls/shell32/ebrowser.c
index e753a79..d53d08e 100644
--- a/dlls/shell32/ebrowser.c
+++ b/dlls/shell32/ebrowser.c
@@ -51,6 +51,7 @@ typedef struct _travellog_entry {
 typedef struct _ExplorerBrowserImpl {
     const IExplorerBrowserVtbl *lpVtbl;
     const IShellBrowserVtbl *lpsbVtbl;
+    const ICommDlgBrowser3Vtbl *lpcdb3Vtbl;
     LONG ref;
     BOOL destroyed;
 
@@ -382,6 +383,12 @@ static HRESULT WINAPI IExplorerBrowser_fnQueryInterface(IExplorerBrowser *iface,
     {
         *ppvObject = &This->lpsbVtbl;
     }
+    else if(IsEqualIID(riid, &IID_ICommDlgBrowser) ||
+            IsEqualIID(riid, &IID_ICommDlgBrowser2) ||
+            IsEqualIID(riid, &IID_ICommDlgBrowser3))
+    {
+        *ppvObject = &This->lpcdb3Vtbl;
+    }
 
     if(*ppvObject)
     {
@@ -1039,6 +1046,126 @@ static const IShellBrowserVtbl vt_IShellBrowser = {
     IShellBrowser_fnSetToolbarItems
 };
 
+/**************************************************************************
+ * ICommDlgBrowser3 Implementation
+ */
+
+static inline ExplorerBrowserImpl *impl_from_ICommDlgBrowser3(ICommDlgBrowser3 *iface)
+{
+    return (ExplorerBrowserImpl *)((char*)iface - FIELD_OFFSET(ExplorerBrowserImpl, lpcdb3Vtbl));
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnQueryInterface(ICommDlgBrowser3 *iface,
+                                                        REFIID riid,
+                                                        void **ppvObject)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    TRACE("%p\n", This);
+    return IUnknown_QueryInterface((IUnknown*) This, riid, ppvObject);
+}
+
+static ULONG WINAPI ICommDlgBrowser3_fnAddRef(ICommDlgBrowser3 *iface)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    TRACE("%p\n", This);
+    return IUnknown_AddRef((IUnknown*) This);
+}
+
+static ULONG WINAPI ICommDlgBrowser3_fnRelease(ICommDlgBrowser3 *iface)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    TRACE("%p\n", This);
+    return IUnknown_Release((IUnknown*) This);
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnOnDefaultCommand(ICommDlgBrowser3 *iface,
+                                                          IShellView *shv)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p)\n", This, shv);
+    return E_NOTIMPL;
+}
+static HRESULT WINAPI ICommDlgBrowser3_fnOnStateChange(ICommDlgBrowser3 *iface,
+                                                       IShellView *shv, ULONG uChange)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p, %d)\n", This, shv, uChange);
+    return E_NOTIMPL;
+}
+static HRESULT WINAPI ICommDlgBrowser3_fnIncludeObject(ICommDlgBrowser3 *iface,
+                                                       IShellView *pshv, LPCITEMIDLIST pidl)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p, %p)\n", This, pshv, pidl);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnNotify(ICommDlgBrowser3 *iface,
+                                                IShellView *pshv,
+                                                DWORD dwNotifyType)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p, 0x%x)\n", This, pshv, dwNotifyType);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnGetDefaultMenuText(ICommDlgBrowser3 *iface,
+                                                            IShellView *pshv,
+                                                            LPWSTR pszText, int cchMax)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p, %s, %d)\n", This, pshv, debugstr_w(pszText), cchMax);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnGetViewFlags(ICommDlgBrowser3 *iface,
+                                                      DWORD *pdwFlags)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p)\n", This, pdwFlags);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnOnColumnClicked(ICommDlgBrowser3 *iface,
+                                                         IShellView *pshv, int iColumn)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p, %d)\n", This, pshv, iColumn);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnGetCurrentFilter(ICommDlgBrowser3 *iface,
+                                                          LPWSTR pszFileSpec,
+                                                          int cchFileSpec)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%s, %d)\n", This, debugstr_w(pszFileSpec), cchFileSpec);
+    return S_OK;
+}
+
+static HRESULT WINAPI ICommDlgBrowser3_fnOnPreviewCreated(ICommDlgBrowser3 *iface,
+                                                          IShellView *pshv)
+{
+    ExplorerBrowserImpl *This = impl_from_ICommDlgBrowser3(iface);
+    FIXME("stub, %p (%p)\n", This, pshv);
+    return S_OK;
+}
+
+static const ICommDlgBrowser3Vtbl vt_ICommDlgBrowser3 = {
+    ICommDlgBrowser3_fnQueryInterface,
+    ICommDlgBrowser3_fnAddRef,
+    ICommDlgBrowser3_fnRelease,
+    ICommDlgBrowser3_fnOnDefaultCommand,
+    ICommDlgBrowser3_fnOnStateChange,
+    ICommDlgBrowser3_fnIncludeObject,
+    ICommDlgBrowser3_fnNotify,
+    ICommDlgBrowser3_fnGetDefaultMenuText,
+    ICommDlgBrowser3_fnGetViewFlags,
+    ICommDlgBrowser3_fnOnColumnClicked,
+    ICommDlgBrowser3_fnGetCurrentFilter,
+    ICommDlgBrowser3_fnOnPreviewCreated
+};
+
 HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv)
 {
     ExplorerBrowserImpl *eb;
@@ -1055,6 +1182,7 @@ HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, voi
     eb->ref = 1;
     eb->lpVtbl = &vt_IExplorerBrowser;
     eb->lpsbVtbl = &vt_IShellBrowser;
+    eb->lpcdb3Vtbl = &vt_ICommDlgBrowser3;
 
     list_init(&eb->event_clients);
     list_init(&eb->travellog);
diff --git a/dlls/shell32/tests/ebrowser.c b/dlls/shell32/tests/ebrowser.c
index 809a7fc..1dd866d 100644
--- a/dlls/shell32/tests/ebrowser.c
+++ b/dlls/shell32/tests/ebrowser.c
@@ -167,9 +167,9 @@ static void test_QueryInterface(void)
     test_qinterface(IID_IExplorerBrowser, S_OK);
     test_qinterface(IID_IShellBrowser, S_OK);
     todo_wine test_qinterface(IID_IOleWindow, S_OK);
-    todo_wine test_qinterface(IID_ICommDlgBrowser, S_OK);
-    todo_wine test_qinterface(IID_ICommDlgBrowser2, S_OK);
-    todo_wine test_qinterface(IID_ICommDlgBrowser3, S_OK);
+    test_qinterface(IID_ICommDlgBrowser, S_OK);
+    test_qinterface(IID_ICommDlgBrowser2, S_OK);
+    test_qinterface(IID_ICommDlgBrowser3, S_OK);
     todo_wine test_qinterface(IID_IServiceProvider, S_OK);
     todo_wine test_qinterface(IID_IObjectWithSite, S_OK);
     todo_wine test_qinterface(IID_IConnectionPointContainer, S_OK);




More information about the wine-cvs mailing list