summaryrefslogtreecommitdiffstats
path: root/src/gui/accessible
Commit message (Collapse)AuthorAgeFilesLines
...
* a11y: Prevent one case of losing a11y interface when setting event childMichael Weghorn2022-08-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9a369a25ddfac9352cabde65c8476c7433dc6c3a added a QAccessibleEvent ctor that takes a QAccessibleInterface* instead of a QObject*. Retrieving the QAccessibleInterface* later is done using the interface's unique ID stored in the m_uniqueId member. However, the fact that m_uniqueId is a member of the union alongside with m_child means that setting a child via QAccessibleEvent::setChild also overwrites the stored unique ID, which breaks retrieving the accessible interface later. Fix this for the case where the QAccessibleInterface has an associated QObject by assigning m_object in the ctor as well. This means that a QAccessibleEvent created using either of the two constructors (the one taking the QObject* and the one taking the QAccessibleInterface* associated with the object) now behaves the same. Fixing the case where there is no associated QObject would require further changes (e.g. adding a member for the QAccessibleInterface* or making the m_uniqueId member a separate member instead of having it in a union with m_child). However, I see no way to do so without breaking the ABI, so that is left unchanged. This also adds a corresponding test case. Fixes: QTBUG-105988 Pick-to: 6.4 Change-Id: I71a548af0277a5034e9e207f066fa3e25c5393f3 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Send SelectionChanged AT-SPI event on selection changeMichael Weghorn2022-08-271-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | When using QAccessibleEvents of types QAccessible::Selection, QAccessible::SelectionAdd and QAccessible::SelectionRemove, Qt (internally) also always uses QAccessbibleEvent::setChild to set the child that has been (un)selected. As a consequence, the interface retrieved using QAccessibleEvent::accessibleInterface here is not the a11y object in which the selection has changed, but the child, so notifying about a change to its selected state (as happens here in the AT-SPI adapter) is in line with that. For AT-SPI, assistive technology (like the Orca screen reader) often reacts to the SelectionChanged event on the object managing the selection, so send a corresponding event for the parent of the (un)selected child as well. (Besides the lack of support for the AT-SPI Selection interface - s. QTBUG-105909 - the fact that this event wasn't sent previously e.g. turned out to be one reason for the Orca screen reader not announcing selected cells in the Qt 6 based UI variant of LibreOffice Calc.) Change-Id: Icc8b9a7ecc77bc5394fd1ab4f8163caed951ba86 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Forward SelectionWithin change to AT-SPIMichael Weghorn2022-08-271-1/+11
| | | | | | | | | | | | | | | QAccessible::SelectionWithin is meant to be used when several changes to a selection have occurred (instead of using multiple QAccessible::SelectionAdd and QAccessible::SelectionRemoved events). So far, that event was simply ignored by the AT-SPI adapter. Forward that as a SelectionChanged event to AT-SPI. Change-Id: Ia8187f82b9b96b7ca5b52bf0a0923bbf4c777ad1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Drop FIXME that doesn't need actionMichael Weghorn2022-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | The reply *is* needed. Otherwise, e.g. running examples/widgets/widgets/spinboxes/spinboxes and clicking on the a11y objects for the spinboxes in Accerciser's [1] treeview of the app's a11y hierarchy makes Accerciser output this and crash: > $ accerciser > dbus[67434]: arguments to dbus_message_unref() were incorrect, assertion "message != NULL" failed in file ../../../dbus/dbus-message.c line 1727. > This is normally a bug in some application using the D-Bus library. > > D-Bus not built with -rdynamic so unable to print a backtrace > Aborted (core dumped) [1] https://gitlab.gnome.org/GNOME/accerciser diff --git a/src/gui/accessible/linux/atspiadaptor.cpp b/src/gui/accessible/linux/atspiadaptor.cpp index cdc27132c9..6b8a9fcaac 100644 Change-Id: I442d3130623ccae096a6b79577874a6fd95c8aa2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Drop methods that are only declaredMichael Weghorn2022-08-271-2/+0
| | | | | | | | ... but not actually defined or used anywhere. Change-Id: I8d6b9f58e7ec6bb795f10cf058c3f043995cefbd Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Support text interface's GetStringAtOffsetMichael Weghorn2022-08-272-5/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GetStringAtOffset method was added to the AT-SPI Text interface in at-spi2-core commmit [1]: commit 56220f05bc8b7683911658e1a8aff4a1ab3cab8d Author: Mike Gorse <mgorse@suse.com> Date: Mon Aug 19 16:43:02 2013 -0500 Add atspi_text_get_string_at_offset As compared to GetTextAtOffset, which is very similar and already supported in Qt's AT-SPI adapter, the new method uses a new enum, AtspiTextGranularity, to specify the region of text that should be returned. Other than AtspiTextBoundaryType (that is used by GetTextAtOffset), AtspiTextGranularity now also has a value for the paragraph granularity (ATSPI_TEXT_GRANULARITY_PARAGRAPH). While AtspiTextBoundaryType has two enum values for the word/sentence/line boundaries (ATSPI_TEXT_BOUNDARY_WORD_START and ATSPI_TEXT_BOUNDARY_WORD_END, etc.), AtspiTextGranularity doesn't have this any more, but ATSPI_TEXT_GRANULARITY_WORD etc. seem to correspond to what the variants ending on "_START" do when used with GetTextAtOffset, since the documentation says that the range is "defined by the boundaries of a word starting at the beginning of the current word and finishing at the beginning of the following one, if present." (and likewise for ATSPI_TEXT_GRANULARITY_SENTENCE, ATSPI_TEXT_GRANULARITY_LINE, ATSPI_TEXT_GRANULARITY_PARAGRAPH). In order to support GetStringAtOffset, this adds a new mapping from the AtspiTextGranularity enum values to the corresponding QAccessible::TextBoundaryType, similar to what's done for the AtspiTextBoundaryType in the handling of the GetTextAtOffset method. The existing AtSpiAdaptor::qAccessibleBoundaryType method is renamed to AtSpiAdaptor::qAccessibleBoundaryTypeFromAtspiBoundaryType to clearer distinguish it from the newly introduced AtSpiAdaptor::qAccessibleBoundaryTypeFromAtspiTextGranularity. No similar new alternatives have been added to AT-SPI for GetTextBeforeOffset and GetTextAfterOffset. [1] https://gitlab.gnome.org/GNOME/at-spi2-core/-/commit/56220f05bc8b7683911658e1a8aff4a1ab3cab8d Fixes: QTBUG-105811 Change-Id: I674a760e80c349baea89dcb4ac7aecdef9b2b45f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Handle AT-SPI Text's ScrollSubstringToMichael Weghorn2022-08-271-0/+13
| | | | | | | | | | | | | | | | | | | | This implements handling for the ScrollSubstringTo method from the AT-SPI Text interface by calling QAccessibleTextInterface::scrollToSubstring with the given text offsets. While the AT-SPI method has an additional parameter for the scroll type that specifies where on screen to place the given substring (s. doc at [1]), there is no equivalent in QAccessibleTextInterface::scrollToSubstring, so ignore that parameter. [1] https://lazka.github.io/pgi-docs/Atspi-2.0/classes/Text.html#Atspi.Text.scroll_substring_to Fixes: QTBUG-105854 Change-Id: I390e1316c5c55cb646a299499a5f87c9c6945a44 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Drop commented out "say hello to d-bus" codeMichael Weghorn2022-08-191-3/+0
| | | | | | | | | This looks like a remnant of previous WIP code and was added in commit 8e1ff45e74f529c7f49688242ea0fd25ce2913f3 ("Add Linux Accessibility Bridge"). Change-Id: I8fab2c3554af101ed134715a4d4a494bdb01fc98 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Send correct D-Bus reply for GetAttributeValueMichael Weghorn2022-08-192-12/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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] https://gitlab.gnome.org/GNOME/at-spi2-core/-/commit/8786849ce6e9914383aa766ff9ce7e00f5b2178d Fixes: QTBUG-105752 Pick-to: 6.4 Change-Id: I66d3c484ecc4b469684635723242c915e4365e6a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Add missing closing tag in introspection XMLMichael Weghorn2022-08-191-0/+1
| | | | | | Pick-to: 6.4 Change-Id: I4497353ef33a10b94141b24b9cda3fa7ee3e17b9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Support AT-SPI table cell interfaceMichael Weghorn2022-08-172-0/+63
| | | | | | | | | | | | | | 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>
* a11y atspi: Forward change of focused stateMichael Weghorn2022-08-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* a11y atspi: Drop unused forward-declaration QSpiAccessibleInterfaceMichael Weghorn2022-08-171-1/+0
| | | | | Change-Id: I9f9212ae1af2bde603e6bb1f8f7e606031aa3784 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Drop 'if (0)' branchMichael Weghorn2022-08-171-3/+1
| | | | | Change-Id: Ie175405298ed03752b48a8b74d23bd5f1b0b148e Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: Send D-Bus reply for "GetCaption" in expected formatMichael Weghorn2022-08-171-3/+3
| | | | | | | | | | | | | | | | | 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>
* a11y atspi: Add support for ATSPI_COORD_TYPE_PARENTMichael Weghorn2022-08-172-56/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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] https://gitlab.gnome.org/GNOME/at-spi2-core/-/commit/737c9853b681fb20fda79b32ed92cda96b381dd0 Fixes: QTBUG-105313 Change-Id: Ia8752bd6a35328cc2de33ecad08f2964735f41ae Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y atspi: translate coords for GetOffsetAtPoint the right wayMichael Weghorn2022-08-171-1/+1
| | | | | | | | | | | | | | | | | 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>
* a11y atspi: Take dialog into account as top-level windowMichael Weghorn2022-08-171-2/+3
| | | | | | | | | | | | 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>
* a11y atspi: Fix incorrect use of x instead of y positionMichael Weghorn2022-08-171-1/+1
| | | | | | | Fixes: QTBUG-105031 Pick-to: 6.4 6.3 6.2 Change-Id: I26fcbfbd5a90982b87dda89b2880efe937f099d8 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Use class scope to refer to static functionMårten Nordheim2022-07-251-1/+1
| | | | | | | | | | | The call to metaObject() in the ctor may generate a warning since it calls a virtual function during construction. Amends be09628e151f26f602024bae6a957ffb27ac872d Change-Id: I27472786b41624d582525c4260a54db61ee7ed16 Reviewed-by: Harald Sitter <sitter@kde.org> Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
* fix AT_SPI_BUS_ADDRESS actually workingHarald Sitter2022-07-221-2/+9
| | | | | | | | | | | | | | the previous invocation wasn't working because QSpiAccessibleBridge first needs to construct the connection before it can connect to the enabledChanged signal that gets emitted as part of connectA11yBus, effectively missing the signal emission because the connection wasn't established by the time the emit happens. delay the signal emission through the eventloop so the caller has time to connect to all signals. https://bugs.kde.org/show_bug.cgi?id=452132 Change-Id: I1cf9fdd824b2c118cc6278b207aaaedeff259bb1 Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
* Fix typos in docs and commentsKai Köhne2022-06-151-1/+1
| | | | | | | | | Found by codespell Pick-to: 6.4 Change-Id: Ie3e301a23830c773a2e9aff487c702a223d246eb Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Replace QT_NO_ACCESSIBILITY with QT_CONFIG(accessibility)Allan Sandfeld Jensen2022-06-1519-43/+41
| | | | | | | 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>
* Use SPDX license identifiersLucie Gérard2022-05-1642-1596/+84
| | | | | | | | | | | | | 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>
* Revert "a11y: Do not cache classes that don't have a factory plugin"Fabian Kosmale2022-05-061-4/+25
| | | | | | | | | | | | | | | This reverts commit 583668005d4d6399fc16d165dcb6a5af2b94323d, and provides an alternative fix for QTBUG-75106. Reason: This introduced QTBUG-103009, due to lack of caching. To fix the original issue, we still reduce the amount of caching we do, by only considering the first non-dynamic meta-object for QML related objects. Task-number: QTBUG-75106 Fixes: QTBUG-103009 Pick-to: 6.3 6.2 5.15 Change-Id: Ic76af26a719d1114208be9555286239c6c6df615 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QtGui: includemocsMarc Mutz2022-04-298-0/+16
| | | | | | | | | | | 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>
* QtGui: replace remaining uses of QLatin1String with QLatin1StringViewSona Kurazyan2022-04-283-12/+12
| | | | | | Task-number: QTBUG-98434 Change-Id: I98c27030c783f968cbf38dc966ce486dc366b302 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QtGui: use _L1 for for creating Latin-1 string literalsSona Kurazyan2022-04-286-305/+299
| | | | | | Task-number: QTBUG-98434 Change-Id: Idcb71c1d27125333a53b6bdd3e1af0d4c66617fa Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* DBusConnection: reuse pre-defined constat values where possibleSona Kurazyan2022-04-261-4/+3
| | | | | | Change-Id: Ie32a0e87b1eed2db104bb23d58e747e651e04e63 Pick-to: 6.3 6.2 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* AtSpiAdaptor: fix debug messages to output the values before clearingSona Kurazyan2022-04-261-5/+10
| | | | | | Pick-to: 6.3 6.2 Change-Id: I945922c90396840128a79cb11443bf4ef5aadb13 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QtGui: stop using QLatin1Char constructor for creating char literalsSona Kurazyan2022-04-132-7/+7
| | | | | | | | | 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>
* QtGui: sweep Q_DECLARE_METATYPE → QT_DECL_METATYPE_EXTERN [2/2]: private APIMarc Mutz2022-04-052-17/+35
| | | | | | | | | | | | | It's one of our best tools to improve compile times. Can't backport to Qt 6.2 because the macros don't exist there. Pick-to: 6.3 Task-number: QTBUG-102206 Change-Id: I80734b4d43928fce0e66329b5b897a2738db9b30 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Gui: Do not depend on transitive includesFabian Kosmale2022-03-171-0/+1
| | | | | Change-Id: I27321235d9c8428de0cff1e22a618299b9e5a97f Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Make sure all qtbase private headers include at least one otherThiago Macieira2022-02-241-1/+2
| | | | | | | | | | See script in qtbase/util/includeprivate for the rules. Since these files are being touched anyway, I also ran the updatecopyright.pl script too. Change-Id: Ib056b47dde3341ef9a52ffff13ef677e471674b6 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Respect AT_SPI_BUS_ADDRESS env var on LinuxPatrick Griffis2022-02-171-0/+8
| | | | | | Change-Id: Ic277b5ebe2d752360cebdb2ff728ca219f9d7124 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
* Remove documentation of non-existing QAccessible stateAllan Sandfeld Jensen2022-02-111-1/+0
| | | | | | | | invalidEntry is commented out Pick-to: 6.3 6.2 5.15 Change-Id: Iffb661ec85b1b633f56c9aba94c1f0727a93c987 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* qaccessible: Split QAccessible into own headerFabian Kosmale2022-02-093-383/+456
| | | | | | | | | | | | | | | | | | | | qaccessible.h includes quite a few heavy headers. While QAccessibleEvent and QAccessible can be forward declared, the enums in QAccessible cannot. By moving QAccessible into its own lightweight header, we can significantly reduce the cost of using the enums. qaccessible.h still includes qaccessible_base.h, and the syncqt rules are adjusted to ensure that this changes is source compatible. Additionally, we no longer include cstdlib, as we only need cstring. [ChangeLog][Potentially Source-Incompatible Changes] <QAccessible> no longer includes <stdlib.h>. This might break code that relied on transitive includes. Task-number: QTBUG-97601 Change-Id: I15fbd9c85f5746885f9e89eabfc6d07b9bb1f968 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Doc: Use \inmodule for all classes and headersTopi Reinio2022-01-172-0/+3
| | | | | | | | | | | | | | | QDoc made some assumptions about the module a class/header belongs to, based on the source file path. This feature is rather error-prone and unnecessarily complex and will be removed from QDoc. Define modules explicitly to avoid documentation warnings when this removal happens. Pick-to: 6.2 6.3 Change-Id: I7947d197db5ac36c12e816caa19bb2f74eda8849 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* gui: Fix typos in documentationJonas Kvinge2021-10-121-4/+4
| | | | | | Pick-to: 5.15 6.2 Change-Id: I533f5a55cd0cd60a76990b552d7dab51a301ac1c Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Accessibility Linux: Fix caps lock stateSamuel Thibault2021-09-282-10/+8
| | | | | | | | | | | | | | | | | Currently in QSpiApplicationAdaptor::eventFilter, the ATSPI_MODIFIER_SHIFTLOCK flag (actually capslock modifier) only set when the capslock key is kept pressed, not when the capslock modifier is enabled. Orca however really needs to know the capslock modifier state, to be able to properly determine whether to enable/disable capslock when the user presses double-capslock. Task-number: QTBUG-84225 Pick-to: 6.2 5.15 5.12 Change-Id: I98ab8b7261c5560ebad49410b1358b2279080ec8 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* gui: accessible - silence int conversion warningTim Blechmann2021-06-171-4/+4
| | | | | | | | | | msvc2019 emits: warning C4244: 'argument': conversion from 'qsizetype' to 'int', possible loss of data Change-Id: I286c0d453f69654ba58f071aee28e557b9f9058d Pick-to: 6.1 6.2 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Add QAccessibleHyperlinkInterfaceJan Arve Sæther2021-06-032-1/+56
| | | | | | | | This is needed in order to support hyperlinks in text content. Task-number: QTBUG-67878 Change-Id: I1e990a5db8f0cf78e5cdcec7359e5aabffe42e3d Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QTestAccessible: Clear objects in EventList when deletedFabian Kosmale2021-05-231-0/+1
| | | | | | | | | | | | | | The list persists events, which reference objects. Those objects might get deleted by the time we investigate the objects. We cannot change the event to store a QPointer for BIC reasons, and for normal usage of the events, that doesn't make sense either. Instead, connect the objects destroyed signal to a lambda which clears the events' object member. In order to access the private member, we befriend the test class. Change-Id: I036be7053dccde4bdf862173789564e89d729ee1 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* a11y: Do not cache classes that don't have a factory pluginJan Arve Sæther2021-01-131-5/+4
| | | | | | | | | | | | | | | | | | | For Qt Widgets we thought it was a good idea to also store in the cache if a class didn't have a factory plugin. This worked fine there, since the number of QWidget classnames is quite limited (so the factory plugin cache will soon reach a limit) In QML however, classes are often suffixed with e.g. Button_QMLTYPE_123, Button_QMLTYPE_124 etc. This number suffix is just increased continuously. This could lead to that the factory plugin cache will grow ad infinitum, which will cause "memory leaks" in addition to a performance penalty. Pick-to: 6.0 Pick-to: 5.15 Fixes: QTBUG-75106 Change-Id: I9ba189f989f0b90ab62a2c54a2e9230236a998d8 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove the qmake project filesJoerg Bornemann2021-01-074-73/+0
| | | | | | | | | | | | | | | | Remove the qmake project files for most of Qt. Leave the qmake project files for examples, because we still test those in the CI to ensure qmake does not regress. Also leave the qmake project files for utils and other minor parts that lack CMake project files. Task-number: QTBUG-88742 Change-Id: I6cdf059e6204816f617f9624f3ea9822703f73cc Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Replace discouraged Q_MOVABLE_TYPE by Q_RELOCATABLE_TYPEAndreas Buhr2020-11-301-7/+7
| | | | | | | | | | | | | | Q_MOVABLE_TYPE was conceived before C++ had move semantics. Now, with move semantics, its name is misleading. Q_RELOCATABLE_TYPE was introduced as a synonym to Q_MOVABLE_TYPE. Usage of Q_MOVABLE_TYPE is discouraged now. This patch replaces all usages of Q_MOVABLE_TYPE by Q_RELOCATABLE_TYPE in QtBase. As the two are synonymous, this patch should have no impact on users. Pick-to: 6.0 Change-Id: Ie653984363198c1aeb1f70f8e0fa189aae38eb5c Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Make QAccessible::State's equality operator a hidden friendVolker Hilsheimer2020-10-282-8/+4
| | | | | | | | | | | Reduce ADL nose. We already have an inline default constructor calling memset, so can have the comparison operator calling memcmp also inlined. Task-number: QTBUG-87973 Change-Id: If8e0ae98b0c44fc3fddac7ef57c5ff021c80dad6 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix some qdoc warnings: undocumented parametersVolker Hilsheimer2020-09-251-2/+3
| | | | | Change-Id: I5d37f620caccbd1445c99a602b71779bdedd37d3 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* CMake: Regenerate projects to use new qt_internal_ APIAlexandru Croitor2020-09-232-82/+0
| | | | | | | | | | | Modify special case locations to use the new API as well. Clean up some stale .prev files that are not needed anymore. Clean up some project files that are not used anymore. Task-number: QTBUG-86815 Change-Id: I9947da921f98686023c6bb053dfcc101851276b5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Make QStringList an alias to QList<QString>Lars Knoll2020-09-121-1/+0
| | | | | | | | | | | | | | | | | | Fix our API, so that QStringList and QList<QString> are the same thing. This required a bit of refactoring in QList and moving the indexOf(), lastIndexOf() and contains() method into QListSpecialMethods. In addition, we need to ensure that the QStringList(const QString&) constructor is still available for compatibility with Qt 5. Once those two are done, all methods in QStringList can be moved into QListSpecialMethods<QString>. Change-Id: Ib8afbf5b6d9df4d0d47051252233506f62335fa3 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>