office-gobmx/accessibility/inc/standard
Michael Weghorn ab7a94b840 tdf#160971 a11y: Send full text on changed combobox text
When the text of an editable combobox is changed
(e.g. using the up/down keys), the Orca screen
reader on Linux announces the newly inserted text.

This has been the case for other GTK or Qt
applications for a while, and with recent Orca
commit [1]

    commit 3a9e6b8d7b16bf2fc7919868cfd1a16e44422710
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Fri May 10 10:16:58 2024 +0200

        soffice: Use default logic for editable combobox value change

, the same logic is used for LibreOffice as well.

For the gtk3 VCL plugin which has a custom combobox
implementation using native GTK widgets, this generally
works since

    commit 9f078ed7b6
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue May 7 10:04:16 2024 +0200

        tdf#160971 gtk3 a11y: Set role for custom editable combobox

However, the qt6 VCL plugin uses the VCL combobox
implementation, and only the actual difference between
the text of the previous and current entry was sent
in the TEXT_CHANGED event, resulting in Orca only
announcing those letters that were added/changed,
e.g. just "ans Narrow" when changing the font in the
Writer formatting toolbar from "Liberation Serif"
to "Liberation Sans Narrow".

This doesn't really make clear what entry is selected.
Align the a11y event with what GTK and Qt do
and set the full old and new entry texts in the event.

To do that, add a new virtual
`VCLXAccessibleTextComponent:PreferFullTextInTextChangedEvent`
that defaults to false to keep the previous behavior as default,
and override it for `VCLXAccessibleEdit` to return true
in the case that the edit is the subedit of a combobox
(the parent has a combobox role).
Use this in `VCLXAccessibleTextComponent::SetText` to
determine whether to notify just of the changed characters
or to send the whole old/new text.

With this in place, Orca also announces the whole new
entry text (e.g. "Liberation Sans Narrow" for the above
example) when using the qt6 VCL plugin.
(It currently additionally announces an extra "Selection
deleted" when switching entries, as the text selection
also changes, but that aspect is to be handled separate
from this change here.)

[1] 3a9e6b8d7b

Change-Id: I240aa0ad5ac9585e007d67a8c69e305cf1f38185
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167479
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-05-10 21:49:49 +02:00
..
accessiblemenubasecomponent.hxx use concrete type for OAccessibleMenuBaseComponent::m_aAccessibleChildren 2023-08-31 10:34:10 +02:00
accessiblemenucomponent.hxx Use ImplInheritanceHelper in OAccessibleMenuComponent 2023-01-26 19:01:24 +00:00
accessiblemenuitemcomponent.hxx [API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bit 2022-09-02 15:47:37 +02:00
svtaccessiblenumericfield.hxx a11y: Send VALUE_CHANGED event for FormattedField 2023-04-15 05:39:03 +02:00
vclxaccessiblebox.hxx use more concrete type in VCLXAccessibleBox 2023-09-05 22:00:15 +02:00
vclxaccessiblebutton.hxx Use ImplInheritanceHelper in VCLXAccessibleButton 2023-01-26 19:55:22 +00:00
vclxaccessiblecheckbox.hxx Use ImplInheritanceHelper in VCLXAccessibleCheckBox 2023-01-26 19:55:32 +00:00
vclxaccessiblecombobox.hxx
vclxaccessibledropdowncombobox.hxx
vclxaccessibledropdownlistbox.hxx
vclxaccessibleedit.hxx tdf#160971 a11y: Send full text on changed combobox text 2024-05-10 21:49:49 +02:00
vclxaccessiblefixedhyperlink.hxx
vclxaccessiblefixedtext.hxx
vclxaccessibleheaderbar.hxx [API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bit 2022-09-02 15:47:37 +02:00
vclxaccessibleheaderbaritem.hxx Use ImplInheritanceHelper in VCLXAccessibleHeaderBarItem 2023-01-26 19:55:47 +00:00
vclxaccessiblelist.hxx tdf#159910 a11y: Dispose VCLXAccessibleList children 2024-02-28 09:02:46 +01:00
vclxaccessiblelistbox.hxx
vclxaccessiblelistitem.hxx convert VCLXAccessibleListItem to comphelper::WeakComponentImplHelper 2024-03-28 06:43:03 +01:00
vclxaccessiblemenu.hxx Use ImplInheritanceHelper in VCLXAccessibleMenu 2023-01-27 08:32:21 +00:00
vclxaccessiblemenubar.hxx [API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bit 2022-09-02 15:47:37 +02:00
vclxaccessiblemenuitem.hxx loplugin:unnecessaryvirtual 2024-01-15 13:56:05 +01:00
vclxaccessiblemenuseparator.hxx
vclxaccessiblepopupmenu.hxx [API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bit 2022-09-02 15:47:37 +02:00
vclxaccessibleradiobutton.hxx Use ImplInheritanceHelper in VCLXAccessibleRadioButton 2023-01-27 10:29:25 +00:00
vclxaccessiblescrollbar.hxx Use ImplInheritanceHelper in VCLXAccessibleScrollBar 2023-01-27 11:45:27 +00:00
vclxaccessiblestatusbar.hxx use concrete type for VCLXAccessibleStatusBar::m_aAccessibleChildren 2023-08-31 10:33:53 +02:00
vclxaccessiblestatusbaritem.hxx a11y: Drop some AccessibleTextHelper_BASE typedefs 2024-02-26 22:55:02 +01:00
vclxaccessibletabcontrol.hxx use concrete type for VCLXAccessibleTabControl::m_aAccessibleChildren 2023-08-30 22:16:36 +02:00
vclxaccessibletabpage.hxx a11y: Drop some AccessibleTextHelper_BASE typedefs 2024-02-26 22:55:02 +01:00
vclxaccessibletabpagewindow.hxx [API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bit 2022-09-02 15:47:37 +02:00
vclxaccessibletextcomponent.hxx tdf#160971 a11y: Send full text on changed combobox text 2024-05-10 21:49:49 +02:00
vclxaccessibletextfield.hxx Use ImplInheritanceHelper in VCLXAccessibleTextField 2023-01-27 11:47:42 +00:00
vclxaccessibletoolbox.hxx use concrete type for ToolBoxItemsMap 2023-08-30 22:16:23 +02:00
vclxaccessibletoolboxitem.hxx a11y: Drop some AccessibleTextHelper_BASE typedefs 2024-02-26 22:55:02 +01:00