summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/linuxaccessibility/atspiadaptor.cpp
Commit message (Collapse)AuthorAgeFilesLines
* AtSpiAdaptor: eradicate remaining Q_FOREACH loopsMarc Mutz2019-06-131-5/+4
| | | | | | | | | | | | | | | | | ... and replace them by C++11 range-for loops. Change-Id: I6975121f606ec1fcda7a624b02a68edf829bb70b Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Handle coordinates related to component windowJosé Millán Soto2018-02-051-1/+7
| | | | | | | | | | | | AtSpiAdaptor::componentInterface was not checking the coordinate type in GetAccessibleAtPoint. Now, if the coordinate type is ATSPI_COORD_TYPE_WINDOW the coordinates of the window will be added to the specified coordinates. Change-Id: Iba571109a8da300f4141d616a94ef4ac87918f98 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Move Linux/at-spi debug to categorized loggingFrederik Gladhorn2017-06-221-71/+59
| | | | | | Task-number: QTBUG-48593 Change-Id: Icf17137e7953e08db39bfac0282f6e06b1f58686 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Avoid detaching temporary objectsAlexander Volkov2017-01-251-1/+1
| | | | | | | | | | | Found with clazy [detaching-temporary]: - don't call QList::first() on temporary - don't call QString::operator[]() on temporary - don't call QByteArray::data() on temporary Change-Id: I390962ef6020e4fcb0b0e447a63eed1e314d18a4 Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
* create modularized version of qtplatformsupport moduleOswald Buddenhagen2016-10-151-1/+1
| | | | | | | | | | lumping together all kinds of unrelated stuff has caused problems with spurious dependencies from the beginning. as the modularization infra is now in a state which supports many small private libraries just fine, take advantage of it. Change-Id: Ic40f47ce76a308bbfd32deae281f6f064fe1ef4c Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-08-161-2/+1
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/doc/src/qmake-manual.qdoc src/corelib/global/qglobal.cpp src/corelib/tools/qstring.cpp src/network/socket/qabstractsocket.cpp src/network/socket/qnativesocketengine_unix.cpp src/plugins/platforms/eglfs/api/qeglfsglobal.h Change-Id: Id5dfdbd30fa996f9b4b66a0b030b7d3b8c0ef288
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-08-131-2/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.cpp src/corelib/io/qsettings.cpp src/corelib/itemmodels/qstringlistmodel.cpp tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp Change-Id: I1c6c306ef42c3c0234b19907914b19da706b4a03
| | * AtSpiAdaptor: fix 'defined' field in GetAttributeValueMarc Mutz2016-08-111-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Value was inverted. Found by own code review. Change-Id: I2027d97e1f9d52f6d79fb72ecad9ee2034f9af25 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* | | AtSpiAdaptor: eradicate Q_FOREACHMarc Mutz2016-08-131-14/+8
|/ / | | | | | | | | | | | | In getActions(), simplify the code some more. Change-Id: I93699d09f701959a4206f84becfb80d4d2a1d410 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* | QtBase (remainder): use printf-style qWarning/qDebug where possible (I)Marc Mutz2016-03-121-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The printf-style version of QDebug expands to a lot less code than the std::ostream-style version. Of course, you pay in type safety (but compilers warn about it these days), you cannot stream complex Qt types and streaming QStrings is awkward, but in many cases you actually improve on readability. But the main reason is that something that's not supposed to be executed under normal operation has no business bloating executable code size. This is not an attempt at converting all qWarnings() to printf-style, only the low-hanging fruit. In this first part, replace qWarning() << "" with qWarning("..."). Had to fix broken qImDebug() definition. Instead of defining it as a nullary macro in the QT_NO_DEBUG case and as a variadic macro in the other, define it in both cases, as is customary, as a non-function macro so that overload selection works without requiring variadic macro support of the compiler. Saves e.g. ~250b in text size in QtPrintSupport on optimized GCC 5.3 AMD64 builds. Change-Id: Ie30fe2f7942115d5dbf99fff1750ae0d477c379f Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-02-021-29/+29
|\| | | | | | | | | | | | | | | | | Conflicts: config.tests/unix/compile.test src/plugins/platforms/cocoa/qcocoahelpers.mm src/tools/qlalr/cppgenerator.cpp Change-Id: I0103ca076a9aca7118b2fd99f0fdaf81055998c3
| * Don't use QStringLiteral in comparisonsAnton Kudryavtsev2016-01-281-29/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For QLatin1String, operator== is overloaded, so comparing to a latin-1 (C) string literal is efficient, since strlen() is comparatively fast. OTOH, QStringLiteral, when not using RVO, litters the code with QString dtor calls, which are not inline. Worse, absent lambdas, it even allocates memory. So, just compare using QLatin1String instead. Change-Id: I761b2b26ab5b416bc695f524a9ee607dacf0a7b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Updated license headersJani Heikkinen2016-01-151-14/+20
|/ | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Libraries: Fix single-character string literals.Friedemann Kleint2015-10-131-2/+2
| | | | | | | Use character literals where applicable. Change-Id: I8e198774c2247c1cc1d852a41b59b301199b7878 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* platformsupport/linuxaccessibility: fix uses of inefficient QListsMarc Mutz2015-07-081-1/+1
| | | | | | | | | | | | These types are larger than a void*, so holding them in QLists is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Fix by marking them movable, and holding in a QVector instead. Change-Id: I3d5cf78c1597bd1b743ed3692aaa5e2e750a85f9 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* Use QList::reserve(), reduces reallocationsSérgio Martins2015-06-271-2/+6
| | | | | Change-Id: I9f218bdd65a97ad9c867b695f3ba27ab64a54d2a Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Accessibility Linux: Fix text attributesBoris Dušek2015-03-131-2/+124
| | | | | | | | | | | | | Orca expects text attributes with different names (and sometimes also different values) than IAccessible2 ones (which Qt uses). So adapt the names and values accordingly. [ChangeLog][Accessibility] We now report text attributes correctly on Linux, so ORCA+F now works properly in QTextEdit and other text controls. Change-Id: I55ead0e87e7e298f4fae14a197716f86494334b0 Task-number: QTBUG-44479 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-02-101-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro src/gui/image/qimage_conversions.cpp src/gui/opengl/qopenglextensions_p.h src/gui/text/qtextengine.cpp src/network/ssl/qsslsocket_openssl.cpp src/plugins/platforms/eglfs/qeglfshooks_stub.cpp src/plugins/platforms/eglfs/qeglfsscreen.cpp src/plugins/platforms/eglfs/qeglfswindow.cpp src/plugins/platforms/windows/qwindowsfontdatabase.cpp src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp src/plugins/platforms/windows/qwindowsnativeinterface.cpp src/plugins/platforms/windows/qwindowsscreen.cpp src/plugins/platforms/windows/qwindowswindow.cpp src/plugins/platforms/windows/qwindowswindow.h src/plugins/platforms/xcb/qxcbdrag.h src/widgets/itemviews/qabstractitemview.cpp src/widgets/kernel/qwidget.cpp src/widgets/util/qsystemtrayicon_p.h tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp Thanks to Friedemann Kleint for resolving the qwindowsfontdatabase.cpp conflicts. Change-Id: I937232c30523d5121c195d947d92aec6f129b03e
| * Accessibility: Fix selection change notifications on LinuxFrederik Gladhorn2015-01-211-2/+2
| | | | | | | | | | | | | | | | | | The selection update is not implemented on other platforms (if needed at all). Task-number: QTBUG-39440 Change-Id: I8eb8c4eb1c23ba2d246bc95f1c77dc9da9e22495 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devOswald Buddenhagen2014-09-291-18/+10
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qbytearray.cpp src/gui/image/qimage.cpp src/gui/image/qppmhandler.cpp src/gui/kernel/qguiapplication.cpp src/gui/painting/qpaintengine_raster.cpp Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
| * Update license headers and add new license filesMatti Paaso2014-09-241-18/+10
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-09-011-22/+35
|\| | | | | | | Change-Id: I2811ff0b9d4097f0be60ff16e9664a5060cff23e
| * Accessibility Linux: add action interfaces for valueFrederik Gladhorn2014-08-191-22/+35
| | | | | | | | | | Change-Id: I454493fc6e9e93f44d15986ca843c3244f97cbe6 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Compile with -no-feature-accessibilityFrederik Gladhorn2014-08-211-0/+2
|/ | | | | | Task-number: QTBUG-38045 Change-Id: Id436b70aa6161bdf2428ca0a605212b278c71849 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Accessibility Linux: send children changed notificationsFrederik Gladhorn2014-07-231-1/+16
| | | | | | | | | The badly named ObjectReorder actually stands for any of this object's children may have changed. This event is used in webengine and should trigger the ATs to drop their caches (eg when loading a new website). Change-Id: I44080f8d43c1161285d9ace4891fe18531f16e09 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-101-6/+13
|\ | | | | | | Change-Id: Ia12ffdb27ecdf25c2a2bdb0eed1945387502108a
| * Accessibility Linux: Fix crashes when accessing invalid functionsFrederik Gladhorn2014-07-031-6/+13
| | | | | | | | | | | | | | | | | | | | There is no way to prevent ATs from calling random functions on DBus. While these functions shouldn't exist when we don't advertise the interface, they should just fail gracefully. Task-number: QTBUG-40044 Change-Id: Ia29b49b16feabc0beb80007456e53497f230c7d4 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Update copyright to 2014 for accessibilityFrederik Gladhorn2014-07-041-1/+1
| | | | | | | | | | Change-Id: I4210456122bf8a6d3730f017f3ce6dd1a1bcb3f5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Accessibility Linux: Implement set focus actionFrederik Gladhorn2014-07-041-7/+7
| | | | | | | | | | | | | | | | | | | | | | This is used by Orca for geometric navigation (aka flat review) to move the focus around. It is also generally sensible to be able to programatically move the focus around. This way of moving the focus is redundant with the action interface's focus action. Task-number: QTBUG-40048 Change-Id: I1b61ea843f6bfc3dc00007772e0e5102555ca752 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Cleanup local var usageFrederik Gladhorn2014-06-301-4/+2
| | | | | | | | | | Change-Id: I24c8bc1eef444e3ef4823d5d092089e4f308585b Reviewed-by: Caroline Chao <caroline.chao@digia.com>
* | Accessibility Linux: Fix methods returning rects as iiii for AT-SPIFrederik Gladhorn2014-06-201-5/+5
|/ | | | | | | | | | According to the spec rects get returned with iiii but we were directly serializing QRect resulting in (iiii) as signature. This would trip up Orca when trying to use flat review in text edits. Task-number: QTBUG-39702 Change-Id: I8d6769688586e678d27cc4341de5176a91f057fc Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Accessibility: Update ComboBox text on arrow keysFrederik Gladhorn2014-05-161-7/+20
| | | | | | | | | | Use ValueChanged to notify of changes in the ComboBox. On Linux we need to update name and then send selection-changed for Orca. Task-number: QTBUG-36814 Change-Id: Icdd34adddeac532476a6dd910d1e8bd33bcd590b Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Accessibility Linux: Report Active stateFrederik Gladhorn2014-02-111-7/+0
| | | | | | | | | | | | | The fixme comment is invalid since QAccessibleWidget actually checks for isWindow and sets the active state. This is messed up because in Qt 4 there was a work-around to set active for windows in a different code path. [ChangeLog][QtGui] Accessibility on Linux now reports the active state correctly. Change-Id: I9e2cf436b3ffa7ef28286ee49d6e582f179930c6 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Accessibility Linux: Fix atspi getActions to return action nameFrederik Gladhorn2014-01-031-0/+1
| | | | | | | | [ChangeLog][Accessibility] On Linux action names were returned as empty strings in AT-SPI getActions, now returns the proper names. Change-Id: I75a469a0b8a5789cd54ce1b489ed5012654bb265 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Remove rowColumnExtents from QAccessibleTableCellInterfaceFrederik Gladhorn2013-08-221-2/+5
| | | | | | | | | The API is broken and available in individual functions. Don't make it more complicated than necessary to implement the interfaces for new widgets. Change-Id: Ie408c369ef05b2b8e7ac666b25153d090fcf3aae Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Fix potential division by zeroFrederik Gladhorn2013-08-191-8/+13
| | | | | | | | Since it's possible to call the function on an empty model, return failure in that case. Change-Id: I0a0eabe917da3e6294bdd616a85579f6dc894ec8 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Make QTextCursor accessibility boundary finder availableFrederik Gladhorn2013-04-081-7/+7
| | | | | | | | | This allows re-using the function in QtQuick. In addition TextBoundaryType is moved to QAccessible and QAccessible2 as namespace ceases to exist. Change-Id: I184bc2c181a22ca51ac4db4e5a080dc26d4acfe0 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Cache QAccessibleInterfaces.Frederik Gladhorn2013-04-021-147/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | Since there already is a one-to-one relationship between QObject and QAccessibleInterface it makes little sense to create and destroy the interfaces on each call to queryAccessibleInterface. Add a cache and keep created interfaces around for the lifetime of the corresponding QObject. This changes the memory management rules: accessible interfaces must no longer be deleted. If you get an QAccessibleIntrface pointer that pointer will stay valid as long as the corresponding QObject is not deleted. This also re-enables accessibility for Mac. We limit the range of the IDs so that they are useable for Windows directly. That means we can get rid of the event cache there. This is based on: Iebf2f374916fc70a9dd29e95f45a6444b85f6cee Change-Id: I9fe6531812c0dbc5b41101ac05830a6dd75e13a3 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Accessibility: Fix crash when updating in dtorFrederik Gladhorn2013-03-231-2/+6
| | | | | | | | | | | | | | This happens for example when running several tests. Widgets in destructor should be treated as invalid since their window pointer and other properties are no longer valid. When deleting a window containing only a table view there would be a table model reset update comming from the window being destroyed. Change-Id: Ia387c814333ce373fe132b189fc180787e36cdd5 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Remove debug output that can cause crashes in static builds.Frederik Gladhorn2013-02-251-12/+53
| | | | | | | | | | Currently static builds ignore the accessibility plugins. The debug output would also potentially crash for other events when they could not create interfaces. Task-number: QTBUG-28707 Change-Id: I5ae20cac89bd7f4a74add2b80834f4e9d4fa438c Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Accessibility: Ignore TableModelChanges on Linux for now.Frederik Gladhorn2013-02-071-16/+4
| | | | | | | | | This part will be improved in Qt 5.1. Currently it just spits out debug messages for unhandled events. Change-Id: I22475317ab54a8223d42536e1cee3f93a969e497 Reviewed-by: hjk <hjk121@nokiamail.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Check if the interface pointer is valid to avoid a potential crash.Jan Arve Saether2013-02-061-1/+1
| | | | | Change-Id: I7e6634b799e551786d6cbc85e2d526b7874ada3d Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Accessibility Linux: Make dbus registration asyncFrederik Gladhorn2013-01-221-28/+12
| | | | | | Change-Id: I74043be04f4ee17089353304fdc007a7f22cdea0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Revert "Enable module build with QT_NO_ACCESSIBILITY"aavit2013-01-041-4/+0
| | | | | | | | | | This reverts commit b7f63c6bf74a0eb62bb49c1085584da1b3714a06. It made compilation fail in qstylehelper_p.h if QT_NO_ACCESSIBILITY was defined - which it is by default on linux without dbus. Change-Id: I313f5138460d28c44dad128d175df0e53a99287d Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Fix GCC warning about parentheses in QtPlatformSupportThiago Macieira2013-01-021-1/+2
| | | | | | | atspiadaptor.cpp:2140:12: error: suggest explicit braces to avoid ambiguous 'else' [-Werror=parentheses] Change-Id: Ib21308f9c1b3bf813fed803228d8adbcc3ce7e9f Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Enable module build with QT_NO_ACCESSIBILITYTasuku Suzuki2012-12-201-0/+4
| | | | | | Change-Id: I330c3ddd70232d94eae5543cb0282b962e67eae5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Accessibility Linux: Prevent access to invalid interfacesFrederik Gladhorn2012-12-181-5/+20
| | | | | | | | | | | Especially with the newer QML accessibility we can end up with events for objects that cannot instantiate a QAccessibleInterface. Let's not crash in that case. Change-Id: Ie5d38315f32d30540eb4adcb74a7b3bfa667f03f Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Handle disabled state changeJosé Millán Soto2012-12-161-0/+7
| | | | | | | | Modified AtSpiAdaptor::notify to handle enabling and disabling widgets. Change-Id: I9a23f74d891aaf123d7fc094bdf63e384e1d65fe Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>