summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
* Include showMenuAction() if context menu policy is Qt::ActionsContextMenuTor Arne Vestbø32 hours1-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | We only report the action if we have any actions to present. For the other context menu policies we don't know if the user has overridden contextMenuEvent or connected to customContextMenuRequested, so we opt to not report the menu action in these cases. A user that wants to present the menu action will have to subclass QAccessibleWidget, override actionNames(), and install an accessible interface factory that returns the specialized QAccessibleWidget. As of now we do not report QAccessible::ActionChanged anywhere in Qt when the conditions for actionNames() change, and this includes this newly added behavior. Initial attempts at plumbing ActionChanged to the macOS a11y system failed as there is seemingly no way to trigger an update of this specific state, so this rabbit-hole has been left for further investigations. Pick-to: 6.9 6.8 Task-number: QTBUG-137126 Change-Id: I538df87603fbcae9ed2d9bcbb16f1de85a08f200 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit bb0c8bbf20fc1cdddd7e171260c4435f360e23d5) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QDockWidget a11y: Only report as toplevel window if floatingMichael Weghorn35 hours2-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | The QAccessible::Window role is for toplevel windows only, and using it for non-toplevels e.g. breaks window-relative coordinates in AT-SPI for non-floating dock widgets and their content. A QDockWidget is only a top-level if it is floating, so only report the QAccessible::Window role in that case, otherwise use QAccessible::Pane ("A generic container.") because it's a container containing the QDockWidget::widget(). Adjust tst_QAccessibility::dockWidgetTest accordingly. Notifying about the role change when (un)docking a dock widget depends on introducing a new QAccessible::Event and will be implemented separately in an upcoming commit. Fixes: QTBUG-138206 Pick-to: 6.9 6.8 Change-Id: I9eb1bdc2a60260f169910671ebc82d9735e5ba13 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 62f101c7deef2b49a27d8b6c2df2ba0a1f2ed45f) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QStyleSheetStyle: Don't calc size for CT_SpinBox when not handledChristian Ehrlicher8 days1-1/+5
| | | | | | | | | | | | | | | | | The default stylesheet for CT_SpinBox defines a native border which was added to the sizeHint even though it was already added by the base style. Amends 96adebed606cdbc73c73778917d777dc04c6e93e. Pick-to: 6.9 6.8 Fixes: QTBUG-133845 Task-number: QTBUG-130642 Task-number: QTBUG-132431 Change-Id: I2332c4f027a8f4cceb477ae239c348509e6e7356 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 877d352e490fc80b87dc76b53f4877fbd91c1b08) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Add missing checks on distance calculations for QToolBar dockingXavier BESSON8 days1-4/+4
| | | | | | | | | Fixes: QTBUG-138183 Pick-to: 6.9 6.8 Change-Id: I91f1317fe65a02f4a8e64df8c5e9433a670a8509 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 6b9d86fce658812c54c49ff8dc6dfe8e80265c42) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Doc: Fix incorrect property reference in QScrollBar documentationDheerendra Purohit9 days1-2/+2
| | | | | | | | | | | | | | Replaced the unlinked tracking() text in the QScrollBar documentation with a proper link to the tracking property of QAbstractSlider to ensure correct cross-referencing and clarity. Pick-to: 6.9 Fixes: QTBUG-85428 Change-Id: Ib8b7b03bd4872642d857d50b575b345b5c892d66 Reviewed-by: Leena Miettinen <[email protected]> Reviewed-by: Alexei Cazacov <[email protected]> (cherry picked from commit d6abddcfc11999c68bff25237d5e55324c993092) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Fix regression in QDockAreaLayout::separatorMove()Igor Khanin10 days1-1/+2
| | | | | | | | | | | | | | | the boolean isHorizontal was added in ca41ace3578e6e49e5e85dc951a336e8d1832b1a. It was implemented wrongly. Correct it, to restore the ability to resize the right dock area as expected. Fixes: QTBUG-137120 Pick-to: 6.9 6.8 Change-Id: I3750923d2a7c4ae2b304d69417e46a92c6ffa911 Reviewed-by: Axel Spoerl <[email protected]> (cherry picked from commit 1dbac99cebdb38cd82e72ba7282a18793cac2195) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QTest: provide overloads for the qWaitFor* functionsMitch Curtis11 days2-7/+69
| | | | | | | | | | | | | | | | | | | | We shouldn't use ints or qint64 for timeouts anymore due to their poor type safety and lack of expressiveness. Qt has adopted chrono-first: https://lists.qt-project.org/pipermail/development/2023-January/043563.html As a drive-by, remove redundant Q_GUI_EXPORT macros in qtestsupport_gui.cpp and qtestsupport_widgets.cpp. Amends 55f163382d36ddf908fc2884f2020a1b92340c10. [ChangeLog][QtTest] Added QDeadlineTimer overloads for the qWaitFor* functions. Change-Id: Ife74a1e83d430072a104e0ac665a8cde9fd689f1 Reviewed-by: Marc Mutz <[email protected]> (cherry picked from commit ff045b60d93e119c0abe8c354c3d3868c7603095) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Fix corner case not switching to normal QHeaderivew memory modelThorbjørn Martsum / Mjølner Informatics12 days1-3/+1
| | | | | | | | | | | | | The useGlobalMode and globalResizeMode testing was not correct. We just want to look at the input resize parameter and switch to normal memory mode if that can cause a section resize. Fixes: QTBUG-138130 Pick-to: 6.9 Change-Id: If0829e54ec82b68a138a64a770df95ea85ac2e2b Reviewed-by: Christian Ehrlicher <[email protected]> (cherry picked from commit 7d19da385a030363343bd9effb38ee877523971d) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Fusion: Outline only check-boxesNodir Temirkhodjaev2025-07-042-5/+2
| | | | | | | | | | | | Amends 5618710d63db673443ba3872463f4663c09fe204 Fixes: QTBUG-138196 Pick-to: 6.9 6.8 Change-Id: If413f1cf1924a5cff09e3c0dce67209fd1090f73 Reviewed-by: Piotr Wierciński <[email protected]> Reviewed-by: Christian Ehrlicher <[email protected]> (cherry picked from commit 67d079a445602e5ac79d8d2e245139499c304835) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QMainWindowLayout::animationFinished(): don't show deleted tab barsAxel Spoerl2025-07-031-2/+4
| | | | | | | | | | | | | | | | | | | | | | | QMainWindowLayout::animationFinished(): looped over a copy of the usedTabBars member and showed all tab bars in the container. Showing a tab bar, can cause another in the container to become unused. Unused tab bars were kept in a separate container and re-used, before a3f0ce4c0d0627ef979052b34b21e6fd2bdc3acf changed this logic and deleted unused tab bars. This caused a regression: show() was called on a deleted tab bar, causing a crash. Only show tab bars from the copied container, if usedTabBars still contains them. Fixes: QTBUG-138201 Pick-to: 6.9 Change-Id: I33de57ab3276d1f786d27f63aebfe8ba8ddc2832 Reviewed-by: Samuel Gaist <[email protected]> Reviewed-by: Marc Mutz <[email protected]> (cherry picked from commit 2c8692adaed1c3374ca01842e166af79ed3861cc) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QToolButton a11y: Take menu from default action into accountMichael Weghorn2025-07-022-7/+22
| | | | | | | | | | | | | | | | | | | | | | | If a menu is set, QAccessibleToolButton takes it into account for its role, for the QAccessible::State::hasPopup state and for reporting it as an accessible child. So far, this was only working when the menu was directly set using QToolButton::setMenu, but not when the menu came from the default action set via QToolButton::setDefaultAction. From a user perspective, that doesn't make a difference, so also treat these equally on the a11y layer, by taking into account the default action's menu as well. Fixes: QTBUG-138172 Pick-to: 6.9 Change-Id: Ida6915e983f026db7d9840542e4b5f5c14ae13e1 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 12cd5ef9e8a91aa281fbdd12ef4dbd85033e2659) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QToolButton a11y: Use existing method to get QToolButtonMichael Weghorn2025-07-021-2/+1
| | | | | | | | | | | Use existing QAccessibleToolButton::toolButton instead of QAccessibleButton::button and casting manually. Pick-to: 6.9 Change-Id: Ib63553075f5a0a64d436276703e8717a20cc310f Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 509ccccbc9e3142212ba02af28eef4667e576b98) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QScrollBar: Set parent for context menu to match other widgetsDheerendra Purohit2025-07-021-1/+1
| | | | | | | | | | | | | | | | The QMenu created by QScrollBar::createStandardContextMenu(QPoint) had no parent, unlike similar widgets like QLineEdit or QTextEdit, which set themselves as the parent. This change sets 'this' as the parent of the QMenu to ensure consistent behavior, proper object ownership, and proper transient window handling. Amends: 75ecb176df837331fdac0c386812f5c36e7a6359 Fixes: QTBUG-138049 Change-Id: Ie29fe2100ab91f66eec9f02cd5d768005f78afbc Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 8649e06a14ef141995a1c63926a6cccd64caa8f6) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QMainWindowLayout: fix missing std::move() in QDebug stream operatorMarc Mutz2025-07-021-1/+1
| | | | | | | | | | | | | | | | | | | | | Coverity complains about a missing std::move(), because the QDockAreaLayout streaming operator (like all non-QDebug-member ones) takes the QDebug stream by value. Add the missing move(). The const char* stream operator is a QDebug member, so takes the stream by reference, so no std::move() needed. It's a bit sad that it has come to this, but c'est la vie... Amends 1cd7e01c909499b4c4c6d7dd250cc67bbb962141. Coverity-Id: 481489 Change-Id: Ifed3a92e3db9eb21edf14bf79ba0c860311f006a Reviewed-by: Axel Spoerl <[email protected]> (cherry picked from commit 04b235d0120105b901a185e6dbc74c2c5941ce18) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* qWaitForWidgetWindow: fix excessive genericityMarc Mutz2025-06-281-13/+12
| | | | | | | | | | | | | | | | | | | | | | | | The first argument was the same in all callers; instead of passing token-by-token-identical lambdas (which have all distinct types), we can pass the lambda's captured variables instead and inline the lambdas into the function. The third argument was always either int or QDeadlineTimer, so standardize on QDeadlineTimer. A follow-up change will change all arguments to QDeadlineTimer in the public API, too, so this is the future-proof and chrono-first-compatible version. Note 73c52ba2687c2035a40141f2a5236399f8331f4b for the QDeadlineTimer construction. Amends 7e4c2ac711c0b68133f06ab997a33f8bf7c4f734 and 3f2a9523a442e44ef52ebca30da9b5d3188df6bc. Pick-to: 6.9 6.8 Change-Id: I75f84abbf60cd77ce48c7ab0ee797e5e8a0879de Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 943df16c72065cb7f0d13b9f0bceab06abfe3f71) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Q*Application: deprecate compressEvents()Marc Mutz2025-06-281-0/+1
| | | | | | | | | | | | | | | | | | | Give users that may have overridden this function a heads-up that it will be removed in Qt 7. Go for immediate deprecation, since there's no replacement, anyway. In the unlikely case that there's a user of this undocumented feature, they can use QT_IGNORE_DEPRECATIONS to selectively silence the warning, the same way we do. Amends 438b2f2d604133349777c670590b27a82832e290. Found in API-review. Change-Id: I064e80250ab7a405cc8abef144b6c7bc7bbf29fd Reviewed-by: Ivan Solovev <[email protected]> (cherry picked from commit 06eb3bcf083857e32aaef96fad3e7f274d4dfe9f) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Doc: QToolBox comes before QToolButton in style sheet documentationDheerendra Purohit2025-06-271-13/+13
| | | | | | | | | | | Corrected order of QToolBox and QToolButton to follow alphabetical listing and improve readability. Fixes: QTBUG-113759 Pick-to: 6.9 Change-Id: I0ae53c3fccf6f2fd9e44fcdee7bbb73c58fa75c7 Reviewed-by: Axel Spoerl <[email protected]> (cherry picked from commit 73d6e8e405d7066f2488c011bbcfbca4aa910888)
* Reland: CMake: Annotate some qt_find_package calls with MODULEAlexandru Croitor2025-06-251-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A qt_find_package call first tries to find a Config package with the CONFIG mode option, and if not found, falls back to an arg-less mode which searches both Config and Find modules. For some packages, we know we want to find the Find module because there can't be a Config package, e.g our FindWrap modules or any of the other Find modules we carry in our cmake directory. So we should annotate these calls with MODULE. Aside from slightly faster configuration, there is another reason to do so. Future versions of CMake will automatically log find_package calls that have a state change (e.g. Not Found -> Found) into CMakeConfigureLog.yaml. Due to the Config-first logic in qt_find_package, we always unset the Foo_DIR variable if the Config package is not found. This means that there will be a constant build up of not-found messages in the log. Explicitly annotating the calls with MODULE will prevent this. Do that. This commit relands f1a59e974f013fcf8629d8cbacab58d895523100 This reverts commit 0ce82b78a35026cb56ff76d1c24b311008934a53. Change-Id: I5d37579d2f4957215ce1475b5c0ec8509d77c83d Reviewed-by: Joerg Bornemann <[email protected]> (cherry picked from commit 5e405060431cae3cec450a4a73adcb650d3f86af) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Doc: Clarify QGraphicsItem::stackBefore() documentationDheerendra Purohit2025-06-251-4/+8
| | | | | | | | | | | | | Add explanation to disambiguate the term before in the context of visual stacking. Clarify that the item will appear behind the sibling when overlapping. Pick-to: 6.9 Fixes: QTBUG-126523 Change-Id: I8040b045bf67c404ef737a88b8328bc302f29227 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 127a0926dff31d9b98397511deb7320a3b6bcc00) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Avoid using QPainter::brushOrigin() to save and restore the originChristian Ehrlicher2025-06-234-10/+11
| | | | | | | | | | | | Avoid QPainter::brushOrigin() since it returns a QPoint instead QPointF so it might loose precision. Use QPainterStateGuard instead to make sure the correct QPainter state is restored later on. Task-number: QTBUG-137885 Change-Id: I3f49c72c0425e22ffb1246b42d926e704dc9d8dd Reviewed-by: Eirik Aavitsland <[email protected]> (cherry picked from commit e97a1fdad3d2d294ad9bf2e2bcc5f818d9050910) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QLayout: fix documentation of setSizeConstraintsVolker Hilsheimer2025-06-231-5/+5
| | | | | | | | | | | | | | | \brief is for properties and setSizeConstraints is not the setter of the sizeConstraint property, it's just a convenience wrapper. Also, clean up the documentation style, we don't prefix each line of documentation with '*'. Amends 5b33c4e84ce23f1d7720306f4f01e771ac8be2e3. Change-Id: I3eda0f195d14bff68b6dd08ae9dfeb82f75c56e2 Reviewed-by: Thorbjørn Lund Martsum <[email protected]> (cherry picked from commit 0745bbb61727b6abb4367ae4a9de23fdd3dfff6e) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QCalendarWidget: Don't alter QCalToolButton palette on the flyKai Uwe Broulik2025-06-231-10/+5
| | | | | | | | | | | Instead, adjust the palette in QStyleOptionToolButton and paint the widget manually. Pick-to: 6.9 6.8 Change-Id: Ib4bba0c557c6f87c9b09ddc374cfe898afbc4598 Reviewed-by: Christian Ehrlicher <[email protected]> (cherry picked from commit 22cec87ff4e76762bc9e6b19b08c8b3ba121f509) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* ItemView widgets: make supportedDragActions a propertyVolker Hilsheimer2025-06-206-34/+19
| | | | | | | | | | | | | This makes the property accessible to the Widget designer. Document it as a property. Amends 7d0017cda8fde28a1130feaeecf41010b40e3cb3 Task-number: QTBUG-137478 Change-Id: I55e95e541c5c1ae162eb7c2ae78c969f9d23ea2a Reviewed-by: Christian Ehrlicher <[email protected]> (cherry picked from commit 760579204e314cc4e0fdc7b8b8bd8d8706095a38) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QAbstractItemView: fix autoscroll immediately stoppingMiika Pernu2025-06-202-6/+12
| | | | | | | | | | | | | | | | | | | | | Adjust the draggedPosition calculation to changes in QAbstractItemViewPrivate::offset(). The draggedPosition was previously first calculated by adding mouse pos and offset() value, and mouse pos was later extracted by subtracting the offset() from draggedPosition. However, the offset() value no longer remains a constant between the addition and subtraction, which makes it impossible to get the old mouse position. Store the offset and mouse position separately to make the calculations deterministic across events. Fixes: QTBUG-130978 Pick-to: 6.9 6.8 6.5 Change-Id: I5c601ff7ca40c9d8fb7ad949ff15520d199f5c1f Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 882a4df4fdd2a5952a605ca783142f46d9a92d5b) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* a11y: Move qt_accStripAmp helper to private QtGui headerMichael Weghorn2025-06-205-46/+10
| | | | | | | | | | | | | | | | | | | The qt_accStripAmp helper function takes a string that may contain an accelerator/mnemonic and escaped ampersand characters and returns a "plain text" version of this that is suitable for an accessible name of the widget/control containing that text. Move the helper function to a new private header (and source file) in QtGui in order to be able to reuse this in Qt Quick in an upcoming qtdeclarative commit. Task-number: QTBUG-134208 Pick-to: 6.9 6.8 6.5 Change-Id: I4dfac2d179baf36101066962b6a5f542b3a6fc03 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit fb93950e7ebf7d4bb336e7c9f7a60a6bafdb60ed) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Revert "CMake: Annotate some qt_find_package calls with MODULE"Alexandru Croitor2025-06-191-2/+1
| | | | | | | | | | | | | | | | | | | | This breaks reconfiguring Qt in various ways, one of which is CMake Error at cmake/QtTargetHelpers.cmake:1557 (message): PkgConfig::ATSPI2 is not a valid target. This happens because pkg_check_modules sets ATSPI2_FOUND to 1, so qt_find_package thinks it shouldn't find the FindATSPI2.cmake module, which ends up not creating the ATSPI2 target. This reverts commit f1a59e974f013fcf8629d8cbacab58d895523100. Fixes: QTBUG-137870 Change-Id: Ica74a236c6b1bb9d7ca9af29175cb2e84a93251b Reviewed-by: Fabian Kosmale <[email protected]> Reviewed-by: Joerg Bornemann <[email protected]> (cherry picked from commit 0ce82b78a35026cb56ff76d1c24b311008934a53) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Doc: Fix typo in QGraphicsSimpleTextItem class descriptionDheerendra Purohit2025-06-191-1/+1
| | | | | | | | | | | | | Removed the incorrect word "path" from the description, which mistakenly referred to the item as a "text path item". QGraphicsSimpleTextItem provides a simple text item, not a path item. Fixes: QTBUG-87180 Pick-to: 6.9 6.8 Change-Id: I977d01c667c65f5d35dc3bc60d5362e681e9b5f1 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit df69d25f5a94ac7a6b42f0e91dcb3a49ec7841fb) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QMainWindowLayout: Don't keep unused separator widgets aroundAxel Spoerl2025-06-192-18/+8
| | | | | | | | | | | | | | Instead of deleting QMainWindowLayout has kept unused separator widgets around for later usage. Remove this logic. Delete unused separator widgets, create new ones when needed. Pick-to: 6.9 Change-Id: Iec02154d9344ff89386c1e0a5d65b9fbab4e4896 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit d5d0fbd6d811392f2cf0b6375cdec3a40aa736a6) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QDataStream: use new operator bool() in the codeTatiana Borisova2025-06-181-10/+5
| | | | | | | | | | | | - After adding the QDataStream::operator bool(), it is not required to check the QDataStream::status(). It is enough to use the reference of stream in the statement, which returns true if stream status is OK. New operator usage makes code more convenient. Change-Id: Ie92658b613484a1e444ab442f8f821458c511079 Reviewed-by: Marc Mutz <[email protected]> (cherry picked from commit 7f51608013ba4352d6c5acf77172a7929d7cfdb6) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Remove handling of unused tab bars in QMainWindowLayoutAxel Spoerl2025-06-172-39/+10
| | | | | | | | | | | | Instead of keeping unused tab bars in a container, delete them right away. Fixes: QTBUG-137755 Pick-to: 6.9 Change-Id: Ie604cdb40145989df6c07714d742d83afd7c9d6f Reviewed-by: Samuel Gaist <[email protected]> (cherry picked from commit 1b7dea55ea27737b6ad9613fd6eaceb5bda85c82) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Centralise usage of unused tab bars in QMainWindowLayoutAxel Spoerl2025-06-172-5/+21
| | | | | | | | | | | | | | | Unused tab bars can cause crashes in the QMainWindow d'tor. Centralise handling of unused tab bars to avoid access to the container at multiple places. This patch doesn't change functionality. Task-number: QTBUG-137755 Pick-to: 6.9 Change-Id: I70445c1efbbbff3ed637e1c3a531aa90b6584c9e Reviewed-by: Samuel Gaist <[email protected]> (cherry picked from commit a3f0ce4c0d0627ef979052b34b21e6fd2bdc3acf) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QMainWindowTabBar::dockAt() - avoid nullptr accessAxel Spoerl2025-06-171-1/+1
| | | | | | | | | | | | | | If the main window layout was already deleted, the method crashed with a nullptr access to the return value of qt_mainwindow_layout(). Handle a nullptr return value properly. Task-number: QTBUG-147755 Pick-to: 6.9 Change-Id: I991e831f58e97267a518a98f032f8aa7ea0384bd Reviewed-by: Samuel Gaist <[email protected]> (cherry picked from commit cc1ddebf63a2b6c051529d1d3127534aa4c1d55a) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QMainWindowLayout: Add debug operator<< for QMainWindowTabBarAxel Spoerl2025-06-171-0/+16
| | | | | | | | | | | | | | It is essential to know for debugging purposes, what is the parent of a QMainWindowTabBar and which dock widgets are associated to it. Add a debug operator<<. Task-number: QTBUG-137755 Pick-to: 6.9 Change-Id: Ibc04f0a41fe54e0d5d1d1a9b4dcb1cc9ba5d3891 Reviewed-by: Samuel Gaist <[email protected]> (cherry picked from commit 0fa87580963a5b6352cd2e4d75261cd80f35d371) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QMainWindowTabBar: Use QPointer for mainWindow memberAxel Spoerl2025-06-171-1/+1
| | | | | | | | | | | | | | | | The member mainWindow is a raw pointer to the QMainWindow. A QMainWindowTabBar isn't necessarily parented to the QMainWindow, when it's unused. If the QMainWindow has already been destroyed, the member may contain a stale pointer. Use a QPoitner instead, to avoid use after free. Task-number: QTBUG-137755 Pick-to: 6.9 Change-Id: I488bfcfd222e5015aec15d8748565e1de1f9adf1 Reviewed-by: Samuel Gaist <[email protected]> (cherry picked from commit 86b46a011c679bb361b51381ff0e281f03284be1) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* CMake: Annotate some qt_find_package calls with MODULEAlexandru Croitor2025-06-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | A qt_find_package call first tries to find a Config package with the CONFIG mode option, and if not found, falls back to an arg-less mode which searches both Config and Find modules. For some packages, we know we want to find the Find module because there can't be a Config package, e.g our FindWrap modules or any of the other Find modules we carry in our cmake directory. So we should annotate these calls with MODULE. Aside from slightly faster configuration, there is another reason to do so. Future versions of CMake will automatically log find_package calls that have a state change (e.g. Not Found -> Found) into CMakeConfigureLog.yaml. Due to the Config-first logic in qt_find_package, we always unset the Foo_DIR variable if the Config package is not found. This means that there will be a constant build up of not-found messages in the log. Explicitly annotating the calls with MODULE will prevent this. Do that. Change-Id: I465b015ac18f8a09b9a5c86cec7b6312a0bfbdf1 Reviewed-by: Alexey Edelev <[email protected]> Reviewed-by: Joerg Bornemann <[email protected]> (cherry picked from commit f1a59e974f013fcf8629d8cbacab58d895523100)
* QLineEdit a11y: Report displayText on a11y layerMichael Weghorn2025-06-171-21/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of reporting no/empty text on the a11y layer when using a QLineEdit::EchoMode that doesn't display the actual text as is (e.g. in case of a password field), use QLineEdit::displayText, which already prevents exposing the actual text unless it's also displayed on screen. Previously, the character count and caret/cursor position was still reported for the actual text, but an empty string was reported for the text itself, which was inconsistent. (A cursor position of 3 within an allegedly empty text doesn't make sense, and empty text cannot have a character count of 5.) With this commit in place, entering "hello" in the QLineEdit from the sample app from QTBUG-109599 now results in replacement/mask characters as shown on screen being reported for the text on the a11y layer as well as long as QLineEdit::Password is used. Demo using Accerciser's IPython console on Linux, with the QLineEdit's accessible object selected in Accerciser's treeview of the sample app's a11y hierarchy. Without this commit in place: In [11]: text = acc.queryText() In [12]: text.characterCount Out[12]: 5 In [13]: text.getText(0, -1) Out[13]: '' With this commit in place: In [16]: text = acc.queryText() In [17]: text.characterCount Out[17]: 5 In [18]: text.getText(0, -1) Out[18]: '●●●●●' The Orca screen reader now announces "circle" as expected when moving the cursor between the individual characters. This also fixes the assert/crash seen with Narrator as mentioned in QTBUG-109599, due to the above-mentioned mismatch between reported character count and actual text length. (QWindowsUiaTextRangeProvider::ExpandToEnclosingUnit relies on the reported character count, then accesses the character by index, but the actual string was empty.) The QAccessibleLineEdit::text(QAccessible::Value) case previously had manual handling to report mask characters. Use the displayText there, too. Adjust tst_QAccessibility::lineEditTest accordingly and extend it to test the QAccessibleTextInterface in addition. Since mask characters for passwords in QLineEdit::displayText are platform-dependent, don't compare the text reported via a11y interfaces to a hard-coded string, but instead check it matches the displayText, but differs from the (plain) text. Fixes: QTBUG-109599 Pick-to: 6.9 Change-Id: Ifebb4502b71e11d431b708eea613cb2a10e3f237 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 9756f62a63f58098513343714b4c0367c0a62dde) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QMenu: Fix transient parent for nomadic menusVlad Zahorodnii2025-06-171-8/+8
| | | | | | | | | | | | | | | | | | | | | | There are applications that reuse menus for different user interface elements. For example, a menu can be shown in the menubar or in a right click context menu. On the other hand, the QMenu currently locks on the first transient parent and doesn't change it even after effectively getting attached to another parent. This change addresses the issue by making the QMenu re-evaluate the transient parent on every show event and also ensuring that the caused widget takes the precedence over other heuristics. The caused widget is more closely related to the user input. Pick-to: 6.9 Fixes: QTBUG-137467 Change-Id: I4f968833380121be1300af1a44237735b9a97b17 Reviewed-by: Tor Arne Vestbø <[email protected]> (cherry picked from commit b29531aa954f8f099a5f8340d1b5b102cf36bfd7) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QStyleSheetStyle: replace c arrays with std::arrayChristian Ehrlicher2025-06-151-90/+39
| | | | | | | | | | Replace some c-arrays with std::array<> for easier handling. Pick-to: 6.9 Change-Id: I34766a2aad603d83187515626982adc976667d48 Reviewed-by: Axel Spoerl <[email protected]> (cherry picked from commit cfd52c5c5fc1f157186328962acd0391bb2c891b) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QStyleSheetStyle: use range-based for loopsChristian Ehrlicher2025-06-141-12/+11
| | | | | | | | | | Replace some for loops with range-based ones. Pick-to: 6.9 Change-Id: Ib11fb4ec5785b8ec4c9c297684f90d7f5031fe58 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit a0c591c1203bd749b550814bd57597c1b297b26e) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QAccessibleWidget: replace QString default arg with overloadMarc Mutz2025-06-132-5/+15
| | | | | | | | | | | | | | | | | | | | | | | We should not use defaulted arguments of non-trivial type, because their construction and destruction, even if not passed, is repeated at every call site, producing O(n) executable code. By overloading out-of-line, we execute the same code at runtime, but we have only one copy of the arg construction and destruction, in the library, O(1) executable code production. Found in API-review of QAccessibleWidgetV2. Amends the start of the public history. Can't pick further than (unreleased) 6.10, because this adds a new symbol. Task-number: QTBUG-98117 Change-Id: I705bca764992d9e7a2aa1021e0f94006b6817177 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit ab53b1293122518a512335b94491566305280851) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QGroupBox: document non-standard behavior for enable/disable logicVolker Hilsheimer2025-06-131-0/+5
| | | | | | | | | | | | | | | | | | | When QGroupBox::checked changes, it disables children, and enables children that are not explicitly disabled. The group box itself however remains enabled, so it's possible for user code to override the behavior for individual child widgets, which can happen accidentally when the order in which children are added, and the checked state of the group box is changed, is inconsistent. We won't change this as it has too many side effects. Instead, document the conceptually deviation from enable/disable state propagation. Pick-to: 6.9 6.8 6.5 Fixes: QTBUG-25938 Change-Id: I2aa37600ec932cd4ce721bfa98f63169eb0d0beb Reviewed-by: Axel Spoerl <[email protected]> (cherry picked from commit 9f93ddd2f3ce77a6d4ccd2de93bff95244d381d8) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QAccessibleWidgetV2: make the dtor protectedMarc Mutz2025-06-131-0/+3
| | | | | | | | | | | | | | | | QAccessibleWidget (i.e. V1) has a protected dtor, so V2, which merely extends V1 because we can't add new virtuals (via a new base class) due to BC constraints, shouldn't differ in this respect. Amends bb2121551c3d7b1af1553710bc211ba0e39b4212. Found in API-review. Change-Id: I0c9a00691a14c600b020ff1a9f433634bb7c8d24 Reviewed-by: Michael Weghorn <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 5efcbf9fb83f24963f6bf40a8dc76571ab02e984) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QAccessibleWidgetV2: de-inline ctors and avoid QString default argMarc Mutz2025-06-132-4/+13
| | | | | | | | | | | | | | | | | | | | | | | We should not use defaulted arguments of non-trivial type, because their construction and destruction, even if not passed, is repeated at every call site, producing O(n) executable code. By overloading out-of-line, we execute the same code at runtime, but a) we have only one copy of the arg construction and destruction, in the library, O(1) executable code production, and b) being out-of-line in the library, the compiler can optimize the call to the base class ctor away, if it wants to, because it sees its implementation. Found in API-review. Amends bb2121551c3d7b1af1553710bc211ba0e39b4212. Task-number: QTBUG-98117 Change-Id: Ib6a3b15cc861893797c0445a91691132b21bbf2c Reviewed-by: Ivan Solovev <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 79ab9305c1a46e2205ee9be7af7edb78c4483901) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* doc: Fix typo in QCalendarWidget::dateTextFormatKai Uwe Broulik2025-06-131-1/+1
| | | | | | | | | | renderd -> rendered Pick-to: 6.9 6.8 6.5 Change-Id: If4df3cd0dd7a11e30283bf5925dc6364d0d79225 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 3d405bfe6708ae5c6feed8eddcbb4bef2a732b48) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Fix standardbutton-apply-16.pngJonas Karlsson2025-06-131-0/+0
| | | | | | | | | | | There were some artifacts added (white pixels and bad anti aliasing) when the icon was changed in e771e5e2d7ae77f46d01f087242e0f777fdc02ac Pick-to: 6.9 6.8 6.5 Change-Id: I12a8658090a1f081321e53433d17fc19ad3e5f12 Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit c15e9740b3abf6f4a76c6b958d883808f03c29e0) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Fix -no-feature-draganddrop buildsVolker Hilsheimer2025-06-132-0/+4
| | | | | | | | | | | | | | Amends 7d0017cda8fde28a1130feaeecf41010b40e3cb3 which added the APIs, and ef7e5ea616a3f04ff0ba5f6fe34487a332152b01 which only added the guard for QListWidget. Address header review comment. Task-number: QTBUG-137478 Change-Id: I405190190f4d64dd810d7d35e9ef616ab0147b19 Reviewed-by: David Faure <[email protected]> (cherry picked from commit 45202b26ce9d3b4fa68fe49f392941270a0ca41c) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Widgets: Set viewItemPosition style option for QTableView and QListViewOlivier De Cannière2025-06-123-0/+23
| | | | | | | | | | | | | | | | | | Before this patch, we did not set the view item positions in the views. This was fine as they were ignored until b780eaf6a063a7efe03417cf6b7008a188e222a4 added a condition to early exit on invalid positions. This then broke all qss background styling using QStyleOptionViewItem::ViewItemPosition as they were always invalid. Set the position when trying to draw a cell of the view before reaching the code handling the qss rules for backgrounds. Fixes: QTBUG-137346 Pick-to: 6.9 6.8 Change-Id: I83d7a3ea7b9bab98889791bb807988a74e355b93 Reviewed-by: Santhosh Kumar <[email protected]> (cherry picked from commit 5aa1bc46217dc6f53fde8fe17608cf0e5f7a5e78) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* make all convenience functions in QFileDialog open modal dialogsNic Zonta2025-06-091-2/+2
| | | | | | | | | | | | most convenience functions in qfiledialog.cpp (e.g. getSaveFileUrl, getOpenFileUrl) open modal dialogs, with the exception of getOpenFileContent and saveFileContent. This makes every function consistently open modal dialogs Fixes: QTBUG-137329 Pick-to: 6.9 Change-Id: I48952144ed15596b9acba3230c63cece613fb045 Reviewed-by: David Faure <[email protected]> Reviewed-by: Axel Spoerl <[email protected]> (cherry picked from commit 25fdc044f58d426c3056409e2883becdc3cf0bd1) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* Doc: Fix broken links in Qt WidgetsKai Köhne2025-06-091-1/+1
| | | | | | | | | | | The iQRhiWidget API got changed in commits acebb97b5880, acebb97b58807d1d591. Pick-to: 6.9 6.8 Change-Id: I7791b1a61d94f33ba01cfe22e63ecfdc7b81022b Reviewed-by: Laszlo Agocs <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]> (cherry picked from commit 95229bb7d039bb9e16a2ffd126d7ff1e25b37d32) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
* QCommandLinkButton: Don't reset icon on change to QStyleSheetStyleAxel Spoerl2025-06-071-3/+13
| | | | | | | | | | | | | | | | | | | d4c518b210ad56cb51c17e6e1b4a81b0deb7253c has implemented a reset of the icon on a style change. This has caused a regression, because it overrode an icon set by a style sheet. Do not reset the icon if the new style is a QStyleSheetStyle. Amdends d4c518b210ad56cb51c17e6e1b4a81b0deb7253c. Fixes: QTBUG-137011 Pick-to: 6.9 6.8 Change-Id: Ib77faa03c867b2660a45bdc3ab94e7d739eed4f8 Reviewed-by: Christian Ehrlicher <[email protected]> (cherry picked from commit 839d569dc27cfa5188db477893899d849ac26ea5) Reviewed-by: Qt Cherry-pick Bot <[email protected]>