summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/uiautomation
Commit message (Collapse)AuthorAgeFilesLines
* Use QComObject with QWindowsUiaMainProviderPavel Dubsky2024-04-182-29/+16
| | | | | | | | This change adds QComObject as base to QWindowsUiaMainProvider in order to reuse its implementation of IUnknown. Change-Id: I48808262364992f90f18fc881594f151eeb29a3f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Clean up windows accessibility backendMiguel Costa2024-03-277-22/+163
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | What was done: * Removed headers in src/gui/accessible/windows/apisupport: as of v13.1.0, MinGW supports most of the definitions in these headers. Including uiautomation.h should be enough. * Removed the QWindowsUiaWrapper class: it's not meant to be extended or itself instantiated, is an "ultra-thin" layer (it even preserves the "all-caps" Win types of function args), and is in effect only a MinGW-bound "kludge". Instead of this class, use the UI Automation API directly, with the assumption that it's available and fully functional, as specified in the MS docs. Any gaps between this assumption and what is delivered by MinGW are bridged with specific (and explicit) temporary "kludges". * Implemented said specific "kludges" in qwindowsuiautomation. For Windows builds, the header just includes uiautomation.h, and the .cpp is empty. For MinGW, the header contains definitions still missing from uiautomation.h, and the .cpp implements functions of the UI Automation core library through imports from the uiautomationcore DLL. * Windows plugins (and tst_qaccessibility): use the UI Automation API definitions directly, instead of the "ultra-thin" wrapper. * Windows plugin builds: use uiautomationcore library, if found. What's intended: * Unburden Gui of the Windows UI Automation COM interfaces and other definitions that are copied in the uia*.h headers. * Make the Windows plugins independent of MinGW shortcomings. * Remove the QWindowsUiaWrapper class that essentially only hides these shortcomings and the "kludge" code needed to overcome them. * As MinGW adds further support to the UI Automation API over time, make it noticeable which workarounds are no longer needed. The current approach of hiding "kludges" in a wrapper class will also hide the fact that they're no longer needed, if/when that time comes. Change-Id: I0070636817d5de81d0b106e9179e2d0442362e2a Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add QT_IM_MODULES env to allows specify multi IM keyJiDe Zhang2024-03-051-1/+2
| | | | | | | | | | | | | | | | | Like as QT_QPA_PLATFORM, supports specifying multiple keys, and can perform fallback operations to prioritize the use of a certain plug-in. This is useful when using Wayland and XWayland applications at the same time. For an example, we can set "QT_IM_MODULES=wayland;fcitx", and the wayland application will use the wayland input context plugin, the xwayland application will use fcitx, which can't be done without adding a new environment variable, if we specify "QT_IM_MODULE=wayland", the XWayland applications may not be able to use the input method. Fixes: QTBUG-120202 Change-Id: Iac408af241963147747a2fe685f1e27bf9d9ee64 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Replace QWindowsComBase with QComObjectPavel Dubsky2024-02-2716-51/+41
| | | | | | | | | | | | Currently with have two base classes for COM-objects that implement basic IUnknown functionality and the idea is to remove duplication and keep just one. Since QComObject supports more features than QWindowsComBase, such as multiple inheritance and intermediate interface querying, we should switch to the former one. Change-Id: Ief6567496de9f547b936de91d634c6998ba59a75 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Windows QPA: Always process system sound eventsChristian Heimlich2023-12-131-5/+6
| | | | | | | | | | | | | | | 1b96c75661f678632485513d1323166bc6d74e5c reduced event noise by dropping accessibility events if Windows UI automation has not been activated; however, this did not take into account that some widgets (e.g. QMessageBox) rely on accessibility event processing to emit certain system sounds. Change notifyAccessibilityUpdate() so that system sound related events are processed regardless of accessibility activation. Pick-to: 6.5 6.6 6.7 Change-Id: I22f1516e8fbb3727b065ecc2c30b272b2d6fd1c0 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* a11y: Fix bug where some characters were not spoken while moving cursorJan Arve Sæther2023-11-231-4/+4
| | | | | | | | | | | | | | | | | | The problem occurred when we moved the cursor to the penultimate character of the string, because the boundary condition was wrong. It is important to realize that the offsets are moved *between* each character (and also before and after the whole string), just like you would move a cursor. This means that the offsets can be in the range [0, len] (closed interval) The problem could only be reproduced with JAWS. Pick-to: 6.6 6.5 6.2 Fixes: QTBUG-115156 Change-Id: I0c5f05fa391e6c7744ab22d71afe8904b49e89bc Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
* a11y uia: Report UIA_StrikethroughStyleAttributeIdMichael Weghorn2023-11-152-0/+47
| | | | | | | | | | | | | | | | | | | | | | | | | Implement support for getting the strikethrough style (UIA attribute UIA_StrikethroughStyleAttributeId [1]) by checking for the corresponding IAccessible2 text attribute "text-line-through-type" [2] and mapping the value accordingly if set. Only report those attributes from the QAccessibleTextInterface::attributes return value, if they apply for the whole range of the QWindowsUiaTextRangeProvider. With this in place, the NVDA screen reader on Windows announces "strikethrough" as expected when asked to report the formatting information (e.g. via NVDA+f shortcut) for the QTBUG-118106 example. [1] https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-textattribute-ids [2] https://wiki.linuxfoundation.org/accessibility/iaccessible2/textattributes Task-number: QTBUG-118106 Change-Id: I2fa060bd3bf493227bba766385f34d224497784c Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* a11y uia: Map 3 more roles to UIA control type IDsMichael Weghorn2023-11-151-0/+3
| | | | | | | | | | | | | | For QAccessible::Paragraph and QAccessible::Heading, use UIA_TextControlTypeId as specified in the Core Accessibility API Mappings specification [1] [2]. For QAccessible::WebDocument use UIA_DocumentControlTypeId. [1] https://w3c.github.io/core-aam/#role-map-paragraph [2] https://w3c.github.io/core-aam/#role-map-heading Change-Id: Idae1e2da28b495d5d639df63c3de1260f2177142 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* platform plugins: use string view types moreAnton Kudryavtsev2023-10-081-2/+3
| | | | | | | Change-Id: I793cfff1afca6b98a672615e33a19f8210e429dd Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* a11y uia: Don't return "S_OK" and null text rangeMichael Weghorn2023-08-301-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QWindowsUiaTextProvider::RangeFromPoint was called with a point that is not over any character, it was previously returning S_OK and a nullptr for the text range. This is contrary to what the ITextProvider::RangeFromPoint documentation [1] says: > If this method succeeds, it returns S_OK. > Otherwise, it returns an HRESULT error code. and > The property never returns NULL. Therefore, setting pRetVal to NULL and returning S_OK at the same time is problematic. Return UIA_E_ELEMENTNOTAVAILABLE instead for that case, and only return S_OK when actually setting a valid text range provider as well. Ideally, this should return an empty range for the character that is closest to the given point. That one could be identified by iterating over all characters and calculating their distance to the given point, but that would be too expensive. [1] https://learn.microsoft.com/en-us/windows/win32/api/uiautomationcore/nf-uiautomationcore-itextprovider-rangefrompoint Fixes: QTBUG-115801 Pick-to: 6.6 6.5 Change-Id: Ib08d02677935a45517c937613785f1e3f53ee032 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Revert "Windows QPA: Add support to UiaRaiseNotificationEvent()"Jan Arve Sæther2023-08-161-21/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 566def740ec58e842e6bb37177f80e20aebaa245. The fix had some unwanted side-effects when the QAccessibleValueChangeEvent carried a value of type string. Only QComboBox uses QAccessibleValueChangeEvent in such a way. The consequence of the reverted patch was that it broke QComboBox so that the screen reader would read aloud the value change event regardless of the visibility or focus state of the QComboBox. (Thus, if you e.g. changed the QComboBox::currentIndex on a *hidden* combo box, the screen reader would still read aloud the event) This is also the root cause of what is described in QTBUG-93763. Also, due to the usage of NotificationProcessing_ImportantMostRecent the screen reader would treat it as such an important event that it would abort whatever it was currently speaking. In addition, the reverted change didn't fix any bugs and it failed to implement the suggested behavior in a correct way (as was described in QTBUG-75003 - albeit properly described after the change was merged). QTBUG-75003 has already been reopened due to this, and the change can therefore be reverted quite risk-free. Task-number: QTBUG-75003 Task-number: QTBUG-93763 Pick-to: 6.6 6.5 6.2 5.15 Change-Id: Ib91872adc563c31534fe2b30fd9c447bfcca6b40 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* a11y uia: Bridge QAccessibleSelectionInterfaceMichael Weghorn2023-07-183-46/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bridge QAccessibleSelectionInterface that was introduced in commit 9d16d5e2245c26e5746fd7609300b84a2a983457 to UIA's ISelectionProvider and ISelectionProvider2 interfaces by extending the existing WindowsUiaSelectionProvider to make use of the QAccessibleSelectionInterface. Also make use of that interface to implement handling for the ISelectionProviderItem interface methods when an object has a parent that implements the QAccessibleSelectionInterface. Sample use from NVDA's Python console [1] with this commit in place: 1) start NVDA 2) run the interview example (examples\widgets\itemviews\interview\interview.exe) 3) select "Item 1:0", "Item 2:0" and "Item 3:0" by left-clicking on "Item 1:0" in the left view, then shift+clicking on "Item 3:0". 4) press Numpad_insert+control+z to start the NVDA Python console and capture snapshot variables 5) query and use the interfaces using NVDA's Python console: >>> import UIAHandler >>> selectionpattern2 = focus.parent.UIAElement.GetCurrentPattern(10034).QueryInterface(UIAHandler.IUIAutomationSelectionPattern2) >>> selectionpattern2.CurrentFirstSelectedItem.CurrentName 'Item 1:0' >>> selectionpattern2.CurrentLastSelectedItem.CurrentName 'Item 3:0' >>> selectionpattern2.CurrentItemCount 3 >>> selectionitempattern = focus.UIAElement.GetCurrentPattern(10010).QueryInterface(UIAHandler.IUIAutomationSelectionItemPattern) >>> selectionitempattern.CurrentIsSelected 1 >>> selectionitempattern.RemoveFromSelection() 0 >>> selectionitempattern.CurrentIsSelected 0 >>> selectionpattern2.CurrentItemCount 2 >>> selectionitempattern.Select() 0 >>> selectionitempattern.CurrentIsSelected 1 (Note that calling selectionitempattern.AddToSelection in that example would also unselect all other currently selected entries, because the underlying implementation has a selection mode of QAbstractItemView::SingleSelection set in QAccessibleTree::selectRow, which gets called from QAccessibleTable::select via QAccessibleTableCell::selectCell.) [1] https://www.nvaccess.org/files/nvda/documentation/developerGuide.html#PythonConsole Change-Id: I7003bae5bbcfd5c685620bf710781165ed70f106 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* a11y uia: Support ISelectionProvider2Michael Weghorn2023-07-183-2/+133
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support UIA's ISelectionProvider2 interface [1] in addition to ISelectionProvider. The ISelectionProvider2 interface inherits from the ISelectionProvider interface. A follow-up commit that will introduce bridging the QAccessibleSelectionInterface, introduced in commit 9d16d5e2245c26e5746fd7609300b84a2a983457. While at it, also reserve space for the amount of children in the QList in QWindowsUiaSelectionProvider::GetSelection before inserting them one by one, to avoid reallocations. Sample use of the ISelectionProvider2 interface from NVDA's Python console [2] with this commit in place: 1) start NVDA 2) run the gallery example (examples\widgets\gallery\gallery.exe) 3) click on the "Style" listbox at the top 4) press Numpad_insert+control+z to start the NVDA Python console and capture snapshot variables 5) query and use the interface using NVDA's Python console >>> import UIAHandler >>> iselection2 = focus.parent.UIAElement.GetCurrentPattern(10034).QueryInterface(UIAHandler.IUIAutomationSelectionPattern2) >>> iselection2.CurrentItemCount 1 >>> iselection2.CurrentFirstSelectedItem.CurrentName 'windowsvista' >>> iselection2.CurrentLastSelectedItem.CurrentName 'windowsvista' [1] https://learn.microsoft.com/en-us/windows/win32/api/uiautomationcore/nn-uiautomationcore-iselectionprovider2 [2] https://www.nvaccess.org/files/nvda/documentation/developerGuide.html#PythonConsole Change-Id: I43642e9e39b63c65da97af976cc322a8e5868170 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* a11y uia: Bridge newly added relations to UIAMichael Weghorn2023-07-132-0/+32
| | | | | | | | | | | | | | | | Support UIA property IDs UIA_DescribedByPropertyId, UIA_FlowsFromPropertyId and UIA_FlowsToPropertyId by using the Qt relation types newly introduced in f5358e5932bc8701621389c265c4ea86c92c536c. As described in f5358e5932bc8701621389c265c4ea86c92c536c and afbfe30093d49eff0ec4c28c220d33c233b9f807 for AT-SPI, the relation type needs to be "inverted" for UIA just the same, since Qt's semantics is the other way around. Task-number: QTBUG-105864 Change-Id: Id557389af6609197f4c3b37741e4201028627004 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Fix cache maybe invalid while the signal is actived from queueJannis Xiong2023-01-063-1/+8
| | | | | | | | | with default QObject::connect signal may active from next message loop. invalide cache will hit while accessibility interface is called from windows. Invalide cache will lead to a crash Fixes: QTBUG-106653 Pick-to: 5.15 6.2 6.3 6.4 Change-Id: I5359672bcd60ed6cfb2edf238645225164cb1b88 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows: Inform accessibility system about the focused child itemVolker Hilsheimer2022-11-111-2/+3
| | | | | | | | | | | | | | | | | | | | | | | When a complex object (i.e. one with children that are themselves not fully exposed objects) gets focus, then we need to inform the accessibility system about which child object actually has focus. This was only done for item views, but not for other complex widgets. An editable QComboBoxes is the focus proxy for its line edit. The line edit never gets focus itself (QComboBox forwards relevant events), and is the accessible child item with index 1. So when an editable combobox gets focus, it needs to raise the automation event for the line edit child. Implement QAccessibleComboBox::focusChild to return the interface to the lineedit for editable comboboxes so that the UI Automation bridge can correctly notify about the focus being moved to an editable text input field. Fixes: QTBUG-107572 Pick-to: 6.4 6.2 Change-Id: Id60e2791ec859365255baa9bfd01547979cd2b44 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Windows QPA: send UIA focus notification after window activationAndré de la Rocha2022-09-021-0/+4
| | | | | | | | | | | | | After a Qt application window was opened, and focus was moved to another window, and then back to the Qt application window, NVDA would only announce the window name, but not the widget focused within the window. This patch makes Qt send a notification focus for the focused widget after a window activation notification. Fixes: QTBUG-105735 Pick-to: 6.4 6.3 6.2 Change-Id: I3426b3613ae546de0ce363f9acc5d6776c99a8aa Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows QPA: fix tree item discovery through UI AutomationAndré de la Rocha2022-08-221-19/+11
| | | | | | | | | | | | | | This change reverts a workaround for a compatibility issue with a Windows utility, which is no longer necessary with Qt6 and was in some cases preventing accessibility tools from discovering tree items. This reverts commit 1c55a6caf1fc2b8a73a9a756bcf6894c5d4e4398. Fixes: QTBUG-105814 Pick-to: 6.4 6.3 6.2 Change-Id: Id464da49704b6953affca2fa40acc03f1ffd05ac Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows QPA: Implement Selection UIA pattern for QTabBarAndré de la Rocha2022-07-083-23/+37
| | | | | | | | | | Adding Selection pattern for tab bars and SelectionItem pattern for tab items, which are required for accessibility compliance. Pick-to: 6.4 6.3 6.2 Fixes: QTBUG-104740 Change-Id: I0e3b1cfbf4838d8bc8b5bc2e2d7c9d372ac8b99d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows QPA: Report the expanded/collapsed state of tree itemsAndré de la Rocha2022-07-081-1/+2
| | | | | | | | | | | Implement the ExpandCollapse UI Automation pattern for tree items, so that accessibility tools like MS Narrator are able to report the item state. Pick-to: 6.4 6.3 6.2 Fixes: QTBUG-103988 Change-Id: I1529bdb0104c6e29d8f28bc0bbb8a7fa4670c7ef Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add ExpandCollapse UI Automation pattern to combo boxesAndré de la Rocha2022-06-222-7/+14
| | | | | | | | | | | Also add support to expandable/expanded states to QAccessibleComboBox in widgets. QtDeclarative will still require updates so that QML combo boxes report the expanded/collapsed state and react to UIA actions. Task-number: QTBUG-103591 Pick-to: 6.4 6.3 Change-Id: Iff8ba5e3143778ce17998dbe7f5f76cae658dc19 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Use SPDX license identifiersLucie Gérard2022-05-1638-1444/+76
| | | | | | | | | | | | | 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>
* Plugins: replace remaining uses of QLatin1String with QLatin1StringViewSona Kurazyan2022-05-041-1/+1
| | | | | | | Task-number: QTBUG-98434 Change-Id: If64c294033c114ae46dfc327c40da7f3c7a598f5 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Windows QPA: Fix slowdown with large table/tree views with accessibilityAndré de la Rocha2022-03-311-12/+4
| | | | | | | | | | | | | | The accessibility code for notifying focus changes related to a table/tree view was iterating over all items to find the focused one, which for a very large number of items could cause a major slowdown and UI freeze. This patch avoids the issue by removing the loop and implementing the focusChild() method in the table/tree accessibility classes. Fixes: QTBUG-100997 Pick-to: 6.2 6.3 5.15 Change-Id: I04c847a5e65223b7a93ab82363feb32e1ebab9f3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Windows QPA: Avoid sending accessibility notifications before activationAndré de la Rocha2022-03-312-0/+9
| | | | | | | | | | | | | | When accessibility was activated after the application startup, it would send state update notifications for every accessible object, which for a large number of objects could result in a flood of UI Automation notifications and UI slowdown. This patch ignores these notifications until QAccessible is activated, which should avoid the slowdown and seems to cause no side effects with accessibility tools. Fixes: QTBUG-95114 Pick-to: 6.2 6.3 5.15 Change-Id: If1495d0aa846d7810b3d297b7e156563a7e5f6e6 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Windows QPA: Avoid slowdown with UI Automation name change notificationAndré de la Rocha2022-03-311-6/+10
| | | | | | | | | | | | | | | A previous fix for QTBUG-70621, which allowed changes in the state of a Quick combo box control to be detected by accessibility clients has reportedly caused significant slowdowns under some difficult to reproduce circumstances, probably associated with a large number of accessible objects. This patch restricts the name change notification to combo boxes, which seem to be the only kind of control requiring them for accessibility, instead of sending it for all control types. Fixes: QTBUG-97103 Pick-to: 6.2 6.3 5.15 Change-Id: I18c0067478df5a80f7365195d3559b3f04faa815 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* windows: Fix typos in source code commentsJonas Kvinge2021-10-121-2/+2
| | | | | Change-Id: I5d83574639d0b1f935843a75217aae70a5925fa0 Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* Windows QPA: Fix coordinates reported through UI AutomationAndré de la Rocha2021-07-271-10/+7
| | | | | | | | | | | | | | Conversion to/from native screen coordinates was incorrect and could fail for non-primary screens. This could cause a control's bounding rectangle to be incorrectly reported, or a search for a control based on its position within the window to fail, causing incorrect behavior with accessibility tools and other software interacting with the application using UI Automation. Fixes: QTBUG-91459 Pick-to: 6.2 6.1 5.15 Change-Id: I5d56584ff26d977cdd34d35af46644e32aa11e7c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Windows QPA: Fix accessibility focus event for table/tree/listAndre de la Rocha2021-03-251-0/+11
| | | | | | | | | | | | The focused element within a table, tree or list was not being informed in the UI Automation focus change events, causing the focused element to be missed by screen readers. Fixes: QTBUG-91029 Pick-to: 6.0 6.1 5.15 Change-Id: I738502e6871358508b4510763018837c304b618e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Return the result we have already when getting an object with no nameAndy Shaw2021-03-241-1/+1
| | | | | | | | | | This will ensure that something is set for the AutomationId based on the actual object and the parents that do have object names until it reaches one without an object name. Pick-to: 6.1 6.0 5.15 Change-Id: I205485bc0ba772e321879e00e64ea8e1d8f1ba91 Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* Windows QPA: Fix crashes when using screen reader with Q(Plain)TextEditFriedemann Kleint2021-01-121-2/+6
| | | | | | | | | Make sure the search start with valid values. Pick-to: 6.0 5.15 Task-number: QTBUG-89354 Change-Id: I5b5100db89c62f23748b5c88e9188cfe3811e6e8 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Remove the qmake project filesJoerg Bornemann2021-01-071-43/+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>
* Deprecate QVariant::TypeLars Knoll2020-10-231-1/+1
| | | | | | | | | It's been obsolete for a long time already. Make sure the compiler now warns about it and remove all remaining uses in qtbase. Change-Id: I0ff80311184dba52d2ba5f4e2fabe0d47fdc59d7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Use QList instead of QVector in pluginsJarek Kobus2020-07-061-2/+1
| | | | | | Task-number: QTBUG-84469 Change-Id: Ic86f4a3000592a1c9ae62e4a83f4fe39832a6b24 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Move windowsuiautomation API support into QtGuiFriedemann Kleint2020-05-274-6/+3
| | | | | | Task-number: QTBUG-83255 Change-Id: Ibface71931b6384494842ba9744d76f738c5ca85 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Sweep of int-ish → char-ish types near calls to QString::fromU*()Marc Mutz2020-05-121-1/+1
| | | | | | | | | | | | The fromUtf16(ushort*) and fromUcs4(uint*) overloads are going to be deprecated. Use the newer fromUtf16(char16_t*) and fromUcs4(char32_t*) overloads. As a drive-by, use std::end()/std::size() where applicable. Change-Id: I5a93e38cae4a2e33d49c90d06c5f14f7cb7ce90c Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Windows QPA: Fix missing accessible name change eventsAndre de la Rocha2020-05-103-0/+17
| | | | | | | | | | | | | | Accessible name change events were not being relayed through UI Automation. This caused changes in the state of combo boxes and possibly other quick controls to be missed by UI Automation clients. This would result, for instance, in Narrator not reading the state of a combo box when its current index was changed with the keyboard. Fixes: QTBUG-70621 Pick-to: 5.15 Change-Id: I16de0ff2bb0fb5227111d5347c25f442e9b0a533 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows QPA: Enable Toggle UIA pattern for all checkable controlsAndre de la Rocha2020-03-261-4/+2
| | | | | | | | | This change allows the checked/unchecked state to be detected by screen readers for all controls with a checkable state. Task-number: QTBUG-81919 Change-Id: I604151397b4ae21297009c274ffe634723ebe783 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Merge remote-tracking branch 'origin/5.14' into 5.15Mitch Curtis2020-03-201-0/+1
|\ | | | | | | Change-Id: Ib2a2e3a292af43be3a980c2ccc943c08f4bbf72f
| * Windows QPA: Do not play sound for QMessageBox::NoIconFriedemann Kleint2020-03-061-0/+1
| | | | | | | | | | | | | | | | | | | | Amends 2f366a63b20a943ae3099605c2cdb34009ca5602. Task-number: QTBUG-82682 Task-number: QTBUG-81342 Change-Id: I30f465bf432e27828db460f6dbbb59eee0cca8f2 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* | Windows QPA: Add support to UiaRaiseNotificationEvent()Andre de la Rocha2020-03-041-5/+21
| | | | | | | | | | | | | | | | | | | | | | This change adds support to UiaRaiseNotificationEvent() in the UI Automation-based accessibility code, and uses it to notify changes in string-typed values, allowing Narrator, NVDA and other screen readers to notice changes in the application state that were previously missed. Fixes: QTBUG-75003 Change-Id: I646ca3a851ab7b69817d900b002eb91a3bf607a6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Rename AA_MSWindowsDisableVirtualKeyboard to AA_DisableNativeVirtualKeyboardAndre de la Rocha2020-02-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | Renaming the attribute to make it platform-independent, since in spite of currently being supported only on Windows, it may be eventually supported on other platforms where it may be useful. Task-number: QTBUG-76088 Change-Id: Id98ccd7a34e1c43b1f2274efce6ab4b4aff24f03 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Liang Qi2020-02-184-0/+200
|\| | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qlinkedlist.h src/plugins/platforms/wasm/qwasmintegration.cpp src/plugins/platforms/wasm/qwasmscreen.cpp Change-Id: Iefca7f9f4966bdc20e7052aca736874861055738
| * Windows QPA: Implement IExpandCollapseProvider for submenusAndre de la Rocha2020-02-124-0/+200
| | | | | | | | | | | | | | | | | | | | | | Menu items with submenus should implement the Expand/Collapse UI Automation pattern in order to allow screen readers to say whether they are expandable items. Fixes: QTBUG-80550 Change-Id: I4f72d30172f76f028be5cbdeb1fd85fca6b07acf Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Windows QPA: Add support to IsDialog UIA propertyAndre de la Rocha2020-02-132-1/+5
| | | | | | | | | | | | | | | | | | | | Adding support to the IsDialog property within the UI Automation code. This property allows dialog windows to be identified as such, which may be used by screen readers to better describe them. Fixes: QTBUG-82019 Change-Id: I6f5478dd30f63f152cba75886a9e0eb38772037a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2020-01-151-0/+53
|\| | | | | | | Change-Id: I8dbcf23835d52d3aa7d018ed250814d60c68aa83
| * Windows QPA: Fix message box and other system soundsFriedemann Kleint2020-01-141-0/+53
| | | | | | | | | | | | | | | | | | | | | | Re-add the code hooking into QWindowsUiaAccessibility::notifyAccessibilityUpdate() which was removed by 0cf6297c15be45d852be98c862bd0211e6de1aa2. Fixes: QTBUG-81342 Change-Id: Ie97d7cca5b774196d53b675c92d84f4ce208f987 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Windows QPA: Allow the native Windows virtual keyboard to be disabledAndre de la Rocha2019-12-171-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | This change provides a way to disable the automatic showing of the native Windows on-screen virtual keyboard when a text editing widget is selected on a system without a physical keyboard, by enabling the new AA_MSWindowsDisableVirtualKeyboard application attribute, allowing applications to use a custom virtual keyboard implementation. Fixes: QTBUG-76088 Change-Id: Id76f9673a2e4081e5325662f3e3b4b102d133b9a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | Windows QPA: Use UTF-16 literals where possibleFriedemann Kleint2019-12-161-1/+1
| | | | | | | | | | | | | | This should minimize diffs to Qt 6. Change-Id: Id74c0b4085085984bd51251765420718d16e9fc7 Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Liang Qi2019-12-101-1/+2
|\| | | | | | | | | | | | | Conflicts: tests/auto/network/kernel/qnetworkinterface/BLACKLIST Change-Id: I1e8866c63b54bcd95fc2a044276ee15b7f60e79a