From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/dataexchange/main.c | 31 +++++++++++++++++++++++++++++++ dlls/dataexchange/private.h | 1 + 2 files changed, 32 insertions(+)
diff --git a/dlls/dataexchange/main.c b/dlls/dataexchange/main.c index e9fa3202523..7de60e08ad6 100644 --- a/dlls/dataexchange/main.c +++ b/dlls/dataexchange/main.c @@ -24,6 +24,7 @@ struct dataexchange { IActivationFactory IActivationFactory_iface; ICoreDragDropManagerStatics ICoreDragDropManagerStatics_iface; + IDragDropManagerInterop IDragDropManagerInterop_iface; LONG ref; };
@@ -54,6 +55,12 @@ static HRESULT STDMETHODCALLTYPE dataexchange_QueryInterface(IActivationFactory *out = &impl->ICoreDragDropManagerStatics_iface; return S_OK; } + else if (IsEqualGUID(iid, &IID_IDragDropManagerInterop)) + { + IDragDropManagerInterop_AddRef(&impl->IDragDropManagerInterop_iface); + *out = &impl->IDragDropManagerInterop_iface; + return S_OK; + }
FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); *out = NULL; @@ -140,10 +147,34 @@ static const struct ICoreDragDropManagerStaticsVtbl core_dragdrop_manager_static core_dragdrop_manager_statics_GetForCurrentView, };
+DEFINE_IINSPECTABLE(dragdrop_manager_interop, IDragDropManagerInterop, struct dataexchange, + IActivationFactory_iface) + +static HRESULT STDMETHODCALLTYPE dragdrop_manager_interop_GetForWindow(IDragDropManagerInterop *iface, + HWND hwnd, REFIID iid, void **out) +{ + FIXME("iface %p, hwnd %p, iid %s, out %p stub!\n", iface, hwnd, debugstr_guid(iid), out); + return E_NOTIMPL; +} + +static const struct IDragDropManagerInteropVtbl dragdrop_manager_interop_vtbl = +{ + dragdrop_manager_interop_QueryInterface, + dragdrop_manager_interop_AddRef, + dragdrop_manager_interop_Release, + /* IInspectable methods */ + dragdrop_manager_interop_GetIids, + dragdrop_manager_interop_GetRuntimeClassName, + dragdrop_manager_interop_GetTrustLevel, + /* IDragDropManagerInterop methods */ + dragdrop_manager_interop_GetForWindow, +}; + static struct dataexchange dataexchange = { {&activation_factory_vtbl}, {&core_dragdrop_manager_statics_vtbl}, + {&dragdrop_manager_interop_vtbl}, 1 };
diff --git a/dlls/dataexchange/private.h b/dlls/dataexchange/private.h index 41d128cc608..6dae0be4fc4 100644 --- a/dlls/dataexchange/private.h +++ b/dlls/dataexchange/private.h @@ -29,6 +29,7 @@ #include "wine/debug.h" #include "objbase.h" #include "activation.h" +#include "dragdropinterop.h"
#define WIDL_using_Windows_Networking_Connectivity #include "windows.networking.connectivity.h"