Age | Commit message (Collapse) | Author |
|
Change-Id: I300f033054bddc2c0ee1973dbafc108c477bf09a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146103
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...rather than on the deprecated WeakAggComponentImplHelper4.
It was found that e.g. GridControlAccessibleElement, deriving from
AccessibleGridControlBase, was implementing queryInterface in a way that is
incompatible with the XAggregation protocol inherited via
WeakAggComponentImplHelper4. It looks like no code actually made use of the
XAggregation offered by this class hierarchy, so the easiest fix for that
queryInterface implementation appears to switch from
WeakAggComponentImplHelper4 to WeakComponentImplHelper (thereby dropping
XAggregation, and thus rendering the existing queryInterface implementation OK).
Change-Id: Ia7f033d0a93e78a48573cb489dc5542603c35b8c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145793
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I65e535d9f9a81a3712b14b50cc4906b534533e86
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145536
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
It had been using WeakAggComponentImplHelper5 ever since at least
f5d6acb1aa368ce50045b949bc12deb4d4bc0c41 "INTEGRATION: CWS a11ysep (1.1.2); FILE
ADDED", but e.g. AccessibleTabListBoxTable deriving from it implements
queryInterface in a way that is incompatible with XAggregation (it should only
have forwarded to AccessibleBrowseBoxTable::queryInterface, and rather
implemented its logic in an AccessibleTabListBoxTable::queryAggregation
override).
Also, without this commit but instead with a local
> diff --git a/accessibility/inc/extended/AccessibleBrowseBoxBase.hxx b/accessibility/inc/extended/AccessibleBrowseBoxBase.hxx
> index d8bcd169ac2e..45797b838167 100644
> --- a/accessibility/inc/extended/AccessibleBrowseBoxBase.hxx
> +++ b/accessibility/inc/extended/AccessibleBrowseBoxBase.hxx
> @@ -63,6 +63,7 @@ class AccessibleBrowseBoxBase :
> public ::cppu::BaseMutex,
> public AccessibleBrowseBoxImplHelper
> {
> + void SAL_CALL setDelegator(css::uno::Reference<css::uno::XInterface> const &) final { assert(false); }
> public:
> /** Constructor sets specified name and description. If the constant of a
> text is BBTEXT_NONE, the derived class has to set the text via
on all of Linux, macOS, and Windows `make check` still succeeded, and running
the resulting LibreOffice on macOS with the system's VoiceOver enabled, and
doing "LibreOffice - Preferences... - LibreOffice - Advanced" and clicking
around in the "Java runtime environments (JRE) already installed:" table (which
actually uses AccessibleBrowseBoxBase via SvHeaderTabListBox::CreateAccessible
in vcl/source/treelist/svtabbx.cxx) also still succeeded and produced audio, all
without hitting that injected assert that should have fired if the XAggregation
mechanism had been used after all.
Change-Id: Ic213a03adf31bb1754443c1951b9b267f805115b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145477
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...as there were no calls to its OAccessibleImplementationAccess::getUnoTunnelId
so no code apparently made use of that XUnoTunnel
Change-Id: I35d392999f1c28e81f7ff4bf395f63642eb17bce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145250
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
comphelper::OCommonAccessibleComponent
Change-Id: I586ae8fe2842fd879ae2ae506c659d06dda16843
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145160
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...as obsoleted by ef533553559fe09b4afab651fc692885d1acf4ed "Rudimentary support
for dynamic_cast on UNO proxy objects".
This reverts all of:
4cfcc9ac37b90ce64c8402a41eb4638adb185b5c "loplugin:unocast (framework::Desktop)"
03efbf72f4ddf7a84aa8aabef348331bd4b75e8a "loplugin:unocast
(vclcanvas::TextLayout)"
80099fdd51a69eaa6c36ca88ef772810e4a777fa "loplugin:unocast (SalGtkXWindow)"
cc147f576d8687fb79c77d47d41dc4ba1678a469 "loplugin:unocast
(sdext::presenter::CachablePresenterView)"
40db42be1d8fd0f9c6c8c5ba3767ddb9ee2034c2 "loplugin:unocast
(vclcanvas::CanvasFont)"
2d1e7995eae29e2826449eb5179f5fae181794a5 "loplugin:unocast (CairoColorSpace)"
4c0bbe4bd97636207cf71a6aa120c67698891da9 "loplugin:unocast
(canvas::ParametricPolyPolygon)"
89803666621c07d1b1ac9d3bd883f0ca192a91a0 "loplugin:unocast
(vclcanas::CanvasBitmap)"
d5e0c2c8db71878d21c2a7255af08cf5f9a6dd04 "loplugin:unocast
(sfx2::DigitalSignatures)"
c0c4519e0d5b555f59bbc04cc616454edfd1f4ce "loplugin:unocast
(VCLXAccessibleComponent)"
feb8b833a6245d42400f42a0bc789dc84594ee6f "loplugin:unocast (VCLXDialog)"
1fa58cc6cc9c3849753342a5d9a6ddfa461b5e66 "loplugin:unocast (VCLXMultiPage)"
f481f036deb1b1b46f3038074c4659f3a91b9c6c "loplugin:unocast
(DocumentSettingsSerializer)"
73df933f5fa5932f94e5a1b338a3eda00a9ce354 "loplugin:unocast
(css::embed::EmbeddedUpdate)"
420165ab0ef03c0467f9d17f504de2d2fc78f0e6 "loplugin:unocast
(canvas::tools' StandardColorSpace, StandardNoAlphaColorSpace)"
9abe8ee067e6c00f19d8a13346d53c4641c27166 "loplugin:unocast (MutableTreeNode)"
9f3022ceb036f23b4b0994c3e2fbd1001bff225a "loplugin:unocast (VCLXTabPage)"
1be70dda02c12a60778b7607cff2520ae1aa611e "loplugin:unocast
(vcl::unotools::VclCanvasBitmap)"
d6a70bb641b96e8e5616448c2378131ed62658b4 "loplugin:unocast
(basegfx::unotools::UnoPolyPolygon)"
5a14f009e6782c077463c8cbb8e9cea3d7950107 "loplugin:unocast
(xmlsecurity::Certificate)"
99009c9535dfa3e0d838989ccc7d84bfa2320ff4 "loplugin:unocast (sd::Annotation)"
0c7585c5fa78887e5459885ed744e8044fd76137 "loplugin:unocast (sd::TextApiObject)"
24e14afd1bfcaed6c200ab081973fba7e47267ca "loplugin:unocast
(SignatureVerifierImpl)"
1a7ad0c10d286ce9ae2700ceb2fd50eed1fb43a4 "loplugin:unocast
(pcr::PropertyEventTranslation)"
a97e2d2702d9a6f37775ccee2c08c4f3b2479c4b "loplugin:unocast (RangePageBreaks)"
19dfdf86ad1f5b08041d8b7a9f196caf881231ab "iloplugin:unocast
(pcr::OFormattedNumericControl)"
f9785ea595fd8e911f6370e836fa579225b9e571 "loplugin:unocast
(frm::OInterfaceContainer)"
5e5f40a4a92a31b0932c690219d002fcf18598cf "loplugin:unocast (ScVbaShapes)"
27b35b2c215b4832d4378ec3a7ecbba926552d06 "loplugin:unocast (ScVbaShapeRange)"
cb3108f860065928552a86cf8acc4b3a95718ecf "cid#1517812 Dereference null return
value"
feba0ddb1521d1142560fe54b7d7696ee910237f "loplugin:unocast
(weld::TransportAsXWindow)"
4d6c23216559eb48f9943bb49d6e475a6d64ba15 "loplugin:unocast
(oox::ForumlaImExportBase)"
4844c096a8ab6a9a620c410a0949d4499f12a504 "loplugin:unocast
(cairocanvas::SurfaceProvider)"
9a0b523e0a84d403b9092176ccec4b3e3efe42d0 "loplugin:unocast
(cairocanvas::CanvasBitmap)"
8a5648d8e59b4b007dbbf3824777c19a21efc61e "loplugin:unocast
(cairocanvas::TextLayout)"
28c27a0623bc78a0590858f97d03b620985bc84c "loplugin:unocast
(cairocanvas::CanvasFont)"
53bc223cb3288e32a417696ee61c29e5f01f209d "loplugin:unocast
(cairocanvas::RepaintTarget)"
5f70b0b9f6bc4ab145ddbd9155590ed4a3b1b9ec "loplugin:unocast (SvXMLImport)"
068187a898cdd2e26e9b16c348ecc1ed2dee3f29 "loplugin:unocast (VCLXWindow)"
88b4f966202717cd4ad38a30a8eda22c3e69ed35 "loplugin:unocast
(sfx2::sidebar::SidebarController)"
f1b7a69b280aefe2f1b3b0f32193494fd765f2bd "loplugin:unocast
(SvxLineStyleToolBoxControl)"
ba76f0ba7e8de4d2953739c952004b7d9af47197 "loplugin:unocast
(i18npool::Calendar_gregorian)"
840154daf934d8df52ead1cb7acd798c4d30f007 "loplugin:unocast
(framework::AddonsToolBarWrapper)"
b0e9c4c5f063cefa9557810e3349bdb9c7493091 "loplugin:unocast
(GrammarCheckingIterator)"
8ee6cfc9655ce9de4617cea1a0d9cb9d7a4fbfac "loplugin:unocast
(ucb::ucp::ext::Content)"
5b8cd77c112bc8c0e92b8fec215c3c8e802bbc0a "loplugin:unocast
(basic::SfxScriptLibraryContainer)"
9e73ff9fce12e102bb3c3cea8d8bb96c88f2c9ad "loplugin:unocast
(sdext::presenter::PresenterNotesView)"
a98acca8fbc38d3fd5600ae5056a8e42b6d8a40d "loplugin:unocast
(SelectionChangeHandler)"
c0b59ad6e35b0cb0dea0821e95f95569739078c1 "Consistently use
comphelper::getSomethingImpl<I>(aIdentifier, this)"
276e3ccbdd3259ec3daf8a1a98fa7f406b14e21c "loplugin:unocast
(vclcanvas::RepaintTarget)"
Change-Id: I37c73e3422a5154bf6cb647640d2d3f23db8bc34
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145063
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
(See the upcoming commit introducing that loplugin:unocast on why such
dynamic_casts from UNO types are dangerous.)
Change-Id: I11496cc1d37e89ce8f11991f86c7b60bb1b93106
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144748
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
this is one of the secondary analyses this plugin performs
Change-Id: Iaa4424c2396470c6f1df85b0290fbffdda35fa08
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143177
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Ie16d36faac7d06e275348ed68e6c6b2518534fd6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140636
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
The platform a11y integration code expects a
`FontSlant` in the "CharPosture" `Any`
(s. e.g. `get_style_value`/`FontSlant2Style`
in `vcl/unx/gtk3/a11y/atktextattributes.cxx`
or `QtAccessibleWidget::attributes`)
and that's also what e.g. Writer sets for that attribute
for text in the document, so do the same in
`CharacterAttributesHelper::CharacterAttributesHelper`.
After handling for "CharPosture" was added for
the Qt-based VCL plugins in
commit 99841da686625428b8ad2e219dd19e5fbfb145f5
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Tue Jul 20 13:23:21 2021 +0200
qt a11y: Report font style text attribute (e.g. italic)
, clicking through the a11y hierarchy of e.g. Writer's
"Page Style" dialog in Accerciser's treeview of the LO a11y
hierarchy would otherwise crash LO when used with the qt6 VCL
plugin.
With this in place, the style is reported correctly
there. (Tested by temporarily setting "oblique"
style using glade for the "Next style" label in the "Organizer"
tab in that dialog's UI file.)
Change-Id: Ibea42db067e0cdb3b85c80dbcca5939b3dfe5570
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140527
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: Ib6c2806070ae11b5542fcbba284f2640400bf984
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140131
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Ibaf4bb0a9c9a8f613fd63ccd53a0e29d840fb21a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137904
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
|
|
need to move it, because modules "below" vcl want
to use the debug output method
Change-Id: Ibcaf4089a1e0b3fcc0b5189c7ebf1aae90f50b48
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139791
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
With 16k column support in Calc enabled by default in
commit 4c5f8ccf0a2320432b8fe91add1dcadf54d9fd58
Date: Tue Mar 8 12:44:49 2022 +0100
change default Calc number of columns to 16384 (tdf#50916)
, the number of Calc cells in a spreadsheet is larger than
SAL_MAX_INT32, meaning that a 32-bit a11y child index is no more
enough and using it resulted in integer overflows in
methods handling corresponding Calc cells in the a11y layer.
This e.g. had the effect of the Orca and NVDA screen readers
not announcing focused or selected cells properly when their
a11y child index was out of the 32-bit integer range.
Switch the internal a11y child indices to 64 bit to
be able to handle this properly internally.
Since the platform APIs (at least AT-SPI on Linux and
IAccessible2 on Windows; from what I can see LO's macOS
a11y bridge doesn't directly expose the child index)
are still restricted to 32 bit, larger child indices
still cannot be exposed via the platform APIs.
As a consequence, use of the the IAccessible2 and
AT-SPI methods that use the child index remains
problematic in those cases where the child index
is larger. However, as an alternative to using the
AT-SPI Table interface and the IAccessibleTable/
IAccessibleTable2 interfaces with the child index
to retrieve information about a specific cell,
both AT-SPI and IAccessible2 also provide interfaces
to retrieve that information directly
from the cell object (TableCell interface for AT-SPI,
IAccessibleTableCell for IAccessible2).
Those interfaces are already implemented/exposed
for winaccessibility (s. `CAccTable`) and the
qt5/qt6/kf5 VCL plugins (s. the `QAccessibleTableCellInterface`
methods implemented in `QtAccessibleInterface`).
With the switch to 64-bit internal a11y child indices,
these now behave correctly for cells with a child
index that doesn't fit into 32 bit as well.
NVDA on Windows already uses the IAccessibleTableCell
interface and thus announcing focused cells works fine
with this change in place.
Orca on Linux currently doesn't make use of the AT-SPI
TableCell interface yet, but with a suggested change to
do so [1], announcement of selected cells works
with the qt6 VCL plugin with a current qtbase dev branch
as well - when combined with the suggested changes
to implement support for the AT-SPI TableCell interface
in Qt [2] [3] and the LO change based on that [4] and
a fix for a nullptr dereference [5].
The gtk3 VCL plugin doesn't expose the AT-SPI
TableCell interface yet, but once it does so
(via `AtkTableCell`), it also works with the
suggested Orca change [1] in place.
(Adding that is planned for an upcoming change,
works with a local WIP patch.)
For handling return values that are larger than what
platform APIs support, the following approach has
been chosen for now:
1) When the return value is for the count of
(selected) children, the maximum value N
supported by the platform API is returned.
(This is what `ScAccessibleTableBase::getAccessibleChildCount`
did previously.)
The first N elements can be accessed by their
actual (selection) indices.
2) When the return value is the child/cell index,
-2 is returned for objects whose index is greater
than the maximum value supported by the platform
API.
Using a non-negative value would mean that the
index would refer to *another* actually existing
child. A child index of -1 on the other hand
tends to be interpreted as "child is invalid" or
"object isn't actually a child of its (previous)
parent any more)". For the Orca case, this would
result in objects with a child index of -1
not being announced, as they are considered
"zombies" [6].
What's still somewhat problematic is the case where
more than 2^31 children are *selected*, since access
to those children still happens by the index into
the selection in the platform APIs, and not all
selected items are accessible this way.
(Screen readers usually just retrieve
the first and last element from the selection and
announce those.)
Orca already seems to apply different handling for the
case for fully selected rows and columns, so
"All cells selected" or "Columns ... to ... selected"
is announced just fine even if more than 2^31
cells are selected.
(Side note: While Microsoft User Interface
Automation - UIA - also uses 32-bit indices, it also
has specific methods in the ISelectionProvider2
interface that allow to explicitly retrieve the
first and last selected item,
`ISelectionProvider2::get_FirstSelectedItem` and
`ISelectionProvider2::get_LastSelectedItem`, but
we currently don't support UIA on Windows.)
Bound checks at the beginning of the methods from the
`XAccessibleContext`, `XAccessibleSelection` and
`XAccessibleTable` interfaces that take a child index
(or in helper methods called by those) should generally
already prevent too large indices from being passed to
the methods in the lower layer code that take smaller
integer types. Such bound checking has been
been added in various places where it wasn't present yet.
If there any remaining issues of this
kind that show after this commit, they can probably be
solved in a similar way (s.e.g. the change to
`AccessibleBrowseBox::getAccessibleChild` in this
commit).
A few asserts were also added at
places where my understanding is that values shouldn't
be larger than what is supported by a called method
anyway.
A test case will be added in a following change.
[1] https://gitlab.gnome.org/GNOME/orca/-/merge_requests/131
[2] https://codereview.qt-project.org/c/qt/qtbase/+/428566
[3] https://codereview.qt-project.org/c/qt/qtbase/+/428567
[4] https://gerrit.libreoffice.org/c/core/+/138750
[5] https://codereview.qt-project.org/c/qt/qtbase/+/430157
[6] https://gitlab.gnome.org/GNOME/orca/-/blob/82c8542002e36e0d3d918088d583162d25136143/src/orca/script_utilities.py#L5155
Change-Id: I3af590c988b0e6754fc72545918412f39e8fea07
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139258
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Renamed GetNonMnemonicString() to removeMnemonicFromString()
Change-Id: I272714f97bb6d9174360631c18c4fd9bb485698e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138103
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
...so that its TOOLS_WARN_EXCEPTION can be used in
comphelper/source/misc/logging.cxx in a follow-up commit. (And while at it,
rename from diangose_ex.h to the more appropriate diagnose_ex.hxx. The
comphelper module is sufficiently low-level for this immediate use case, so use
that at least for now; o3tl might be even more suitable but doesn't have a
Library until now. Also, for the immediate use case it would have sufficed to
only break DbgGetCaughtException, exceptionToString, TOOLS_WARN_EXCEPTION,
TOOLS_WARN_EXCEPTION_IF, and TOOLS_INFO_EXCEPTION out of
include/tools/diagnose_ex.h into an additional new
include/comphelper/diagnose_ex.hxx, but its probably easier overall to just move
the complete include file as is.)
Change-Id: I9f3222d4ccf1a9ac29d7eb9ba1530d53e2affaee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138451
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I77038cbf500976703ad41365da9a675a698863a2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137979
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ief9949fd4252de9e33df172af07aa7ed097b5520
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136560
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
By default Rectangle uses closed interval, if we really want to use half
open intervals then we should specifically say as such in the name.
Change-Id: Id7a91120ba1a1a4bc330014216b73a692dbf03a2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136575
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
which is internal API, unused (as far as I can tell) by external
users.
This state is purely a bitset
(as implemented by utl::AccessibleStateSetHelper)
so we can just return it as a 64-bit value.
This shaves significant time off the performance profiles
of code that loads very complex shapes, because this state
is frequently used, and we no longer need to allocate a return
value on the heap for every call.
Change-Id: Icf1b3bd367c256646ae9015f9127025f59459c2c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136786
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I65ca9d43f70a50e2e95aabfc3b8ba1b15f9ff8be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135226
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Ib0658b5a0bb33e5f990b8ce4bf25b2d9cef32505
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135445
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
...where a signed and an unsigned value are compared, and the signed value has
just been proven to be non-negative here
Change-Id: I20600d61a5d59d739bc1bee838c0038e4611aec2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134875
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
off by default, since each warning needs careful inspection
Change-Id: I805c1d1cdde531a1afdc76e87b22f879fc3c9753
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134641
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I7860a176bfd44d8f5071ece03229bc7f768d9d52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133851
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I336fd329b577b6fa141265d8bc7ce67784bd7306
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133210
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
This ports most existing uses of the now deprecated
`AccessibleTableModelChangeType::INSERT` and
`AccessibleTableModelChangeType::DELETE` to emit
events of the the four new table model change types
added in
Change-Id I30821a5acafa4f3d1dafdfc219f3b4568d9a6e89,
"a11y: Add new table model change types for row/col insertion/del"
instead, which among others fixes the a11y events that are sent
on the platform level for gtk3 and macOS,
s. commit message of the mentioned change for more details.
From all I can see, `AccessibleGridControlTable::commitEvent`
is just meant to handle removal of rows, not columns,
so add a corresponding assert there.
(See how only row-related a11y events are emitted
in `svtools/source/table/tablecontrol_impl.cxx`,
and the "columns aren't selectable" comment for
`AccessibleGridControlTable::isAccessibleColumnSelected`.
Given that the full range of rows would previously
have been sent in the `AccessibleTableModelChangeType::DELETE`
event for column removal, this should still have worked in
practice, since this would have cleared the whole vector,
and elements would have been inserted on demand as needed
again later. However, if that should ever be needed in
the future, it should be handled more explicitly.)
The handling of sending events when rows or columns
are inserted or deleted in a Calc spreadsheet is more
fundamentally broken and will be handled in a separate
commit.
Change-Id: Icfd5e326143e8e90cc513e430bfabbba39e7bdc6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132218
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Use `AccessibleGridControlTable::getAccessibleCellAt` and
cast to `AccessibleGridControlTableCell*` instead of
directly accessing the cell vector in
`AccessibleGridControl::commitCellEvent`.
`AccessibleGridControlTable::getAccessibleCellAt`
just needs row and column index as parameters,
and already takes care of everything else that's
needed.
This includes creating an accessible object for
the given indices on demand.
Therefore, limiting this to only already existing
a11y objects, which was done to avoid crashes in
commit 4fc7deb7b0528010ebf644654bf4a36594e03f8c
Date: Thu Oct 3 23:16:34 2013 +0200
fix STL assert in accessibility::AccessibleGridControl::commitTableEvent
is no longer needed.
With this change in place, details of how cells are
organized in the vector only need to be known inside
of the `AccessibleGridControlTable` class itself, so
drop the now unused method
`AccessibleGridControlTable::getCellVector`.
(This code path is e.g. used when using
the macro from tdf#147742.)
Change-Id: I21027f0edc2904475ad6cc5fb136316f387499dc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131248
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
When disposing `AccessibleGridControlTable` (which
is done in `AccessibleGridControl::disposing`),
also dispose its cells and clear the references.
Without this in place, a crash sometimes occured
when running the macro in the sample doc from
tdf#147742 several times and clicking around in the
table, with the Orca screen reader active.
This was because a reference to one of
the `AccessibleGridControlTableCell`s was still
around after the `AccessibleGridControlTable`
had already been disposed, and when trying
to get its accessible name, the call to
`IAccessibleTable::GetAccessibleObjectName` in
`AccessibleGridControlCell::getAccessibleName`
would fail because the object that the
`m_aTable` reference was referring to had already
been deleted.
With the cell being disposed as well, the
`ensureIsAlive()` check at the beginning of
`AccessibleGridControlCell::getAccessibleName`
will throw a `DisposedException`, that is then
handled properly in the calling code.
Backtrace (with master as of commit
2598c35dbac8dc4492ad1fc79925c5347e683af0):
#0 0x00007fffd9152ed3 in accessibility::AccessibleGridControlCell::getAccessibleName() (this=0x55555bbcdb70) at /home/michi/development/git/libreoffice/accessibility/source/extended/AccessibleGridControlTableCell.cxx:79
#1 0x00007fffe45e864a in wrapper_get_name(AtkObject*) (atk_obj=0x55555bbcef60) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/a11y/atkwrapper.cxx:369
#2 0x00007fffe3a87e5c in () at /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0
#3 0x00007fffe3a947de in () at /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0
#4 0x00007fffe3a94caf in () at /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0
#5 0x00007ffff75feff0 in () at /lib/x86_64-linux-gnu/libdbus-1.so.3
#6 0x00007ffff75eea1c in dbus_connection_dispatch () at /lib/x86_64-linux-gnu/libdbus-1.so.3
#7 0x00007fffe36d74a5 in () at /lib/x86_64-linux-gnu/libatspi.so.0
#8 0x00007fffe9ab8cdb in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 0x00007fffe9ab8f88 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007fffe9ab903f in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007fffe460f546 in GtkSalData::Yield(bool, bool) (this=0x55555567c750, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkdata.cxx:405
#12 0x00007fffe461402a in GtkInstance::DoYield(bool, bool) (this=0x55555567c5d0, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/gtk3/gtkinst.cxx:427
#13 0x00007fffef7ab4be in ImplYield(bool, bool) (i_bWait=true, i_bAllEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:474
#14 0x00007fffef7ac0b0 in Application::Yield() () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:558
#15 0x00007fffef7ab18e in Application::Execute() () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:452
#16 0x00007ffff7c309af in desktop::Desktop::Main() (this=0x7fffffffd780) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1604
#17 0x00007fffef7c9d75 in ImplSVMain() () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:202
#18 0x00007fffef7c9e96 in SVMain() () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:234
#19 0x00007ffff7c947c9 in soffice_main() () at /home/michi/development/git/libreoffice/desktop/source/app/sofficemain.cxx:98
#20 0x00005555555549f4 in sal_main () at /home/michi/development/git/libreoffice/desktop/source/app/main.c:51
#21 0x00005555555549da in main (argc=4, argv=0x7fffffffdaf8) at /home/michi/development/git/libreoffice/desktop/source/app/main.c:49
Change-Id: Idffa76809cbfad746f27d18191fdfc905b64ee0e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131247
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
It's only used in one place and I see no need to keep
a Reference in this class, so use a local variable
instead of a class member.
Instead of disposing this single cell in
`AccessibleGridControl::disposing`,
`AccessibleGridControlTable` should take care
of disposing all of its cells, which will be
added in a following commit
(Change-Id Idffa76809cbfad746f27d18191fdfc905b64ee0e,
"Related: tdf#147742 a11y: Dispose table cells as well").
Change-Id: Ia7c84c65b45dde28850f48b12ab9558f2dc7d47c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131246
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Just call `AccessibleGridControlTable::getAccessibleCellAt`,
which already takes care of calculating the proper child index from
row and column index.
Change-Id: Id463c14108158c5833231f95cf16847764f5b646
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131245
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Move the handling for the
`AccessibleEventId::TABLE_MODEL_CHANGED` event of
type `AccessibleTableModelChangeType::DELETE`
from `AccessibleGridControl` into
`AccessibleGridControlTable`.
To do so, make `AccessibleGridControlBase::commitEvent`
virtual and override it in `AccessibleGridControlTable`.
The method already gets called from `AccessibleGridControl::commitTableEvent`
where the event was handled previously.
Handling the details of how cells are internally
organized in a vector only in the class itself
rather than in different places seems to make sense.
There are currently more cases where `AccessibleGridControl`
deals with the cell vector directly that will be
addressed in following commits.
Change-Id: I26a7737432ecb198eac00279a8242d22e3c661d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131244
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: I82adf31db09d2157ee8f1c776f33e8a0107c3b51
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131090
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
|
|
Previously, the accessible description was retrieved
in the `AccessibleGridControlBase` ctor and stored
in a class member. Change that to fetch the
description on demand.
`TableControl::GetAccessibleObjectDescription` is used
to get the description, which currently uses the row and
column index of the currently active cell.
When using the macro from the sample document in tdf#147742
with the Orca screen reader active, no cell was active
at the point that the ctor was called, so
`ROW_INVALID`/`COL_INVALID` were used, resulting
in a crash later (s. backtrace in tdf#147742).
If necessary, `TableControl::GetAccessibleObjectDescription`
could be extended to allow passing an explicit row/column index,
as is the case for `TableControl::GetAccessibleName`, then
override `AccessibleGridControlBase::getAccessibleDescription`
in `AccessibleGridControlCell`, similar to how it is done
for the accessible name in
Change-Id I87eabb2ce3c99d4a622d919ab0fb8d7fb3beed6b
("tdf#147742 a11y: AccessibleGridControl...: get accessible name on
demand").
Change-Id: I58f3a2b0c83e2cdbae103811505d7d0a4f8bfc52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130934
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Base class `AccessibleGridControlBase` was retrieving
an accessible name and storing it in class member 'm_aName'.
For the classes representing cells, derived from
`AccessibleGridControlCell`, the index is needed
to get a meaningful name, so the name retrieved in
the `AccessibleGridControlBase` ctor with hard-coded
row/column indices of 0 was replaced again in
the `AccessibleGridControlCell` ctor.
Replace that logic to just retrieve the name
on demand, and override
'getAccessibleName' in `AccessibleGridControlCell`
using the logic used in its ctor previously.
(No functional change intended here, but a
somewhat similar handling for the accessible
description was causing a crash when the Orca screen
reader was active. This will be handled in a following
commit.)
Change-Id: I87eabb2ce3c99d4a622d919ab0fb8d7fb3beed6b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130933
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
... in `AccessibleGridControlTable::getAccessibleIndexInParent`,
just like in the implementation of the other a11y UNO API methods.
Change-Id: I4ab7a2626db09398c79fe53d85c9802136decbf7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130925
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
... in `AccessibleGridControlHeader::getAccessibleIndexInParent`,
just like in the implementation of the other a11y UNO API methods.
Change-Id: Ib3bd44e73ae54bb1df05dc2714ce1f793f7222db
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130924
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
I hadn't even noticed that 5 spaces were used
until the Jenkins CI build for my change adding
a single line only indented by 4 spaces failed [1] due
to our clang indentation plugin...
[1] https://gerrit.libreoffice.org/c/core/+/130924/1#message-7a5209670085f69e53fd592ba41c2bd4b74a360a
Change-Id: I859e8de4c02ff33c6a9fee957d868cf6e4ddd907
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130932
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Call 'AccessibleGridControlTable::getAccessibleChild'
with the calculated child index instead of duplicating
the handling to retrieve/create the proper
accessible object.
Change-Id: I8135f379f304d0e8ac61806eba9b3bd6c644f3a0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130443
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: I630b7fbda7c9ebf578e74260a0d67eea32e9e429
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129549
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
See tdf#42949 for motivation
Change-Id: I74a3c3a67c3639376e2251c3eb917fa4139dfbd0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127808
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
|
so that subclasses can drop the lock while calling listeners
Change-Id: I6105438110af08f10b0ed50057b28172c3442b95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127434
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I36a1dd4fa488517a1e69d3a1c4b03c850d1a933e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127404
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: If2cc282c2b135d634daf393a082c29049b10a677
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127223
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Idc6e32b81190b3940a42ddb4bb30f1eff35b59fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127070
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Unfortunatly we cannot add --disable-scripting to
sub_conf_defaults, because Java currently has no
equivalent to the PYTHON_FOR_BUILD setting.
Change-Id: I89938a17307a363f5de808200914940503312829
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126186
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
|
|
This introduces two concepts: a plugin and its loader (library)
LO currrently has dependency cycles for some libraries. There is
scui, which depends on sc, while sc dlopen's scui. There are the
various vclplug_*, i18npool plugins, filters/gie, acc, etc.
Usually these plugins link to their loader library, because they
use its symbols. But as a result there is no sensible way to
express the runtime dependency of loaders on the plugins.
In GNU libtool plugins are called modules and they are implemented
in an IMHO more sensible way by allowing missing symbols at link
time. This way you can have a dependency from the loader library
to its plugins, as the plugins don't depend on the loader, but you
lose the link time detection of missing symbols.
While this is in theory possible in LO too, LO currently has
plugins, like acc (accessibility), loaded by tk (toolkit), which
depends on svt (svtools), which itself depends on tk, so dropping
the tk dependency for acc on its own doesn't help :-(
And while the dependency of the plugins on their loader is fine
for the shared / DYNLOADING build, for the "static" builds you
must (somehow) link the plugins into the executables.
I also codeified a few rules into the build system along with it:
* just plugins are allowed to depend / link other plugins
* plugins aren't allowed to be linked into the merge lib
* plugin loaders are "limited" to libraries
At the high level, this is implemented via new gbuild calls:
* gb_Library_set_plugin_for,lib,loader: declare a library to be a
plugin of a loader library and add a dependeny from the plugin
library to the loader library
* gb_Library_set_plugin_for_nodep,lib,loader: ^^^^ without adding
the library dependeny
* gb_Helper_register_plugins_for_install: "plugin" replacement for
gb_Helper_register_libraries_for_install to implement some
additional checks in the build system
In the end this patch just adds a bit syntactic sugar and nothing
changes for any build.
Change-Id: I7b01d9c384cbc5838bd2cc93aff18e4868939d6e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126163
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
|
|
Change-Id: I01af38dd57a645ea0afeaff033ce6d07dfe09535
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126026
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ie27c32ea51ebcc9ad0d0d5a1d160d55c23727cd5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125274
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|