Commit Graph

24 Commits (e6599bfa6134cfd3097c9cb8ec45801ae810f3df)

Author SHA1 Message Date
Michael Weghorn e6599bfa61 a11y atspi: Send correct D-Bus reply for GetAttributeValue
Only return a string for the attribute value
(an empty string if the attribute is not set).

The previous implementation was based on the incorrect
signature in the XML spec for the AT-SPI Text interface from
before the AT-SPI commit that removed the extra out params [1]:

    commit 8786849ce6e9914383aa766ff9ce7e00f5b2178d
    Author: Patryk Kaczmarek <patryk.k@samsung.com>
    Date:   Mon Sep 28 14:23:15 2015 +0200

        Fixed atspi_text_ functions

          * atspi_text_get_text_attribute_value
              Fixed dbus signature in _atspi_dbus_call function
              and add missing argument for string.

          * atspi_text_get_default_attributes
              Receiving return value by reference from hash table

        https://bugzilla.gnome.org/show_bug.cgi?id=755731

[1] 8786849ce6

Fixes: QTBUG-105752
Pick-to: 6.4
Change-Id: I66d3c484ecc4b469684635723242c915e4365e6a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-19 02:43:00 +00:00
Michael Weghorn c2289ca582 a11y atspi: Add missing closing tag in introspection XML
Pick-to: 6.4
Change-Id: I4497353ef33a10b94141b24b9cda3fa7ee3e17b9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-19 02:42:58 +00:00
Michael Weghorn 5145d3899d a11y atspi: Support AT-SPI table cell interface
QAccessibleTableCellInterface provides everything
needed to support the AT-SPI TableCell interface [1].

Therefore, expose that AT-SPI interface and implement
handling of the corresponding methods.

[1] https://gitlab.gnome.org/GNOME/at-spi2-core/-/blob/master/xml/TableCell.xml

Fixes: QTBUG-104793
Change-Id: Ie7068c029eaf911186daf3956f11cfd4eb2800a6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 18:12:50 +02:00
Michael Weghorn f350956548 a11y atspi: Forward change of focused state
The focused state exists in both, Qt
(QAccessible::State::focused) and AT-SPI, so forwarding
changes to that state is straightforward.

However, so far, changes to the focused state in a
QAccessible::StateChanged event were just ignored
and not forwarded to the AT-SPI layer.

While announcing focus changes to Qt's own widgets works
without that because it uses events of type QAccessible::Focus
instead of QAccessibleStateChangeEvent with the focused
state set, this is not exactly the same and just ignoring the
focused state in QAccessible::StateChanged events e.g. turned out to
be one cause for the Orca screen reader not announcing UI elements
when they received focus in the Qt-based UI variant of LibreOffice,
which uses QAccessible::StateChanged with the focused flag
set (s.a. LibreOffice commit [1]).

[1] https://git.libreoffice.org/core/commit/8c3e8af0e60865ec6d38e2117efdb4ed2f10a20c

Change-Id: If226af28960048c56af32979477605d6860e30e9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 15:02:26 +00:00
Michael Weghorn ee35afc117 a11y atspi: Drop 'if (0)' branch
Change-Id: Ie175405298ed03752b48a8b74d23bd5f1b0b148e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 17:02:26 +02:00
Michael Weghorn 7594e8ca4d a11y atspi: Send D-Bus reply for "GetCaption" in expected format
Just like for the "GetSummary" case, the argument in the
reply for this AT-SPI table method needs to
be wrapped in a variant.

Fixes this warning from the output of the client side
using libatspi:

> (accerciser:181933): dbind-WARNING **: 11:50:36.394: atspi_dbus_get_property:
> expected a variant when fetching Caption from interface org.a11y.atspi.Table; got (so)

Fixes: QTBUG-105520
Pick-to: 6.4 6.3 6.2
Change-Id: I18167359e4cd3bb14a94289ac7481f9e39a18ad0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 10:49:36 +02:00
Michael Weghorn a32a3aa388 a11y atspi: Add support for ATSPI_COORD_TYPE_PARENT
So far, only screen coordinates (`ATSPI_COORD_TYPE_SCREEN`)
and coordinates relative to the widget's top-level window
(`ATSPI_COORD_TYPE_WINDOW`) were supported.

In at-spi 2.30, a third coordinate type, describing
coordinates relative to the widget's immediate parent,
was added: `ATSPI_COORD_TYPE_PARENT` (commit: [1])

This commit adds the handling to convert to and
from that coord type as well and unifies the
existing handling to convert to/from screen coordinates
by introducing two static helper methods
(`AtSpiAdaptor::translateToScreenCoordinates` and
`AtSpiAdaptor::translateFromScreenCoordinates`) and
making use of those wherever conversion needs to
be done.

In addition, also add a check to only handle
requests using a coordinate type that is one of those
that is actually supported instead of returning
incorrect values (for the case that new coord types
should be introduced in AT-SPI in the future).

[1] 737c9853b6

Fixes: QTBUG-105313
Change-Id: Ia8752bd6a35328cc2de33ecad08f2964735f41ae
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 10:48:59 +02:00
Michael Weghorn fa0e24b641 a11y atspi: translate coords for GetOffsetAtPoint the right way
The coordinate type for "GetOffsetAtPoint" describes the
coordinate type of the input coordinates and
`QAccessibleTextInterface::offsetAtPoint` expects the
coordinates in screen coordinates.

