[PATCH] shell32: autocomplete: add stub IAutoCompleteDropDown interface to autocomplete

Mikołaj Zalewski mikolaj at zalewski.pl
Wed Sep 17 14:42:36 CDT 2008


---
 dlls/shell32/autocomplete.c |   85 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 82 insertions(+), 3 deletions(-)

diff --git a/dlls/shell32/autocomplete.c b/dlls/shell32/autocomplete.c
index a026e8b..0f8db4f 100644
--- a/dlls/shell32/autocomplete.c
+++ b/dlls/shell32/autocomplete.c
@@ -62,6 +62,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
 typedef struct
 {
     const IAutoComplete2Vtbl  *lpVtbl;
+    const IAutoCompleteDropDownVtbl *lpDropDownVtbl;
     LONG ref;
     BOOL  enabled;
     HWND hwndEdit;
@@ -75,13 +76,20 @@ typedef struct
 } IAutoCompleteImpl;
 
 static const IAutoComplete2Vtbl acvt;
+static const IAutoCompleteDropDownVtbl acdropdownvt;
 
 
 /*
   converts This to an interface pointer
 */
 #define _IUnknown_(This) (IUnknown*)&(This->lpVtbl)
-#define _IAutoComplete2_(This)  (IAutoComplete2*)&(This->lpvtbl)
+#define _IAutoComplete2_(This)  (IAutoComplete2*)&(This->lpVtbl)
+#define _IAutoCompleteDropDown_(This)  (IAutoCompleteDropDown*)&(This->lpDropDownVtbl)
+
+static inline IAutoCompleteImpl *impl_from_IAutoCompleteDropDown(IAutoCompleteDropDown *iface)
+{
+    return (IAutoCompleteImpl *)((char *)iface - FIELD_OFFSET(IAutoCompleteImpl, lpDropDownVtbl));
+}
 
 static LRESULT APIENTRY ACEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 static LRESULT APIENTRY ACLBoxSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
@@ -102,6 +110,7 @@ HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVO
 
     lpac->ref = 1;
     lpac->lpVtbl = &acvt;
+    lpac->lpDropDownVtbl = &acdropdownvt;
     lpac->enabled = TRUE;
     lpac->enumstr = NULL;
     lpac->options = ACO_AUTOAPPEND;
@@ -138,6 +147,9 @@ static HRESULT WINAPI IAutoComplete2_fnQueryInterface(
         IsEqualIID(riid, &IID_IAutoComplete2))
     {
 	*ppvObj = (IAutoComplete2*)This;
+    } else if (IsEqualIID(riid, &IID_IAutoCompleteDropDown))
+    {
+        *ppvObj = _IAutoCompleteDropDown_(This);
     }
 
     if (*ppvObj)
@@ -146,7 +158,7 @@ static HRESULT WINAPI IAutoComplete2_fnQueryInterface(
 	TRACE("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj);
 	return S_OK;
     }
-    TRACE("-- Interface: E_NOINTERFACE\n");
+    WARN("unsupported interface: %s\n", debugstr_guid(riid));
     return E_NOINTERFACE;	
 }
 
@@ -334,7 +346,42 @@ static HRESULT WINAPI IAutoComplete2_fnSetOptions(
 }
 
 /**************************************************************************
- *  IAutoComplete2_fnVTable
+ *  IAutoCompleteDropDown_fnGetDropDownStatus
+ */
+static HRESULT WINAPI IAutoCompleteDropDown_fnGetDropDownStatus(
+    IAutoCompleteDropDown *iface,
+    DWORD *pdwFlags,
+    LPWSTR *ppwszString)
+{
+    IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+
+    FIXME("(%p) -> (%p, %p): stub\n", This, pdwFlags, ppwszString);
+
+    if (pdwFlags)
+        *pdwFlags = 0;
+    if (ppwszString)
+        *ppwszString = NULL;
+
+    return E_NOTIMPL;
+}
+
+/**************************************************************************
+ *  IAutoCompleteDropDown_fnResetEnumarator
+ */
+static HRESULT WINAPI IAutoCompleteDropDown_fnResetEnumerator(
+    IAutoCompleteDropDown *iface)
+{
+    IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+
+    FIXME("(%p): stub\n", This);
+
+    return E_NOTIMPL;
+}
+
+
+
+/**************************************************************************
+ *  IAutoComplete2 VTable
  */
 static const IAutoComplete2Vtbl acvt =
 {
@@ -348,6 +395,38 @@ static const IAutoComplete2Vtbl acvt =
     IAutoComplete2_fnGetOptions,
 };
 
+
+static HRESULT WINAPI IAutoCompleteDropDown_fnQueryInterface(IAutoCompleteDropDown *iface,
+            REFIID riid, LPVOID *ppvObj)
+{
+    IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+    return IAutoComplete2_fnQueryInterface(_IAutoComplete2_(This), riid, ppvObj);
+}
+
+static ULONG WINAPI IAutoCompleteDropDown_fnAddRef(IAutoCompleteDropDown *iface)
+{
+    IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+    return IAutoComplete2_fnAddRef(_IAutoComplete2_(This));
+}
+
+static ULONG WINAPI IAutoCompleteDropDown_fnRelease(IAutoCompleteDropDown *iface)
+{
+    IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+    return IAutoComplete2_fnRelease(_IAutoComplete2_(This));
+}
+
+/**************************************************************************
+ *  IAutoCompleteDropDown VTable
+ */
+static const IAutoCompleteDropDownVtbl acdropdownvt =
+{
+    IAutoCompleteDropDown_fnQueryInterface,
+    IAutoCompleteDropDown_fnAddRef,
+    IAutoCompleteDropDown_fnRelease,
+    IAutoCompleteDropDown_fnGetDropDownStatus,
+    IAutoCompleteDropDown_fnResetEnumerator,
+};
+
 /*
   Window procedure for autocompletion
  */
-- 
1.5.4


--------------050807000500030806020607--



More information about the wine-patches mailing list