shell32: Add ICommDlgBrowser3 stub to the ExplorerBrowser control.
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 _ExplorerBrowserImpl {
     const IExplorerBrowserVtbl *lpVtbl;
     const IShellBrowserVtbl *lpsbVtbl;
+    const ICommDlgBrowser3Vtbl *lpcdb3Vtbl;
     LONG ref;
     BOOL destroyed;
 
@@ -382,6 +383,12 @@
     {
         *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 @@
     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 @@
     eb->ref = 1;
     eb->lpVtbl = &vt_IExplorerBrowser;
     eb->lpsbVtbl = &vt_IShellBrowser;
+    eb->lpcdb3Vtbl = &vt_ICommDlgBrowser3;
 
     list_init(&eb->event_clients);
     list_init(&eb->travellog);