Age | Commit message (Collapse) | Author |
|
Now that the accessibility module no longer
depends on toolkit and svtools and there's
therefore no more cyclic dependency, merge it
into the vcl library, where the vcl widgets are located,
for which the classes in the accessibility
module (primarily) provide the a11y classes.
Initially, take over the existing UNO service
"com.sun.star.accessibility.comp.GetStandardAccessibleFactoryService"
to vcl as is. It used to be necessary to break the cyclic
dependency between the vcl, svtools, toolkit and
accessibility module. (vcl is the lowest and
accessibility used to be furthest up in the dependency
chain; yet vcl needed it to create the objects
providing the XAccessible/XAccessibleContext
for its widgets.)
Further simplification can happen in upcoming commits.
Change-Id: Ib46c87446dc9121d3b8e735e0e5a40594da73cc5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178647
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
toolkit::IAccessibleFactory and
vcl::IAccessibleFactory are abstract classes
providing methods to retrieve the XAccessible or
XAccessibleContext for different vcl widgets.
Both are implemented by the same class in the
accessibility module: AccessibleFactory
Merge toolkit::IAccessibleFactory into
vcl::IAccessibleFactory to have things in
one place, and have everything in vcl, i.e.
no longer part of it in toolkit that itself
depends on vcl.
Change-Id: I5da571899c9987267cbec2950630d0c44ff4d2f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178643
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Move AccessibleTabBar and related classes to
implement accessibility for the TabBar control
to svtools, where the TabBar code is also located.
(This matches how it's organized for the Ruler control
whose a11y class AccessibleRuler is also in svtools.)
This removes the last dependency of the accessibility
module on svtools, so drop that from accessibility/Library_acc.mk.
Instead of using the AccessibleFactory to
create an instance in TabBar::CreateAccessible,
just call the AccessibleTabBar ctor directly.
Change-Id: Id6a8852de930ffe7fe7509f84f33861d274120dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178588
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
`ACCESSIBILITY_EXT_ACCESSIBLETABBARPAGELIST` isn't defined
anywhere, so this check doesn't make any difference.
Change-Id: I4f9c2ec1f7893158c4a9780acfa8d442924db6d0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178587
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
IIUC, this code path should never be reached:
The accessible for menu and menu floating windows
gets created in Menu::CreateAccessible. The
menu floating window reuses the Menu's accessible
and if the code path dropped in this commit was ever
reached for menu floating windows, it would be problematic,
see the commit messsage of
commit b608604d0bbecdc24a17175374581b4e2d720658
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Dec 5 14:07:52 2024 +0000
tdf#164093 tdf#157001 wina11y: Use vcl::Window's actual XAccessible
for more details.
Implementation for floating toolbar windows to have a null
XAccessible is implemented in ImplPopupFloatWin::CreateAccessible,
so that case also shouldn't get here (where a null XAccessibleContext
would have been returned).
Change-Id: Ie9a55b4120a6857e9cac534fa2bdfd3a0cf7d9c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178584
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Change-Id: I0122df11e30fb4f083d4183a450b00a0b2adca72
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178450
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
|
|
Switch from using svt::OStringTransfer::CopyString
to vcl::unohelper::TextDataObject::CopyStringTo
to copy a string to the clipboard, to avoid
a dependency on the svtools library for this task.
Change-Id: I5226c28b5519d4fc020f45d7967b9ad15aab0dae
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178438
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Build the code for the TabBar a11y classes independent of
whether or not the scripting feature is enabled.
Otherwise, e.g. the tab bar showing sheets in Calc is inaccessible
in a `--disable-scripting` build, i.e. it e.g. doesn't show up
in Accerciser.
It was made conditional on HAVE_FEATURE_SCRIPTING in
commit fb308c193bc9f0d07ad2cccd5a0b239f86cbe442
Date: Wed May 19 12:16:42 2021 +0200
Fix --disable-scripting for DESKTOP build
, which doesn't give any explicit reason, so my
assumption is that it had some dependency relying
on that feature being enabled back then.
At least a local `--disable-scripting` build of mine
works fine with this enabled again now, so let's assume
whatever was the problem back then is solved by now.
Change-Id: I6ee2ea6823aaa30bf597678c2b3ee86b42111920
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178437
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
In the AccessibleBrowseBox ctor, no longer use the
VCLUnoHelper::GetInterface helper from the toolkit module,
but do the same inline.
(Assigning to AccessibleBrowseBoxBase::m_xFocusWindow
after the AccessibleBrowseBoxBase base class ctor has
been called looks a little odd to me as that one
would add a focus listener for that window if
already set/passed when called - but leave the
logic unchanged for now.)
With this, Library_acc no longer depends on the
toolkit module, so drop the dependency from the
make file.
Change-Id: I8e7759c2d92a344bef51d154df0045c78f0471fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178435
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
After
commit 168512dce7f1f1453c045584d47bd78a0a6c73f7
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Dec 12 18:06:13 2024 +0100
a11y: Stop using VCLXWindow in vcl a11y classes
and further related commits, VCLXAccessibleComponent
no longer depends on anything in the toolkit module,
so move it from there to vcl.
This way, subclassing VCLXAccessibleComponent (as the
a11y classes for vcl widgets do, currently located in
accessibility/ ) no longer introduces a toolkit
dependency.
Change-Id: I4fd33fb1dc2265d75e8ca9ad87bcc70db61639d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178434
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Drop the `_xFocusWindow` param from the BrowseBoxAccessibleElement
ctor. Both subclasses are unconditionally passing nullptr.
Just unconditionally pass nullptr in the base class ctor instead
of forwarding the (always nullptr) param.
Change-Id: I9296ae8dae8ac53c52cec99e143288e70a586ce0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178432
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Both callers of AccessibleFactory::createAccessibleCheckBoxCell
(in SvHeaderTabListBox::CreateAccessibleColumnHeader)
unconditionally pass nullptr for the `_xFocusWindow` param.
Therefore, drop the parameter from that method and the
AccessibleBrowseBoxHeaderCell ctor, and unconditionally
pass nullptr to the base class ctor.
This is basically the same as for AccessibleBrowseBoxTableCell in previous commit
Change-Id: I22d5cb98332aa5d89fc4c479d0ec29588fe83e4d
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Fri Dec 13 12:37:03 2024 +0100
a11y: Drop always null AccessibleBrowseBoxTableCell focus win param
Change-Id: Ife57d0163f1c99407e08875ba98725ea114597cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178418
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Both callers of AccessibleFactory::createAccessibleCheckBoxCell
unconditionally pass nullptr for the `_xFocusWindow` param.
Therefore, drop the parameter from that method and the
AccessibleCheckBoxCell ctor, and unconditionally
pass nullptr to the base class ctor.
This is the same as for AccessibleBrowseBoxTableCell in previous commit
Change-Id: I22d5cb98332aa5d89fc4c479d0ec29588fe83e4d
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Fri Dec 13 12:37:03 2024 +0100
a11y: Drop always null AccessibleBrowseBoxTableCell focus win param
Change-Id: I76660aed909fc73ab19bc99a3e3bfb54176e7e10
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178417
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Both callers of AccessibleFactory::createAccessibleBrowseBoxTableCell
unconditionally pass nullptr for the `_xFocusWindow` param.
Therefore, drop the parameter from that method and the
AccessibleBrowseBoxTableCell ctor, and unconditionally
pass nullptr to the base class ctor.
Change-Id: I22d5cb98332aa5d89fc4c479d0ec29588fe83e4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178416
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
... and pass the Reference params by const ref, as
suggested by loplugin:passparamsbyref.
Change-Id: I7f0e153d901f451d47d6a9b94255dd41f89c7d0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178408
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Change-Id: I99d087f820cc8195de525889b8d766304ef18396
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178407
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Use the existing vcl::unohelper::ConvertFontSlant
helper to convert the FontItalic enum value to the
corresponding FontSlant instead of casting to an integer.
The latter would trigger an assertion when trying to
extract a FontSlant from the Any later, seen e.g.
with the qt6 VCL plugin when navigating to the paragraphs
in the "Tools" > "Macros" > "Edit Macros" dialog in Accerciser,
or when moving navigating through the text while Orca is active.
Backtrace:
1 __pthread_kill_implementation pthread_kill.c 44 0x7ffff789dc8c
2 __pthread_kill_internal pthread_kill.c 78 0x7ffff789dcef
3 __GI_raise raise.c 26 0x7ffff7849c42
4 __GI_abort abort.c 79 0x7ffff78324f0
5 ?? 0x7ffff74a1a3d
6 ?? 0x7ffff74b300a
7 std::terminate() 0x7ffff74a15e9
8 __cxa_throw 0x7ffff74b3288
9 o3tl::doAccess<com::sun::star::awt::FontSlant> any.hxx 284 0x7fffee23ea99
10 ConvertUnoToIAccessible2TextAttributes AccessibleTextAttributeHelper.cxx 288 0x7fffee23bd8e
11 AccessibleTextAttributeHelper::GetIAccessible2TextAttributes AccessibleTextAttributeHelper.cxx 347 0x7fffee23b45e
12 QtAccessibleWidget::attributes QtAccessibleWidget.cxx 1001 0x7fffe4685866
13 non-virtual thunk to QtAccessibleWidget::attributes(int, int *, int *) const 0x7fffe4685bca
14 AtSpiAdaptor::getAttributes atspiadaptor.cpp 2329 0x7fffe2d15b79
15 AtSpiAdaptor::textInterface atspiadaptor.cpp 1990 0x7fffe2d0c3ed
16 AtSpiAdaptor::handleMessage atspiadaptor.cpp 1481 0x7fffe2d067f8
17 QDBusConnectionPrivate::activateObject qdbusintegrator.cpp 1448 0x7fffe046d567
18 QDBusActivateObjectEvent::placeMetaCall qdbusintegrator.cpp 1604 0x7fffe046e520
19 QObject::event qobject.cpp 1432 0x7fffe3908d70
20 QApplicationPrivate::notify_helper qapplication.cpp 3297 0x7fffe17e2d90
21 QApplication::notify qapplication.cpp 3247 0x7fffe17e6cad
22 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1122 0x7fffe3845c99
23 QCoreApplication::sendEvent qcoreapplication.cpp 1564 0x7fffe3846a79
24 QCoreApplicationPrivate::sendPostedEvents qcoreapplication.cpp 1920 0x7fffe38483b8
25 QCoreApplication::sendPostedEvents qcoreapplication.cpp 1751 0x7fffe38468bc
26 postEventSourceDispatch qeventdispatcher_glib.cpp 246 0x7fffe3e39281
27 ?? 0x7fffea10b81f
28 ?? 0x7fffea10da57
29 g_main_context_iteration 0x7fffea10e1c0
30 QEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 399 0x7fffe3e3847b
31 QPAEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 89 0x7fffe2f67218
32 QtInstance::ImplYield QtInstance.cxx 464 0x7fffe472d3c2
33 QtInstance::DoYield QtInstance.cxx 475 0x7fffe4730441
34 ImplYield svapp.cxx 385 0x7fffeed3c9d6
35 Application::Yield svapp.cxx 473 0x7fffeed3c36f
36 Application::Execute svapp.cxx 360 0x7fffeed3c150
37 desktop::Desktop::Main app.cxx 1679 0x7ffff7b2788b
38 ImplSVMain svmain.cxx 228 0x7fffeed5e2a6
39 SVMain svmain.cxx 246 0x7fffeed5fe99
40 soffice_main sofficemain.cxx 121 0x7ffff7ba11ba
41 sal_main main.c 51 0x555555555a6d
42 main main.c 49 0x555555555a47
Change-Id: Id30fc0acf20af5213c025a337765bb638ab6b02c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178404
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
As was done for the other a11y classes subclassing
VCLXAccessibleComponent in
commit 168512dce7f1f1453c045584d47bd78a0a6c73f7
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Dec 12 18:06:13 2024 +0100
a11y: Stop using VCLXWindow in vcl a11y classes
, also pass the vcl::Window when creating an
XAccessibleContext for a TextView, to get rid of
the UNO/toolkit dependency.
Change-Id: I3c5febd27a53fe17f83cc4e95dd7466f11a7a225
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178403
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Instead of storing a reference to the VCLXWindow (which is
a TextWindowPeer), which is the EditorWindow's accessible
as Document::m_xAccessible member, adjust Document::getAccessible
to get the accessible on demand via vcl::Window::GetAccessible
instead.
This also prepares for no more passing the VCLXWindow
to the ctor in an upcoming commit.
Change-Id: I498f90a456eda453508a4f1ed84983006594ea86
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178402
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Adjust VCLXAccessibleComponent and subclasses to take
a vcl::Window arg instead of a VCLXWindow in the ctor
and drop the VCLXAccessibleComponent::m_xVCLXWindow member
that used to hold a reference to the VCLXWindow.
(VCLXAccessibleComponent still holds a VclPtr
to the corresponding vcl::Window.)
Instead of passing the UNO/toolkit peer (VCLXWindow
and subclasses) to the AccessibleFactory to create
an XAccessibleContext context for the underlying VCL
widget, pass the underlying vcl widget, which can
now be passed as is to the corresponding ctors
of VCLXAccessibleComponent and specialized subclasses.
This follows earlier commits replacing the use of the
VCLXWindow classes by direct uses of the vcl::Window
subclasses inside VCLXAccessibleComponent and subclasses
and is the next step in reducing the UNO/toolkit
dependency in the accessibility implementation for
vcl widgets.
For now, the logic where those accessible objects
are created remains in VCLXWindow::CreateAccessibleContext
and overrides, but that can change in the future.
`IAccessibleFactory::createAccessibleContext(VCLXMultiLineEdit*)`
is just dropped and doesn't need its own replacement:
The previous VCLXMultiLineEdit variant was
creating a VCLXAccessibleEdit like the variant
taking a VCLXEdit, but VCLXMultiLineEdit doesn't
subclass VCLXEdit.
The vcl MultiLineEdit however subclasses Edit,
so VCLXMultiLineEdit::CreateAccessibleContext can make
use of `IAccessibleFactory::createAccessibleContext(Edit*)`
as well now.
This also implements what was mentioned in earlier
commit
Change-Id: I67bb7a6a237e57d0c522790c09a595c02ac06325
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Dec 12 17:16:29 2024 +0100
sw annotation win a11y: Skip VCLXWindow logic
:
> Drop the comment about the code being dodgy from
> SwAnnotationWin::CreateAccessible. This commit partially
> addresses it and switching VCLXAccessibleComponent
> to using the vcl::Window will take care of the rest,
> see upcoming commit
> Change-Id If0894e733273eecad268c6a932ecee7c2e34b4c2
> ("a11y: Stop using VCLXWindow in vcl a11y classes").
Now that the VCLXAccessibleComponent ctor takes a
vcl::Window, the sw::annotation::SwAnnotationWin
can be passed directly.
From a user perspective, no change in behavior is
intended by this commit.
Change-Id: If0894e733273eecad268c6a932ecee7c2e34b4c2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178385
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
... and to the AccessibleIconView subclass one, too.
This is in preparation of switching the base class VCLXAccessibleComponent
ctor to taking a vcl::Window* instead of a VCLXWindow* in an
upcoming commit.
Change-Id: I10074f4c6716c2c7cb3b800c75bec8200ee6208c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178366
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Pass a non-const SvtIconChoiceCtrl& instead of a const one,
in preparation of switching the base class VCLXAccessibleComponent
ctor to taking a vcl::Window* instead of a VCLXWindow* in an
upcoming commit.
Change-Id: Ib2fd0efeb897c8f375309b00946a89dd2f8fd097
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178365
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
... if `pWindow` is null.
(`git show --ignore-space-change` shows the
"actual change" more clearly.)
Change-Id: I39685d0a51ee9a5a280d302c940b2cdbc21c2b6e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178322
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
... instead of using the toolkit/UNO wrapper class
VCLXScrollBar.
WIP: simplify
Change-Id: I9df8efb514d2bcf555bd163a7fe418c5c8d9e903
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178241
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
See also VCLXScrollBar::getOrientation which uses the
same logic and was called earlier. This is in preparation
of using the vcl ScrollBar directly instead of depending
on its VCLXScrollbar toolkit/UNO peer.
Change-Id: Ie2a1a104c69d56036890e995fc97849d5acc137a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178240
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
... instead of using the toolkit/UNO wrapper class
VCLXRadioButton.
While at it, also switch the single use of
VCLXAccessibleComponent::GetAsDynamic to
VCLXAccessibleComponent::GetAs, too, as
the control is known to be a RadioButton.
Change-Id: I9d26e0ca165c8df16095a3bc460907567c04ccd0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178239
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: Ibb268268926cc91f595f19026f6cee4b5a74a8bc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178038
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: If4b8379f676a1a412eed6d79bf6b5382d3c726b0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178030
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I1509ca337b5864805132a87dab2627df721091db
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178029
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I8af6ac72923aa823db356769153790ae9d7752a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178028
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
|
|
Change-Id: Ic8322090d38d58475c4c946e1f850950bce7421a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178027
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
|
|
... instead of using the toolkit/UNO wrapper class
VCLXCheckBox.
Change-Id: I271535f3e2e46202e2ca3d2e3f9a1d05ac380c41
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177815
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
... instead of using the toolkit/UNO wrapper
SVTXNumericField.
Change-Id: I86e274a06f210e2076e287087a1d4b979abe7c35
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177814
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Use the vcl::Window for the null check instead of the
corresponding VCLXWindow. There's no need to
use a toolkit class here, in particular since the
vcl::Window is used later anyway.
Change-Id: Ia2c80f9634eadf33601af8c9ea1f628e7ea3e96b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177813
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Other than most of the a11y implementations for vcl
classes, VCLXAccessiblePopupMenu etc. do not
make use of any VCLXWindow (i.e. UNO/toolkit wrapper of a
vcl::Window) and thus do not depend on the toolkit
module, which the accessibility module depends on.
Therefore, there's also no need to use the accessible
factory to create them (which is needed when toolkit
classes are involved to avoid a dependency cycle).
Move those classes from the accessibility module to
vcl and add a new method Menu::CreateAccessible and
move the logic from AccessibleFactory::createAccessible
there. Drop the now unnecessary factory methods
previously used for those classes.
No change in behavior intended (yet), but this
also simplifies the code involved for the
tdf#164093 scenario.
Change-Id: Ie3f6f1a02bf6662206d31383473cdc868e1f9164
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177812
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Move helpers to convert between the Rectangle, Point and Size
classes in vcl and in css::awt from VCLUnoHelper (in the toolkit module)
to vcl::unohelper (in the vcl module), for reuse in vcl in upcoming
commits.
Change-Id: I7b11c8a6b8c843a01ce25b1e4c0fb1869ad1e6ee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177816
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
... so these constants can be reused in vcl.
See commit message of
Change-Id: I6aeee104f271c804c85727002822b89a9263628f
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Wed Dec 4 11:45:44 2024 +0100
a11y: Move CharacterAttributeshelper from accessibility to vcl
for motivation.
Change-Id: I1552c0a0111c81643ab9bb6f202c8a31662251d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177811
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
This is in preparation of moving more from
the accessibility module to vcl.
Currently, the a11y implementations for vcl widgets
are implemented in the accessibility module (in
directory of the same name), which in turn depends
on the toolkit module.
To break the dependency cycle (vcl needs accessibility
to create a11y objects for its widgets), there's a UNO
service.
At least some a11y classes don't really need toolkit,
however, so the plan is to decouple this and move those
from the accessibility module into vcl in upcoming
commits.
Change-Id: I6aeee104f271c804c85727002822b89a9263628f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177810
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
This method from the unpublished XAccessibleExtendedComponent
interface is not used by any of the a11y platform bridges, and
I don't know of any platform a11y API that would need it.
In order to report character/font attributes, there is the
XAccessibleText interface and its
XAccessiText::getCharacterAttributes method instead, which
actually gets used by the platform a11y bridges.
Therefore, drop this method to simplify code, and also decouple
the accessibility module a bit further from the toolkit
module without having to reorganize code further.
(VCLXFont from the toolkit module currently gets used in
various implementations.)
Change-Id: I06ea3cc5998a13927b3f869877b28f03ac07c89b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177809
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Pass arguments right away in ctor rather than
having a ctor that takes no arguments and then
having to call VCLXFont::Init with the arguments
right after calling the ctor.
Change-Id: I651e27154499f61638409377438f9589bc7412a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177795
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Let VCLXAccessibleEdit::getAccessibleName take care
of returning the same accessible name as the combobox
parent for the combobox subedit instead of trying
to set the same name when that combobox child is
requested the first time.
This makes sure the name remains in sync, and prevents
trying to get the combobox a11y name while a dialog
containing it might still be in the process of getting
constructed by VclBuilder, in which case e.g. the
AccessibleRelation::LABELLED_BY relation that
gets used in Window::getDefaultAccessibleName
may not have been set. That relation e.g. gets
set if a label has the combobox set as its
"mnemonic-widget" in a .ui file.
The previous logic was triggering an assert
when opening the "Fonts" page in the "Tools" -> "Options"
dialog or using the search feature in that dialog on Windows
with an AT (like NVDA) active when trying to set the a11y
name of the "font2" combobox's entry
(UI file: cui/uiconfig/ui/optfontspage.ui):
Assertion failed: GetChildCount() == 4 || pWindowImpl->mbInDispose, file .../vcl/source/window/layout.cxx, line 1945
Backtrace:
1 abort ucrtbase 0x7ffad46e286e
2 get_wpgmptr ucrtbase 0x7ffad46e426e
3 get_wpgmptr ucrtbase 0x7ffad46e4165
4 wassert ucrtbase 0x7ffad46e44f1
5 VclScrolledWindow::get_child layout.cxx 1945 0x7ffa88f67e35
6 nextLogicalChildOfParent dialog.cxx 139 0x7ffa88f147cf
7 nextLogicalChildOfParent dialog.cxx 157 0x7ffa88f14884
8 nextLogicalChildOfParent dialog.cxx 157 0x7ffa88f14884
9 ImplGetSubChildWindow dlgctrl.cxx 137 0x7ffa88f197e1
10 ImplGetChildWindow dlgctrl.cxx 151 0x7ffa88f18dae
11 ImplGetNextWindow dlgctrl.cxx 180 0x7ffa88f19600
12 ImplFindDlgCtrlWindow dlgctrl.cxx 362 0x7ffa88f18a2b
13 vcl::ImplGetLabeledBy legacyaccessibility.cxx 122 0x7ffa88e65437
14 vcl::Window::getLegacyNonLayoutAccessibleRelationLabeledBy legacyaccessibility.cxx 178 0x7ffa88e657ac
15 vcl::Window::GetAccessibleRelationLabeledBy accessibility.cxx 604 0x7ffa88e6193a
16 vcl::Window::getDefaultAccessibleName accessibility.cxx 470 0x7ffa88e63c73
17 vcl::Window::GetAccessibleName accessibility.cxx 441 0x7ffa88e614ba
18 vcl::Window::SetAccessibleName accessibility.cxx 427 0x7ffa88e623bc
19 VCLXAccessibleBox::getAccessibleChild vclxaccessiblebox.cxx 319 0x7ffa853e3e02
20 AccObjectWinManager::InsertChildrenAccObj AccObjectWinManager.cxx 536 0x7ffa855b2ed1
21 AccEventListener::HandleChildChangedEvent AccEventListener.cxx 109 0x7ffa855b9593
22 AccEventListener::notifyEvent AccEventListener.cxx 64 0x7ffa855ba6ef
23 AccContainerEventListener::notifyEvent AccContainerEventListener.cxx 95 0x7ffa855bdfbc
24 comphelper::AccessibleEventNotifier::addEvent accessibleeventnotifier.cxx 256 0x7ffa916598c0
25 comphelper::OCommonAccessibleComponent::NotifyAccessibleEvent accessiblecomponenthelper.cxx 127 0x7ffa9165071e
26 VCLXAccessibleComponent::ProcessWindowChildEvent vclxaccessiblecomponent.cxx 165 0x7ffa8b7e6029
27 VCLXAccessibleComponent::WindowChildEventListener vclxaccessiblecomponent.cxx 124 0x7ffa8b7e6d62
28 VCLXAccessibleComponent::LinkStubWindowChildEventListener vclxaccessiblecomponent.cxx 114 0x7ffa8b7e5ee6
29 Link<VclWindowEvent &,void>::Call link.hxx 111 0x7ffa88f3bf43
30 vcl::Window::CallEventListeners event.cxx 300 0x7ffa88f3c57c
31 vcl::Window::ImplSetReallyVisible window.cxx 1331 0x7ffa8904394d
32 vcl::Window::ImplSetReallyVisible window.cxx 1344 0x7ffa89043a1d
33 vcl::Window::Show window.cxx 2336 0x7ffa89047671
34 vcl::Window::Show window.cxx 2349 0x7ffa8904776e
35 vcl::Window::set_property window2.cxx 1537 0x7ffa8902d4b3
36 ComboBox::set_property combobox.cxx 1553 0x7ffa89097521
37 BuilderUtils::set_properties builder.cxx 2192 0x7ffa88ef13c5
38 VclBuilder::insertObject builder.cxx 2469 0x7ffa88ee18df
39 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 230 0x7ffa88e23d54
40 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
41 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
42 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
43 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
44 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
45 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
46 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
47 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleObject widgetbuilder.hxx 234 0x7ffa88e23dff
48 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::handleChild widgetbuilder.hxx 127 0x7ffa88e22c30
49 WidgetBuilder<vcl::Window,VclPtr<vcl::Window>,PopupMenu,VclPtr<PopupMenu>>::processUIFile widgetbuilder.hxx 70 0x7ffa88e24b4a
50 VclBuilder::VclBuilder builder.cxx 523 0x7ffa88ea53be
51 SalInstanceBuilder::SalInstanceBuilder salvtables.cxx 7088 0x7ffa895da3ff
52 std::make_unique<SalInstanceBuilder,vcl::Window * &,rtl::OUString const &,rtl::OUString const &,0> memory 3434 0x7ffa895d44c8
53 SalInstance::CreateBuilder salvtables.cxx 7470 0x7ffa895ef18e
54 Application::CreateBuilder builder.cxx 198 0x7ffa88ebed2a
55 BuilderPage::BuilderPage weldutils.cxx 28 0x7ffa89684128
56 SfxTabPage::SfxTabPage tabdlg.cxx 137 0x7ffa8cd5f0e5
57 SvxFontSubstTabPage::SvxFontSubstTabPage fontsubs.cxx 36 0x7ffa8372d1cd
58 std::make_unique<SvxFontSubstTabPage,weld::Container * &,weld::DialogController * &,SfxItemSet const &,0> memory 3434 0x7ffa8372cdbf
59 SvxFontSubstTabPage::Create fontsubs.cxx 146 0x7ffa8372f692
60 CreateGeneralTabPage treeopt.cxx 289 0x7ffa8383199a
61 OfaTreeOptionsDialog::SelectHdl_Impl treeopt.cxx 1317 0x7ffa838372e7
62 OfaTreeOptionsDialog::ShowPageHdl_Impl treeopt.cxx 623 0x7ffa83837f11
63 OfaTreeOptionsDialog::LinkStubShowPageHdl_Impl treeopt.cxx 620 0x7ffa83834366
64 Link<weld::TreeView &,void>::Call link.hxx 111 0x7ffa88ebdf13
65 weld::TreeView::signal_changed weld.hxx 969 0x7ffa88ef210f
66 SalInstanceTreeView::SelectHdl salvtables.cxx 5304 0x7ffa895f4b39
67 SalInstanceTreeView::LinkStubSelectHdl salvtables.cxx 5299 0x7ffa895f38c6
68 Link<SvTreeListBox *,void>::Call link.hxx 111 0x7ffa88ebe413
69 SvTreeListBox::SelectHdl treelistbox.cxx 454 0x7ffa892ba7a1
70 SvTreeListBox::Select treelistbox.cxx 2128 0x7ffa892ba514
71 SvImpLBox::SetCursor svimpbox.cxx 617 0x7ffa892d05e8
72 ImpLBSelEng::SetCursorAtPoint svimpbox.cxx 2596 0x7ffa892d08a9
73 SelectionEngine::SelMouseButtonDown seleng.cxx 174 0x7ffa88fd0071
74 SvImpLBox::MouseButtonDown svimpbox.cxx 2016 0x7ffa892cc580
75 SvTreeListBox::MouseButtonDown treelistbox.cxx 2277 0x7ffa892b71e2
76 ImplHandleMouseEvent winproc.cxx 708 0x7ffa89059867
77 ImplHandleSalMouseButtonDown winproc.cxx 2338 0x7ffa8905afef
78 ImplWindowFrameProc winproc.cxx 2683 0x7ffa8905ca47
79 SalFrame::CallCallback salframe.hxx 312 0x7ffa88e1ee56
80 ImplHandleMouseMsg salframe.cxx 3335 0x7ffa85c270bf
81 SalFrameWndProc salframe.cxx 5987 0x7ffa85c2de7d
82 SalFrameWndProcW salframe.cxx 6342 0x7ffa85c2ec60
83 CallWindowProcW USER32 0x7ffad61cef5c
84 DispatchMessageW USER32 0x7ffad61ce684
85 ImplSalDispatchMessage salinst.cxx 475 0x7ffa85b8cf98
86 ImplSalYield salinst.cxx 552 0x7ffa85b8d6bd
87 WinSalInstance::DoYield salinst.cxx 581 0x7ffa85b8cc61
88 ImplYield svapp.cxx 385 0x7ffa89656364
89 Application::Yield svapp.cxx 474 0x7ffa89659fe2
90 Dialog::Execute dialog.cxx 1077 0x7ffa88f0c017
91 SalInstanceDialog::run salvtables.cxx 1882 0x7ffa896149af
92 weld::DialogController::run weld.hxx 2691 0x7ffa88eef436
93 OfaTreeOptionsDialog::run treeopt.cxx 2514 0x7ffa83841dd2
94 CuiAbstractController_Impl::Execute dlgfact.cxx 144 0x7ffa837085c8
95 SfxApplication::OfaExec_Impl appserv.cxx 1641 0x7ffa8cb36506
96 SfxStubSfxApplicationOfaExec_Impl sfxslots.hxx 1307 0x7ffa8cb10165
97 SfxDispatcher::Call_Impl dispatch.cxx 257 0x7ffa8cc1f4ae
98 SfxDispatcher::Execute_ dispatch.cxx 754 0x7ffa8cc2260f
99 SfxBindings::Execute_Impl bindings.cxx 1062 0x7ffa8cc0086d
100 SfxDispatchController_Impl::dispatch unoctitm.cxx 736 0x7ffa8cc93caa
101 SfxOfficeDispatch::dispatch unoctitm.cxx 254 0x7ffa8cc945b0
102 framework::MenuBarManager::Select menubarmanager.cxx 821 0x7ffa8d8574d4
103 framework::MenuBarManager::LinkStubSelect menubarmanager.cxx 776 0x7ffa8d855796
104 Link<Menu *,bool>::Call link.hxx 111 0x7ffa88f77d88
105 Menu::Select menu.cxx 360 0x7ffa88f83e19
106 Menu::ImplCallSelect menu.cxx 2152 0x7ffa88f7c761
107 Menu::LinkStubImplCallSelect menu.cxx 2148 0x7ffa88f82366
108 Link<void *,void>::Call link.hxx 111 0x7ffa890529b3
109 ImplHandleUserEvent winproc.cxx 2288 0x7ffa8905ba97
110 ImplWindowFrameProc winproc.cxx 2850 0x7ffa8905d256
111 SalFrame::CallCallback salframe.hxx 312 0x7ffa88e1ee56
112 ImplHandleUserEvent salframe.cxx 4471 0x7ffa85c28fab
113 SalFrameWndProc salframe.cxx 6236 0x7ffa85c2e654
114 SalFrameWndProcW salframe.cxx 6342 0x7ffa85c2ec60
115 CallWindowProcW USER32 0x7ffad61cef5c
116 DispatchMessageW USER32 0x7ffad61ce684
117 ImplSalDispatchMessage salinst.cxx 475 0x7ffa85b8cf98
118 ImplSalYield salinst.cxx 506 0x7ffa85b8d09b
119 WinSalInstance::DoYield salinst.cxx 581 0x7ffa85b8cc61
120 ImplYield svapp.cxx 385 0x7ffa89656364
121 Application::Yield svapp.cxx 474 0x7ffa89659fe2
122 Application::Execute svapp.cxx 361 0x7ffa89653aa6
123 desktop::Desktop::Main app.cxx 1679 0x7ffa9336887f
124 ImplSVMain svmain.cxx 228 0x7ffa8966b310
125 SVMain svmain.cxx 247 0x7ffa8966baf2
126 soffice_main sofficemain.cxx 121 0x7ffa933b86f4
127 sal_main main.c 51 0x7ff64a491013
128 main main.c 49 0x7ff64a49105a
129 __scrt_common_main_seh exe_common.inl 288 0x7ff64a491344
130 BaseThreadInitThunk KERNEL32 0x7ffad5c07374
131 RtlUserThreadStart ntdll 0x7ffad679cc91
Change-Id: I3be8a8e4acd1c87fdfa495c755fd947e9a11b9aa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177314
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
The "The role is always AccessibleRole::COMBO_BOX." comment
for VCLXAccessibleBox::getAccessibleRole is misleading,
as the actual implementation can also return AccessibleRole::PANEL.
Change-Id: I15b089e168aa7ec0701eacc8630023123f3a10dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177313
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
It will be reused in another method in an upcoming commit.
Change-Id: Ie6b4559e268d9340b5b13844c906232c6ff38a6e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177312
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Like the base class implementation, they call
cppu::supportsService, so there's no need to override
the former.
Change-Id: I6550edce0567502a411cac402923c2c02e02f58d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177311
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
Instead of having a purely virtual
VCLXAccessibleBox::IsValid that all subclasses
implement the same way, deduplicate this by
moving the implementation to the VCLXAccessibleBox
base class.
Change-Id: I354bf3d0be6751a165b373c06b951c6f0b63480b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177252
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: I186718f4e74ca3a77d92a62358d6007a1f6fd7fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176903
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
|
|
V728 An excessive check can be simplified. The '(A && !B) || (!A && B)' expression is equivalent to the 'bool(A) != bool(B)' expression.
Change-Id: I31edbbc7ce3b10085c5f1404e74485ea180ddec3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176577
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
|
|
Change-Id: I890ec73e30d3cc6b210903ecee29431f3cb5f635
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175979
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Switch css::accessibility::AccessibleRelationType
from integer constants to an enum.
This provides more type safety and improves the debugging
experience, e.g. GDB now prints
com::sun::star::accessibility::AccessibleRelationType::AccessibleRelationType_CONTENT_FLOWS_TO
instead of just "2" when printing the value of a
corresponding variable, so it's no longer necessary
to manually look up what constant has that integer
value to know what relation this refers to.
offapi/com/sun/star/accessibility/AccessibleRelationType.idl
had this comment:
> <p>We are using constants instead of a more typesafe enum. The reason
> for this is that IDL enums may not be extended. Therefore, in order to
> include future extensions to the set of roles we have to use constants
> here.</p>
However, the a11y UNO API is internal (not published),
so that shouldn't be a concern.
Change-Id: I44a7d56cb085dc24effb24fcd34bb222b78ef4cd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176153
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
|
|
This avoids re-entry to Document::handleParagraphNotifications, which
already was known to be problematic (see comments in Document::Notify,
and m_bSelectionChangedNotification introduced to avoid one such case).
Change-Id: I9e0b451f13ad109d08b1afc9cc0346cd6049b026
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175879
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
|