a10a99b0c6
Instead of doing extra bookkeeping to keep
`CMAccessible::m_pszName` as a class member up
to date with the current value of the accessible
name, just retrieve the current a11y name directly
from the underlying `XAccessible` when it is requested
via the IAccessible2 API in `CMAccessible::get_accName`.
This is basically the accessible name equivalent of the
the following commit that did similarly for the
accessible description:
commit fcf4a26275
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Wed Jan 5 13:41:53 2022 +0000
tdf#146306 wina11y: Retrieve accessible desc on demand
Adapt 'MAccessible::get_accDescription' to directly
retrieve the accessible description on demand via the
corresponding XAccessible, rather than keeping
track of it in a class member.
This simplifies the handling and makes it
unnecessary to "manually" update the description
on 'accessibility::AccessibleEventId::DESCRIPTION_CHANGED'
events, since the new value will
be queried next time it is needed anyway.
This also fixes the problem that a significant
amount of time was spent generating accessible
descriptions for all newly inserted a11y objects when
entering values into Calc cells with the NVDA
screen reader in use, resulting in several
seconds of delay.
Querying up-to-date values from the underlying
UNO interfaces on demand instead of doing extra
manual bookkeeping in the winaccessibility code
may be possible for more a11y attributes in addition
to the accessible description handled in this commit,
but each one will have to be looked at separately.
This also allows to drop the
`AccContainerEventListener::HandleNameChangedEvent` and
`AccObjectContainerEventListener::HandleStateChangedEvent`
overrides of the base class implementations unnecessary,
as the only thing they did in addition was updating the
a11y name.
This commit has no effect on events sent on the platform
layer, those are still sent as before to notify about the
name change.
Change-Id: I4d1df1d0b73ce963cdaec91d642ff5bbf2b371bc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172148
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
44 lines
1.8 KiB
C++
44 lines
1.8 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdio.h>
|
|
#include "AccContainerEventListener.hxx"
|
|
#include <com/sun/star/accessibility/XAccessibleEventListener.hpp>
|
|
#include <com/sun/star/accessibility/XAccessible.hpp>
|
|
|
|
|
|
/**
|
|
* AccObjectContainerEventListener is inherited from AccContainerEventListener. It handles the events
|
|
* generated by container controls. The accessible role is: SHAPE
|
|
* It defines the procedure of specific event handling related with shapes and provides
|
|
* the detailed support for some related methods.
|
|
*/
|
|
class AccObjectContainerEventListener: public AccContainerEventListener
|
|
{
|
|
public:
|
|
AccObjectContainerEventListener(css::accessibility::XAccessible* pAcc, AccObjectWinManager& rManager);
|
|
virtual ~AccObjectContainerEventListener() override;
|
|
|
|
//for visible data changed event, for shapes, the visibledatachanged should be mapped to LOCATION_CHANGED
|
|
virtual void HandleVisibleDataChangedEvent() override;
|
|
};
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|