[PATCH 6/6] uiautomationcore: Implement MSAA accState based property IDs for MSAA providers.
Connor McAdams
cmcadams at codeweavers.com
Wed Jun 8 08:27:57 CDT 2022
On Wed, Jun 08, 2022 at 10:04:43AM +0100, Huw Davies wrote:
> On Wed, May 25, 2022 at 02:37:39PM -0400, Connor McAdams wrote:
> > static void test_UiaProviderFromIAccessible(void)
> > diff --git a/dlls/uiautomationcore/uia_provider.c b/dlls/uiautomationcore/uia_provider.c
> > index ab2b8305b10..69bc78e34c0 100644
> > --- a/dlls/uiautomationcore/uia_provider.c
> > +++ b/dlls/uiautomationcore/uia_provider.c
> > @@ -32,6 +32,25 @@ static void variant_init_i4(VARIANT *v, int val)
> > V_I4(v) = val;
> > }
> >
> > +static void variant_init_bool(VARIANT *v, BOOL val)
> > +{
> > + V_VT(v) = VT_BOOL;
> > + V_BOOL(v) = val ? VARIANT_TRUE : VARIANT_FALSE;
> > +}
> > +
> > +static BOOL msaa_check_acc_state(IAccessible *acc, VARIANT cid, LONG flag)
>
> DWORD/ULONG flag.
>
> > +{
> > + HRESULT hr;
> > + VARIANT v;
> > +
> > + VariantInit(&v);
> > + hr = IAccessible_get_accState(acc, cid, &v);
> > + if (SUCCEEDED(hr) && V_VT(&v) == VT_I4 && (V_I4(&v) & flag))
> > + return TRUE;
> > +
> > + return FALSE;
> > +}
> > +
> > static LONG msaa_role_to_uia_control_type(LONG role)
> > {
> > switch (role)
> > @@ -214,6 +233,26 @@ HRESULT WINAPI msaa_provider_GetPropertyValue(IRawElementProviderSimple *iface,
> >
> > break;
> >
> > + case UIA_HasKeyboardFocusPropertyId:
> > + variant_init_bool(ret_val, msaa_check_acc_state(msaa_prov->acc, msaa_prov->cid,
> > + STATE_SYSTEM_FOCUSED));
>
> Unless you have need for these two helpers down the line, I'd combine
> them, i.e. have _check_acc_state() return a VARIANT.
>
I use msaa_check_acc_state separately in a later patch, so it helps to
have them separate.
> Huw.
>
> P.S. bonus points will be awarded for using gitlab to send v2 ;-)
Okee doke, will fix the LONG flag and try out a gitlab PR.
Thanks!
More information about the wine-devel
mailing list