Piotr Caban : oleacc: Add Window_OleWindow_GetWindow implementation.

Alexandre Julliard julliard at winehq.org
Mon Sep 20 16:26:20 CDT 2021


Module: wine
Branch: master
Commit: 3e3a2be891fb583f2f1e298033c2a3da31af659e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=3e3a2be891fb583f2f1e298033c2a3da31af659e

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Sep 20 18:03:36 2021 +0200

oleacc: Add Window_OleWindow_GetWindow implementation.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Connor McAdams <cmcadams at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/oleacc/tests/main.c | 12 ++++++------
 dlls/oleacc/window.c     | 12 +++++++++---
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/dlls/oleacc/tests/main.c b/dlls/oleacc/tests/main.c
index 180113b29f9..7d1c376bc25 100644
--- a/dlls/oleacc/tests/main.c
+++ b/dlls/oleacc/tests/main.c
@@ -1039,8 +1039,8 @@ static void test_default_client_accessible_object(void)
     hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IOleWindow, (void**)&ow);
     ok(hr == S_OK, "got %x\n", hr);
     hr = IOleWindow_GetWindow(ow, &hwnd2);
-    todo_wine ok(hr == S_OK, "got %x\n", hr);
-    todo_wine ok(btn == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, btn);
+    ok(hr == S_OK, "got %x\n", hr);
+    ok(btn == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, btn);
     IOleWindow_Release(ow);
 
     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);
     ok(hr == S_OK, "got %x\n", hr);
     hr = IOleWindow_GetWindow(ow, &hwnd2);
-    todo_wine ok(hr == S_OK, "got %x\n", hr);
-    todo_wine ok(chld == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld);
+    ok(hr == S_OK, "got %x\n", hr);
+    ok(chld == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld);
     IOleWindow_Release(ow);
 
     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);
     ok(hr == S_OK, "got %x\n", hr);
     hr = IOleWindow_GetWindow(ow, &hwnd2);
-    todo_wine ok(hr == S_OK, "got %x\n", hr);
-    todo_wine ok(chld2 == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld2);
+    ok(hr == S_OK, "got %x\n", hr);
+    ok(chld2 == hwnd2, "hwnd2 = %p, expected %p\n", hwnd2, chld2);
     IOleWindow_Release(ow);
 
     hr = IDispatch_QueryInterface(V_DISPATCH(&v), &IID_IAccessible, (void**)&win);
diff --git a/dlls/oleacc/window.c b/dlls/oleacc/window.c
index 5957d49ef1f..387ed4bc9f7 100644
--- a/dlls/oleacc/window.c
+++ b/dlls/oleacc/window.c
@@ -31,6 +31,8 @@ typedef struct {
     IEnumVARIANT IEnumVARIANT_iface;
 
     LONG ref;
+
+    HWND hwnd;
 } Window;
 
 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);
 }
 
-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);
-    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)
@@ -427,6 +432,7 @@ HRESULT create_window_object(HWND hwnd, const IID *iid, void **obj)
     window->IOleWindow_iface.lpVtbl = &WindowOleWindowVtbl;
     window->IEnumVARIANT_iface.lpVtbl = &WindowEnumVARIANTVtbl;
     window->ref = 1;
+    window->hwnd = hwnd;
 
     hres = IAccessible_QueryInterface(&window->IAccessible_iface, iid, obj);
     IAccessible_Release(&window->IAccessible_iface);




More information about the wine-cvs mailing list