Therefore, if window-relative coordinates are given,
the screen coordinates of the window need to be added
(not subtracted) to the window-relative coordinates of the point
in order to calculate the screen coordinates of the point.

Fixes: QTBUG-105281
Pick-to: 6.4 6.3 6.2
Change-Id: I5517335c0c0d6a47b8c45c7e4f8f8b5a91f0fcd7
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 04:46:59 +02:00
Michael Weghorn 49c966bc85 a11y atspi: Take dialog into account as top-level window
Since a dialog is also a top-level window, it should be taken
into account when trying to find the accessible's top-level
window, relative to which the position will be calulated for
`ATSPI_COORD_TYPE_WINDOW`.

Fixes: QTBUG-105042
Pick-to: 6.4 6.3 6.2
Change-Id: I74fae096fd886bab04187c122f268c26c91b86ab
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 02:46:59 +00:00
Michael Weghorn d40dacf5f4 a11y atspi: Fix incorrect use of x instead of y position
Fixes: QTBUG-105031
Pick-to: 6.4 6.3 6.2
Change-Id: I26fcbfbd5a90982b87dda89b2880efe937f099d8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-08-17 04:46:59 +02:00
Allan Sandfeld Jensen f53f709504 Replace QT_NO_ACCESSIBILITY with QT_CONFIG(accessibility)
Pick-to: 6.4
Change-Id: Iee4bd8970810be1b23bdba65a74de912401dca65
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-06-15 18:03:30 +02:00
Lucie Gérard 05fc3aef53 Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
Files that have to be modified by hand are modified.
License files are organized under LICENSES directory.

Task-number: QTBUG-67283
Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-05-16 16:37:38 +02:00
Marc Mutz a440a8e8c5 QtGui: includemocs
Including moc files directly into their classes' TU tends to improve
codegen and enables extended compiler warnings, e.g. about unused
private functions or fields.

Pick-to: 6.3 6.2 5.15
Task-number: QTBUG-102886
Change-Id: I1945741794c25679a9d94c0d68c8642e2c823502
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2022-04-29 07:30:59 +02:00
Sona Kurazyan 9a55c695c7 QtGui: replace remaining uses of QLatin1String with QLatin1StringView
Task-number: QTBUG-98434
Change-Id: I98c27030c783f968cbf38dc966ce486dc366b302
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2022-04-28 05:58:52 +02:00
Sona Kurazyan 7b6b133746 QtGui: use _L1 for for creating Latin-1 string literals
Task-number: QTBUG-98434
Change-Id: Idcb71c1d27125333a53b6bdd3e1af0d4c66617fa
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2022-04-28 05:58:52 +02:00
Sona Kurazyan f0a72abfe3 AtSpiAdaptor: fix debug messages to output the values before clearing
Pick-to: 6.3 6.2
Change-Id: I945922c90396840128a79cb11443bf4ef5aadb13
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2022-04-26 09:01:01 +02:00
Sona Kurazyan a5b9600356 QtGui: stop using QLatin1Char constructor for creating char literals
Required for porting away from QLatin1Char/QLatin1String in scope of
QTBUG-98434.

Change-Id: I308d86cefcbfd126929b68f9a853d420840c965f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2022-04-13 18:34:15 +02:00
Lars Knoll e7e7540aec Deprecate int based convert/canConvert
Better to provide the correct meta type to convert to.

Change-Id: I8e0d46e4ba482186201c157e302c03874bd38e7b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:19:18 +02:00
Allan Sandfeld Jensen 5747f31392 Another round of 0->nullptr cleanup
Change-Id: Ic8db7dc252f8fea46eb5a4f334726d6c7f4645a6
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-07-31 12:56:50 +02:00
Lu YaNing 1ac7bf1ed4 Linux: fix crash in AtSpi adaptor when handling window activation
fix The window has been quickly activated or disabled will cause a crash .

Fixes: QTBUG-84643
Pick-to: 5.15
Change-Id: I0fd0918a3fc1898ddffd97009a4e92702ecd9ed4
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-07-14 12:33:23 +08:00
Lars Schmertmann 6ce2f3f26b Add ; to Q_UNUSED
This is required to remove the ; from the macro with Qt 6.

Task-number: QTBUG-82978
Change-Id: I3f0b6717956ca8fa486bed9817b89dfa19f5e0e1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-07-07 11:51:48 +02:00
Friedemann Kleint 23282ac23d SPI Accessibility: Remove global variable
Change it into a member variable of QSpiAccessibleBridge.

Task-number: QTBUG-83255
Change-Id: Ia781a7c86723e343680bf804be6393640f83a516
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-07-06 22:23:49 +02:00
Jarek Kobus 23b7e7972e Use QList instead of QVector in platformsupport
Task-number: QTBUG-84469
Change-Id: I8e4e6626cc840bc9c8bce014c595da9080025dd8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-07-06 13:43:11 +02:00
Friedemann Kleint 9e733622a6 Move linuxaccessibility to QtGui
Change some too-generic file names.

Task-number: QTBUG-83255
Change-Id: I4497ee2508bc323566f4061d4547707b7bda7a77
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-07-06 11:15:08 +02:00