oleacc: Add Window_OleWindow_GetWindow implementation.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Connor McAdams <cmcadams@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Piotr Caban 2021-09-20 18:03:36 +02:00 committed by Alexandre Julliard
parent 1a3db363c6
commit 3e3a2be891
2 changed files with 15 additions and 9 deletions

View File

@ -1039,8 +1039,8 @@ static void test_default_client_accessible_object(void)
hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IOleWindow, (void**)&ow); hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IOleWindow, (void**)&ow);
ok(hr == S_OK, "got %x\n", hr); ok(hr == S_OK, "got %x\n", hr);
hr = IOleWindow_GetWindow(ow, &hwnd2); hr = IOleWindow_GetWindow(ow, &hwnd2);
todo_wine ok(hr == S_OK, "got %x\n", hr); ok(hr == S_OK, "got %x\n", hr);
todo_wine ok(btn == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, btn); ok(btn == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, btn);
IOleWindow_Release(ow); IOleWindow_Release(ow);
hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IAccessible, (void**)&win); hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IAccessible, (void**)&win);
@ -1064,8 +1064,8 @@ static void test_default_client_accessible_object(void)
hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IOleWindow, (void**)&ow); hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IOleWindow, (void**)&ow);
ok(hr == S_OK, "got %x\n", hr); ok(hr == S_OK, "got %x\n", hr);
hr = IOleWindow_GetWindow(ow, &hwnd2); hr = IOleWindow_GetWindow(ow, &hwnd2);
todo_wine ok(hr == S_OK, "got %x\n", hr); ok(hr == S_OK, "got %x\n", hr);
todo_wine ok(chld == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld); ok(chld == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld);
IOleWindow_Release(ow); IOleWindow_Release(ow);
hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IAccessible, (void**)&win); hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IAccessible, (void**)&win);
@ -1088,8 +1088,8 @@ static void test_default_client_accessible_object(void)
hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IOleWindow, (void**)&ow); hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IOleWindow, (void**)&ow);
ok(hr == S_OK, "got %x\n", hr); ok(hr == S_OK, "got %x\n", hr);
hr = IOleWindow_GetWindow(ow, &hwnd2); hr = IOleWindow_GetWindow(ow, &hwnd2);
todo_wine ok(hr == S_OK, "got %x\n", hr); ok(hr == S_OK, "got %x\n", hr);
todo_wine ok(chld2 == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld2); ok(chld2 == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld2);
IOleWindow_Release(ow); IOleWindow_Release(ow);
hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IAccessible, (void**)&win); hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IAccessible, (void**)&win);

View File

@ -31,6 +31,8 @@ typedef struct {
IEnumVARIANT IEnumVARIANT_iface; IEnumVARIANT IEnumVARIANT_iface;
LONG ref; LONG ref;
HWND hwnd;
} Window; } Window;
static inline Window* impl_from_Window(IAccessible *iface) static inline Window* impl_from_Window(IAccessible *iface)
@ -327,11 +329,14 @@ static ULONG WINAPI Window_OleWindow_Release(IOleWindow *iface)
return IAccessible_Release(&This->IAccessible_iface); return IAccessible_Release(&This->IAccessible_iface);
} }
static HRESULT WINAPI Window_OleWindow_GetWindow(IOleWindow *iface, HWND *phwnd) static HRESULT WINAPI Window_OleWindow_GetWindow(IOleWindow *iface, HWND *hwnd)
{ {
Window *This = impl_from_Window_OleWindow(iface); Window *This = impl_from_Window_OleWindow(iface);
FIXME("(%p)->(%p)\n", This, phwnd);
return E_NOTIMPL; TRACE("(%p)->(%p)\n", This, hwnd);
*hwnd = This->hwnd;
return S_OK;
} }
static HRESULT WINAPI Window_OleWindow_ContextSensitiveHelp(IOleWindow *iface, BOOL fEnterMode) static HRESULT WINAPI Window_OleWindow_ContextSensitiveHelp(IOleWindow *iface, BOOL fEnterMode)
@ -427,6 +432,7 @@ HRESULT create_window_object(HWND hwnd, const IID *iid, void **obj)
window->IOleWindow_iface.lpVtbl = &WindowOleWindowVtbl; window->IOleWindow_iface.lpVtbl = &WindowOleWindowVtbl;
window->IEnumVARIANT_iface.lpVtbl = &WindowEnumVARIANTVtbl; window->IEnumVARIANT_iface.lpVtbl = &WindowEnumVARIANTVtbl;
window->ref = 1; window->ref = 1;
window->hwnd = hwnd;
hres = IAccessible_QueryInterface(&window->IAccessible_iface, iid, obj); hres = IAccessible_QueryInterface(&window->IAccessible_iface, iid, obj);
IAccessible_Release(&window->IAccessible_iface); IAccessible_Release(&window->IAccessible_iface);