From 40bdbda82559062caa335b282883b50ce4f8a7fa Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Fri, 9 May 2014 13:59:58 +0200 Subject: [PATCH] oleacc: Add Client_get_accParent implementation. --- dlls/oleacc/client.c | 7 +++++-- dlls/oleacc/tests/main.c | 13 +++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dlls/oleacc/client.c b/dlls/oleacc/client.c index d557de934f6..b2c734a8375 100644 --- a/dlls/oleacc/client.c +++ b/dlls/oleacc/client.c @@ -113,8 +113,11 @@ static HRESULT WINAPI Client_Invoke(IAccessible *iface, DISPID dispIdMember, static HRESULT WINAPI Client_get_accParent(IAccessible *iface, IDispatch **ppdispParent) { Client *This = impl_from_Client(iface); - FIXME("(%p)->(%p)\n", This, ppdispParent); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, ppdispParent); + + return AccessibleObjectFromWindow(This->hwnd, OBJID_WINDOW, + &IID_IDispatch, (void**)ppdispParent); } static HRESULT WINAPI Client_get_accChildCount(IAccessible *iface, LONG *pcountChildren) diff --git a/dlls/oleacc/tests/main.c b/dlls/oleacc/tests/main.c index 62fe3f8d5dc..3fb23dabbad 100644 --- a/dlls/oleacc/tests/main.c +++ b/dlls/oleacc/tests/main.c @@ -225,6 +225,8 @@ static LRESULT WINAPI test_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARA return E_UNEXPECTED; if(lparam == (DWORD)OBJID_CLIENT) return LresultFromObject(&IID_IUnknown, wparam, &Object); + if(lparam == (DWORD)OBJID_WINDOW) + return 0; ok(0, "unexpected (%ld)\n", lparam); return 0; @@ -311,6 +313,7 @@ static void test_default_client_accessible_object(void) static const WCHAR shortcutW[] = {'A','l','t','+','t',0}; IAccessible *acc; + IDispatch *disp; HWND chld, hwnd; HRESULT hr; VARIANT vid, v; @@ -427,6 +430,11 @@ static void test_default_client_accessible_object(void) ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v)); ok(V_I4(&v) == 0, "V_I4(&v) = %d\n", V_I4(&v)); + hr = IAccessible_get_accParent(acc, &disp); + ok(hr == S_OK, "got %x\n", hr); + ok(disp != NULL, "disp == NULL\n"); + IDispatch_Release(disp); + DestroyWindow(hwnd); hr = IAccessible_get_accChildCount(acc, &l); @@ -454,6 +462,11 @@ static void test_default_client_accessible_object(void) ok(V_VT(&v) == VT_I4, "V_VT(&v) = %d\n", V_VT(&v)); ok(V_I4(&v) == 0, "V_I4(&v) = %d\n", V_I4(&v)); + disp = (void*)0xdeadbeef; + hr = IAccessible_get_accParent(acc, &disp); + ok(hr == E_FAIL, "got %x\n", hr); + ok(disp == NULL, "disp = %p\n", disp); + IAccessible_Release(acc); }