summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel
Commit message (Collapse)AuthorAgeFilesLines
* QToolTip: misc cleanupChristian Ehrlicher4 hours1-8/+2
| | | | | | | | | Remove some unneeded headers and avoid two useless conversions from/to QPoint(F). Pick-to: 6.11 6.10 6.8 Change-Id: Ieae6df74e4bd2bdba9498f86ec490520408e4c20 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QToolTip: move QTipLabel class declaration to qtooltip_p.hChristian Ehrlicher2 days2-53/+86
| | | | | | | | | | Move QTipLabel class decl out into a private header so it can be used in the style classes. Pick-to: 6.11 6.10 6.8 Change-Id: Ibed6153e899862bdd243e9d2d630305980fcb8a2 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Fix parent control geometry for QToolTipVlad Zahorodnii9 days1-7/+10
| | | | | | | | | | | | | | | | | | Amends 4eed22e67ed98ec2565be84a4838955af0faf8b0. The parent control geometry is specified relative to the parent window. However, currently, the QToolTip passes it in the global coordinate system. If you have only one output, it'll work as expected, but with multi-monitor setups, tooltips will be mispositioned. The `if (w)` guard was added to let QtWayland compute a better fallback geometry if no parent widget has been provided to QToolTip::showText(). Change-Id: Ia674c4d41fa00ad341a529268c0bc127e5e182a3 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Doc: Fix QDoc warnings for internal classes in Qt WidgetsJerome Pasion11 days3-0/+24
| | | | | | | | -Internal classes should have internal class documentation. Task-number: QTBUG-141665 Change-Id: I399e0cec51a9308172301a862dcd07e6137e9854 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QBoxLayout: Fix QWidget::sizePolicy reference in docMichael Weghorn2025-11-241-2/+2
| | | | | | | | | | | | | | | | Use two colons instead of just a single one. Otherwise, the generated documention only lets the part before the colon reference the QWidget doc (see the QBoxLayout::insertWidget doc [1] generated without this commit in place) instead of detecting that this is a class method and referencing its documentation. [1] https://doc.qt.io/qt-6/qboxlayout.html#insertWidget Pick-to: 6.10 Change-Id: I6cd978aeae9d3078d2033d0efe70de3574444e2c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Doc: Add missing property docsPaul Wicking2025-11-061-0/+11
| | | | | | Task-number: QTBUG-140629 Change-Id: I8e032655d6a211c042d86baa8bab27cc0b34cb9f Reviewed-by: David Boddie <david.boddie@qt.io>
* QApplication: reset WA_KeyboardFocusChange on focus changeChristian Ehrlicher2025-10-171-5/+9
| | | | | | | | | | | | | | | WA_KeyboardFocusChange is set when the user changes the focus by mouse but never cleared once the focus was changed e.g. with the mouse. The only way to clear it is to unfocus the whole top-level widget. This is results in focus rects in some style like fusion on checkboxes where there shouldn't be one. Fix it by clearing the attribute when the FocusReason is not keyboard. Fixes: QTBUG-141100 Pick-to: 6.10 Change-Id: I211e7f435c9fe748ee9925e35b481166b7446a55 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QPainter: move painter dirty flag handling into QWidget::initPainterTim Blechmann2025-10-141-4/+15
| | | | | | | | | | | | | `QWidget::initPainter` modifies font, pen and brush of the painer. The dirty flags were set from within QPainterPrivate::initFrom. This sprinkles the semantics across the codebase. The code becomes much easier to reason about, when setting the flags immediately after updating the state. In a similar manner we handle QPaintEngineEx::penChanged. Change-Id: I2f1095df4b56276681c58af0fb8163854835d060 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* widgets: Pass popup semantic information to WaylandDavid Edmundson2025-10-141-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wayland applications do not know their own window positions, this means that popups cannot stay on screen by themselves. When a window tries to go offscreen the way the window is adjusted is context-specific: - The first menu will be kept on screen by moving the x position until it all fits. - A submenu is too close to the screen edge, the menu will open on the opposite side of the parent menu to avoid obscuring it. - A combo box drop downs will vertically flip to the other side of the originating combobox. The Wayland API requires the application to provide semantic hints about the area in which the popup should be placed, along with hints about in which direction we should try to place the popup and how to handle being constrained. At a QPA level we don't know the location of individual widgets so this needs forwarding explicitly. Rather than exposing all possible positioning information, it is inferred from the window type at a QPA level, this required extending windowType to have more explicit values. Ideally this needs to be application-facing API as there are third-party comboboxes, but for now it is private with Qt's default controls opting into it. Task-number: QTBUG-99618 Task-number: QTBUG-124810 Fixes: QTBUG-135883 Change-Id: I49a2f18d1bfe1b755f259627722e076d58c13e8f Reviewed-by: David Redondo <qt@david-redondo.de>
* QApplication: use range-based for loops when possibleChristian Ehrlicher2025-10-131-17/+12
| | | | | | | | | ... and replace int with qsizetype in for loop where a range-based loop is not possible. Pick-to: 6.10 Change-Id: I2659e6f11e6ab0696b34fe9f743e4fcdcc5d4543 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix crash in QWidgetWindow::handleMouseEventJoerg Bornemann2025-10-131-0/+4
| | | | | | | | | | | | | | | | | User code that calls qApp->processEvents(); in context menu actions could lead to accesses of deleted memory. The reason was that the QWidgetWindow object was deleted as an effect of the event delivery in handleMouseEvents, and later accesses to object members in this method crashed. Pick-to: 6.8 6.10 Fixes: QTBUG-138419 Fixes: QTBUG-140132 Change-Id: Ia61e4380b29333875de9e1202c363d99d3f79e2a Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QApplication: avoid conversion from/to QPoint(F)Christian Ehrlicher2025-10-112-6/+4
| | | | | | | | | | | Avoid some useless conversions from/to QPointF when the point is given to a function which already takes a QPointF. Since the conversion from QPoint to QPointF is implicit, no compiler warning is given here. Also remove the unused variable 'hoverGlobalPos'. Pick-to: 6.10 Change-Id: I87eb2eff944a89dd8a3a13a3739d7523d91f6d78 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Doc: Add alternate text for Qt Widgets imagesJerome Pasion2025-10-096-10/+22
| | | | | | | | | | Alternate text (alt text) improves the documentation experience for screen readers and for other accessibility tools. Pick-to: 6.9 6.10 Task-number: QTBUG-135124 Change-Id: Ic481c1468548d197a69c9e19703c5773226fbd39 Reviewed-by: Alexei Cazacov <alexei.cazacov@qt.io>
* QWidget: initPainter - remove unnecessary const_castTim Blechmann2025-10-091-1/+1
| | | | | | | | | const_cast tend to be evil and is not necessary when calling a function that takes a const pointer. Pick-to: 6.10 Change-Id: I0e10a5717c636e474a21cb710f1f9d213adeb6b7 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix scrolling of QTableWidget within QGraphicsViewFriedemann Kleint2025-10-091-0/+1
| | | | | | | | | | | In the QGraphicsView branch of QWidget::scroll, scroll the children, too. Task-number: QTBUG-138381 Pick-to: 6.10 Change-Id: I77cb9288d5b9630dca659d7ef987d11914ed1e43 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Expand QRhiWidget color buffer size docsLaszlo Agocs2025-10-021-3/+19
| | | | | | | | | | | | | | | | | Traditionally we always talk about the "supersampling" example with textureSize type of properties (following Quick's docs from the Qt 5.0 days), whereas in reality the more common use these days is to set a smaller size so that one gets content upscaled from a lower resolution. (e.g. because the developer decides that rendering at 1080p is sufficient with a fullscreen QRhiWidget on a 4K screen) Expand also on the consequences of a > 1 device pixel ratio, to make it clearer that it is in effect an implicit fixedColorBufferSize = 2 * pixel_size, when it comes to the visual results. Pick-to: 6.10 6.9 6.8 Change-Id: I9ede72ddcc314798fa2b17115cca288d7d90da98 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Mark Qt::WindowType::Desktop deprecatedAxel Spoerl2025-09-301-0/+4
| | | | | | | | | Qt::WindowType::Desktop is no longer a valid window type in Qt6. Mark it deprecated. Fixes: QTBUG-140514 Change-Id: Ic47da86bc44fb5eb510a07150de1d07941406177 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove Qt::WindowType::Desktop in QWidgetAxel Spoerl2025-09-301-74/+41
| | | | | | | | | Qt::WindowType::Desktop is no longer a valid window type in Qt6. Remove its occurence in QWidget. Task-number: QTBUG-140514 Change-Id: I4ed072b0d038d54bbc16d129d9525ccf3881a6e0 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* QWidget: Ignore Qt::WindowType::DesktopAxel Spoerl2025-09-291-0/+9
| | | | | | | | | | | | | Qt::WindowType::Desktop has been reserved for desktop widgets, which do not exist in Qt 6. Ignore the flag in QWidgetPrivate::setWindowFlags(). Add a Q_ASSERT in QWidgetPrivate::init() and force it to false in release builds. Task-number: QTBUG-124559 Change-Id: I80a547089ff6d22314c5373e4e08bce0468dcc5f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Remove QApplicationPrivate::desktop()Axel Spoerl2025-09-291-23/+0
| | | | | | | | | | | A desktop widget is no longer needed. Remove the function and the associated static variable, and its deletion in the QWidget d'tor. Fixes: QTBUG-124559 Change-Id: I717a93b0f19cb60fd25bef5f5cbb905cd7585194 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Remove Qt::WindowType::Desktop in QApplicationAxel Spoerl2025-09-291-22/+13
| | | | | | | | | Qt::WindowType::Desktop is no longer a valid window type in Qt6. Remove its occurence in QApplication. Task-number: QTBUG-140514 Change-Id: Ib03aeb3d748bfed826500ec686798317a9c338fc Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Don't use desktop widget in QApplication::fontMetrics()Axel Spoerl2025-09-281-1/+1
| | | | | | | | | | | | | | | | | | | | | A desktop widget was used before QScreen was implemented. fontMetrics() calls QApplicationPrivate::desktop(), which creates a desktop widget, essentially a default constructed, parentless QWidget with its window type Qt::Desktop. As a QGuiApplication instance exists, it will inherit QGuiApplication::font() and its font metrics will be returned. Instead of creating an unnecessary desktop widget to return the application's font metrics, return the application font's metrics directly. Remark: An unexpected desktop widget can irritate autotests, when they expect QApplication::allWidgets() to be empty after deleting all widgets they created. Task-number: QTBUG-124559 Change-Id: I5a629fa981f538df55a4b281406ee74848ec0ec8 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Don't use desktop widget in QApplicationPrivate::dispatchEnterLeave()Axel Spoerl2025-09-281-1/+1
| | | | | | | | | | | | | A desktop widget was used before QScreen was implemented. QApplicationPrivate::dispatchEnterLeave() compared the entered widget to QApplication::desktop() and created a desktop widget, in case it didn't exist. Check for the Qt::Desktop window flag instead. Task-number: QTBUG-124559 Change-Id: Ie63fefc48e229518e90b28ca7d1620e099041e46 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add note to the setWindowFlag to reflect known effectMorteza Jamshidi2025-09-241-0/+4
| | | | | | | | | | After calling setWindowFlag, widget becomes hidden. This is mentioned in the windowFlags property but not for the setWindowFlag, so I added that. Fixes: QTBUG-138459 Change-Id: I280698a212fa7d4bccdc69088c68bbe457599cfd Pick-to: 6.10 6.8 6.5 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* CRA review: src/widgets/kernel/qapplication.*MohammadHossein Qanbari2025-09-233-0/+3
| | | | | | | | | | | | | | | | The qapplication.* files' security scores are tagged as significant since the command-line arguments and environment variables are considered trusted input. It does not expose to high-risk vulnerabilities and the data is available for validation before reaching QApplication. QUIP: 23 Fixes: QTBUG-140349 Task-number: QTBUG-135741 Pick-to: 6.10 6.8 Change-Id: Iadb7b4b8f516f89b70999b9ae8993d75084a5adb Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* CRA review: src/widgets/kernel/*MohammadHossein Qanbari2025-09-2354-0/+54
| | | | | | | | | | | | No critical security level found for these reviewed files. QApplication, QWidget and QSizePolicy files are reviewed in separate patches. QUIP: 23 Fixes: QTBUG-135741 Pick-to: 6.10 6.8 Change-Id: Iee10987c9a99606bc0a4c1faeeed354be53076bb Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* CRA review: src/widgets/kernel/qwidget.*MohammadHossein Qanbari2025-09-233-0/+3
| | | | | | | | | | | The security level for qwidget.* files are tagged as significant. QUIP: 23 Fixes: QTBUG-140351 Task-number: QTBUG-135741 Pick-to: 6.10 6.8 Change-Id: Ida69fed90caec4801a47f97d46b1133649b12a8f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QWidget: fix propagating style with descendant selectorsChristian Ehrlicher2025-09-222-1/+9
| | | | | | | | | | | | | | | The fix for QTBUG-133332 introduced a check to avoid an endless recursion within setStyle_helper() but it prevents the correct propagation of the style with a descendant selector. Therefore use another approach and make sure QWidgetPrivate::inheritStyle() is not called recursivly. This amends 3252e1808c12c21f27bb4844a1497d18587a64b5. Pick-to: 6.10 6.9 Task-number: QTBUG-133332 Fixes: QTBUG-139924 Change-Id: Ia0a1eec652380397f861364bbdc303dfd17b34f3 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* CRA review: src/widgets/kernel/qsizepolicy.*MohammadHossein Qanbari2025-09-202-0/+2
| | | | | | | | | | | The security level for qsizepolicy.* files are tagged as significant. QUIP: 23 Fixes: QTBUG-140350 Task-number: QTBUG-135741 Pick-to: 6.10 6.8 Change-Id: I858ea681cd3d802a7783870a59148fc4fee0b1c2 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Don't report/enable safe areas for graphics-view proxied widgetsTor Arne Vestbø2025-09-151-1/+13
| | | | | | | | | | We don't handle the safe area mapping for proxied widgets. Task-number: QTBUG-140133 Pick-to: 6.10 6.9 Change-Id: I87b666f5364b7ad89be77e84054eb2d653933b61 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* wasm: a11y - Implement ParentChanged callbackEven Oscar Andersen2025-09-081-0/+8
| | | | | | | | | | | | | | | | Implement the QAccessible::ParentChanged callback. Probably not possible with a perfect implementation. What can reasonably be done is to issue ParentChanged on; QWidget::setParent, QWindow::setParent, QQuickItem::setParentItem. However calling these functions do not necessarily map 1:1 to QAccessibleInterface::parent(). Fixes: QTBUG-138802 Fixes: QTBUG-134923 Change-Id: Iac4ac7843ba904bf0b7aa9964ee68a94294ad979 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* a11y: Let buddy widget know its label(s)Michael Weghorn2025-09-042-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | If a widget is set as the buddy widget of a QLabel, that label is reported for the widget's QAccessible::Label relation. So far, in order to identify labels for which the widget is set as the buddy, all sibling widgets were inspected. There was already a comment mentioning that all objects should ideally be checked, but that would be too expensive. Change the approach altogether: Instead of traversing the widget tree, store all labels for which the widget is set as the buddy in the widget itself. This is more efficient and ensures the relation is reported correctly for non-siblings as well. Fixes: QTBUG-139719 Change-Id: I6d517f8727cdde0de38b11d7c6906ecc55da1927 Reviewed-by: MohammadHossein Qanbari <mohammad.qanbari@qt.io>
* QTest::qWaitFor*: return early if the widget or window was destroyedThiago Macieira2025-08-281-4/+5
| | | | | | | | | | Complements commit f0019c51397e75c261777ef2d7c82a96037d9c7f, which introduced the check for destruction but had no way of indicating that the condition was now forever false. Task-number: QTBUG-136653 Change-Id: I2c6636a7cc6d60e4ac3afffd550fb0f7cc5fd240 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Make QWindowContainer::containedWindow() invokableAxel Spoerl2025-08-211-1/+1
| | | | | | | | | | | | | | | QWindowContainer is a private class. Applications might need to obtain the QWindow pointer of the contained Window, in case it has been dynamically added. Squish is one possible use case. Make containedWindow() invokable, so it can be obtained via introspection. Change-Id: I308b9b23f2d8bea4eb16baf7850d64dc870f59bd Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Stefan Gehn <stefan.gehn@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QTest::qWaitFor*: capture the widget/window using QPointerThiago Macieira2025-08-191-2/+4
| | | | | | | | | | | | | | | | | | | | So we know if they get deleted before the waiting completes. This avoids a crash if we dereference a dangling pointer or an ABA coincidence in the case of qWaitForWindowFocused. There's currently no way to tell QTest::qWaitFor() that the condition will never become true, so this will result in a timeout. [ChangeLog][QtTest] Fixed a bug that would cause the qWaitForWindow* and qWaitForWidget* functions to crash or misbehave if the window or widget they were told to wait on was destroyed in the process of waiting for it to be shown/focused/activated/exposed. Pick-to: 6.10 6.9 6.8 Task-number: QTBUG-136653 Change-Id: Idaef89fa55e869d6946afffd727653a1fee3770c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Revert resetting the resolve mask of the tooltip paletteSanthosh Kumar2025-08-011-5/+2
| | | | | | | | | | | | | | | Revert resetting the tooltip palette mask (added as part of patch 4cf92d83c3a8966fd1716939829fdbd4642810e9) as it doesn't allow to set the tooltip palette from the platform theme (for instance, setting high contrast theme palette for tooltip). This patch also make the style sheet style to override its palette over the widget palette when set, otherwise use the widget palette. Task-number: QTBUG-135964 Pick-to: 6.10 6.9 6.8 6.5 Change-Id: I0da0a09993de37691149fdeed6b9be5ff9964107 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Widgets: use safe margins from QWindow::safeAreaMargins()Assam Boudjelthia2025-07-281-5/+1
| | | | | | | | | | We don't need to go through the platform window and handle native pixels conversion because QWindow::safeAreaMargins() already does that. Pick-to: 6.10 6.9 Fixes: QTBUG-138157 Change-Id: I11ec493d1b3a55628a27632fa94b3d14e3f30a50 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* doc: Reword QGestureRecognizer docs slightly; fix a commentShawn Rutledge2025-07-252-8/+8
| | | | | | | | | | | | | | "The application" was a bit vague: as a Qt user, I write an application; but here, the QApplication object is what was apparently meant (although by saying that, we omit the private detail that QApplicationPrivate has a pointer to QGestureManager which actually takes ownership). Investigation prompts changing the comment by the instance() method: it's declared in QGestureManager, defined in qapplication.cpp. Task-number: QTBUG-123585 Pick-to: 6.10 6.9 6.8 Change-Id: I50900697db8798c1ab4b9c5abaa9d2102a3cbcf4 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Fix memory leak in QGestureRecognizer::unregisterRecognizer()Dheerendra Purohit2025-07-251-0/+8
| | | | | | | | | | | | Add immediate deletion for orphaned QGestureRecognizer instances. Skipped deletion if recognizer is obsolete or already marked for cleanup. Pick-to: 6.10 6.9 Fixes: QTBUG-123585 Change-Id: Idc84f333ce247c5eb12850f672b63ae8347ed993 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* a11y - send ObjectDestroyed event on object destructionEven Oscar Andersen2025-07-211-0/+6
| | | | | | | | We send the event from the accessible cache. This is the only place we have access to both the interface and the object. Change-Id: I078d6e082b0c3205bfcb544e94b9736360fea4a3 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Make QTest::defaultTryTimeout publicMitch Curtis2025-07-171-3/+3
| | | | | | | | | | | | | | | | This allows users of Qt Test to have control over the default timeout value without having to explicitly pass it via the *_WITH_TIMEOUT variants of the macros. Continues on the work done in 55f163382d36ddf908fc2884f2020a1b92340c10. [ChangeLog][QtTest] Added QTest::defaultTryTimeout to allow configuring the default timeout used by the QTRY_* functions. Task-number: QTBUG-81979 Task-number: QTBUG-138160 Change-Id: I04873fd3cc51e9be19850aa5a7de78f9444a11ee Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Restore QContextMenuEvent for a popupNodir Temirkhodjaev2025-07-081-0/+14
| | | | | | | | | | | Amends e4ef0f03e6f1fddc397980fd7fbf6f6b829f16d9 Fixes: QTBUG-134757 Pick-to: 6.8 6.9 6.10 Change-Id: Ibb1c069be20057160c404efe9b6afc3ca7d6c15b Reviewed-by: Nodir Temirkhodjaev <nodir.temir@gmail.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QTest: provide overloads for the qWaitFor* functionsMitch Curtis2025-07-082-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. Pick-to: 6.10 Change-Id: Ife74a1e83d430072a104e0ac665a8cde9fd689f1 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QMetaType: de-virtualize the QMetaTypeModuleHelper structThiago Macieira2025-07-041-7/+7
| | | | | | | | | | | Now instead of storing a pointer to a vtable, we store the vtable directly. That is one fewer pointer dereference to get to where we want to go. It does mean you can't press F2 in Qt Creator to find the other implementations (not that "._anon_4" was of any help). Change-Id: I5635ebd8907c79c2a935fffdfc8952246ed7fb04 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* qWaitForWidgetWindow: fix excessive genericityMarc Mutz2025-06-271-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.10 6.9 6.8 Change-Id: I75f84abbf60cd77ce48c7ab0ee797e5e8a0879de Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Q*Application: deprecate compressEvents()Marc Mutz2025-06-271-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. Pick-to: 6.10 Change-Id: I064e80250ab7a405cc8abef144b6c7bc7bbf29fd Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* wayland: Add xx-session-management-v1 supportDavid Edmundson2025-06-271-4/+17
| | | | | | | | | | | | | | | | | | This is powered by the xx-session-manager which is tagged as experiemntal. This is guarded by an env variable. Application level session IDs are exposed via QSessionManager. The public API for windows is exposed via the existing QSessionManager and QWidget::setWindowRole. As it's not widely supported the documentation in QWidget is left untouched for now. [ChangeLog][Third-Party Code] New protocol synced from wayland-protocols Change-Id: Ibfbef86c6e75f8b95433cbba69ca10a5abea9e21 Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* 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. Pick-to: 6.10 Change-Id: I3eda0f195d14bff68b6dd08ae9dfeb82f75c56e2 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* wasm: a11y - Implement support for disabled attributeEven Oscar Andersen2025-06-131-0/+17
| | | | | | Fixes: QTBUG-137449 Change-Id: I6aa07c7108b5ad14c12e6f24e71b8dda12fec483 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Decouple QApplication from QColormapTor Arne Vestbø2025-06-061-3/+0
| | | | | | | | | | | | | Initialize the shared QColormapPrivate on first call to QColormap::instance, in a thread safe manner for good measure, and clean it up on app exit if needed. The cleanup now also accounts for the possibility of QColormap instances outliving the cleanup. We still reset to a new QColormap on next use, following the existing behavior. Change-Id: Ia16a84994b3ee05f9431ba24dd9126f2dc271b61 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>