summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove year from generic Qt copyright informationKai Köhne2024-02-141-1/+1
| | | | | | | | | | | | | While at it, also add the missing dot in Ltd. (as it's an abbreviation). Also, prefer https:// over http://. Fixes: QTBUG-121906 Task-number: QTBUG-121928 Pick-to: 6.7 6.6 Change-Id: I4e1f1563376ae36b3c260359d830f00969ab9351 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* cmake: Generate Apple privacy manifest files for Qt modulesTor Arne Vestbø2024-02-132-0/+30
| | | | | | | | | | | | | | | | | | | The default manifest is a minimal file that claims NSPrivacyTracking false, along with an empty list of NSPrivacyTrackingDomains and NSPrivacyCollectedDataTypes, as Qt does not generally do user tracking. Modules can override the default manifest by setting the PRIVACY_MANIFEST target property, specifying a custom privacy manifest. The NSPrivacyAccessedAPITypes key is only required for iOS for now. Even though we don't build Qt for iOS as frameworks yet, which is required to embed a privacy manifest, we include the keys for the APIs we known we use. Task-number: QTBUG-114319 Change-Id: I654bb52b98ee963adeeb744b35f3a1c2a1270969 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add QPlatformIntegration::BackingStoreStaticContents capabilityTor Arne Vestbø2024-02-131-5/+3
| | | | | | | | | | | | | | This was a feature in Qt 4, but the only platform that carried it over to Qt 5 was Windows, in ab76593f18396e693f24066592244ca95e135ea2, and that's still the situation. As a first step in possibly implementing this on more platforms, lets replace the hard-coded check in QWidgetRepaintManager::hasStaticContents with a proper QPlatformIntegration capability check in the only call site. Pick-to: 6.7 Change-Id: I2067109f45116cd8c62facf7224cd748f19e845b Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* QFusionStyle: Pass handling of FrameGroupBox to base styleChristian Ehrlicher2024-02-132-16/+14
| | | | | | | | | | | | | | | | | | | The fusion style had an own handling for PE_FrameGroupBox/SC_GroupBoxFrame but failed to handle all cases (e.g. with checkbox, text and horizontal alignment) correct. In contrast, the base class (QCommonStyle) is properly handling all those attributes and returns a correct subControlRect(). Therefore remove the special handling, let styleHint() return the correct value for SH_GroupBox_TextLabelVerticalAlginment based on the groupBox's text alignment and rely on QCommonStyle ability to calculate the correct values. Pick-to: 6.7 6.6 Fixes: QTBUG-85425 Fixes: QTBUG-95472 Change-Id: I98ccf861274026a8fd4a2ef436efc3bb009be056 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* QWidgetWindow: Don't meddle with WA_WState_{Hidden/ExplicitShowHide}Tor Arne Vestbø2024-02-121-14/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In ccd3bf0871b81dfc09bb469b161f32dfb47ee53e we introduced code that would ensure that our call to QWidgetPrivate::setVisible() from QWidgetWindow would not result in WA_WState_Hidden being set. This code was later modified in 51300566ffe2ece2455e1d0479a556c5dbb3bb8e to apply to widgets that were explicitly shown/hidden. Unfortunately, the reset of the Hidden and ExplicitShowHide attributes would in some cases result in the widget having only ExplicitShowHide after being hidden, which is an invalid state. It also resulted in the widget having both Visible, Hidden, and ExplicitShowHide, if first being hidden via QWidget, and then shown via QWindow, which in turn prevented the widget from being hidden via QWidget::hide(). As we no longer rely on the adjustments to Hidden/ExplicitShowHide to fix QTBUG-73021, we can remove the entire logic. Any setVisible call to QWidgetWindow will either come from outside, in which case we should respect that and set Visible/Hidden via QWidgetPrivate, or the setVisible call is a result of QWidget itself (or its parent) showing the QWidgetWindow, in which case the QWidget visible state is already up to date and we skip the QWidgetPrivate::setVisible call. Task-number: QTBUG-121398 Task-number: QTBUG-73021 Fixes: QTBUG-120316 Pick-to: 6.7 Change-Id: I3174ad66b7e10c55aa99b7cb433267632169ca8f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Ensure QWidget::destroy() events and attributes match hiding the widgetTor Arne Vestbø2024-02-121-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When destroying a widget via QWidget::destroy(), we clear WA_WState_Created, and then delete the QWidgetWindow, which in turn hides the widget. But QWidgetPrivate::setVisible(false) skips hide_helper() if the widget has not been created, which leaves out important events such as the hide event, and even more important, fails to clear WA_WState_Visible. As a result, the widget is left visible (and mapped), even if it has been destroyed. This is normally not a big issue for the main use of destroy(), namely destructing the widget, but for cases where destroy() and create() is used to recreate the widget this is important. We now unconditionally call hide_helper() if the widget is not already hidden. As a result, the widget will correctly be visible=false after a destroy(). This in turn means we need to re-apply the visible state after recreating the widget when we detect a mismatch in RHI configuration. Due to our meddling of the Hidden and ExplicitShowHide attributes in QWidgetWindow private, a QWidet::show() will not have any effect after being destroy(). This is okey for now, as destroy() is internal to a widget, and we make sure to either update WA_WState_Visible and WA_WState_Hidden (in QWidgetPrivate::setParent_sys), or use the QWidgetPrivate::setVisible() code path directly, which doesn't have that issue. The root problem will be fixed in a follow up. Pick-to: 6.7 Change-Id: I77cb88d75e57f0d9a31741161fb14d618a653291 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Restore window state of recreated top level widget, not closest QWindowTor Arne Vestbø2024-02-121-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we recreate a top level QWidget due to the RHI config not matching, we need to re-apply the window state, as the state is lost on destroy(). But we should do this on the QWidget we are recreating, not on its closest QWindow. These are usually the same, so it didn't matter in practice for most cases (besides the more convoluted way of getting to the QWidget's window). But if the top level widget does not have a winId yet, the call to find the closest QWindow via QWidgetPrivate::windowHandle() will traverse from the top level widget to its transient parent widget, via nativeParentWidget, which is strange and likely a bug. As a result of that, we would store the window state of the transient parent widget, and then, once we had created() the new top level, we would apply the window state to the top level, which now had a winId. We can simplify all of this by just storing and applying the window state on the widget we are re-creating. There's no need to go via the closest QWindow for this. We do however need to set the window state on the widget's window, as going via QWidget will just bail out since the window state hasn't changed. Amends c88211d1e4ac12eb2ae4990703a4f73c7085d624 Fixes: QTBUG-119795 Pick-to: 6.7 6.6 6.5 Change-Id: I0ad6e7bbac5f29d095cc643e9a7094784e9a2122 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QTreeView: fix performance regression from accessibility updatesVolker Hilsheimer2024-02-092-5/+27
| | | | | | | | | | | | | | | | | | | | | | | | When expanding items in a tree view, the model as seen by accessibility changes size and structure, and needs to be reset. This was done in 6a4afebc5ce8db69a6c9fb398cada31e6bad5e3c by emitting a ModelReset update at the end of QTreeViewPrivate::layout when laying out the items had changed the number of visible items. However, QTreeViewPrivate::layout is called both recursively, and in a loop when expanding all items, or expanding items to a certain depth, resulting in a heavy performance hit when each recursion or iteration causes the accessibility bridge to rebuild its representation from scratch. Instead, we now only store a flag that the model has to be reset in QTreeViewPrivate::layout, and then trigger the reset in the function that call layout, after the laying out is complete. Fixes: QTBUG-122054 Pick-to: 6.7 6.6 Change-Id: Icb8384b56a4727c8c5050a1d501aebb55f48aafe Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QHeaderView: make sectionsMovable/sectionsClickable propertiesChristian Ehrlicher2024-02-092-26/+18
| | | | | | | | | When those two attributes were added in Qt5 they were not marked as property for unknown reason. Therefore propagate them now. Fixes: QTBUG-1639 Change-Id: If9f0def2eb680c9c9e8a04b101768d87885d542b Reviewed-by: David Faure <david.faure@kdab.com>
* QAbstractItemView: close all child editors when parent is removedChristian Ehrlicher2024-02-081-1/+12
| | | | | | | | | | | | | QAIV::rowsAboutToBeRemoved() closed all child editors when the child was a direct ancestor of the removed index but forgot to check if the index is an indirect ancestor. Some of those editors were removed later in updateEditorGeometries() but not all as the testcase in the bug report showed. Pick-to: 6.7 6.6 6.5 Fixes: QTBUG-103476 Change-Id: I90b3d3bff3857aa79f96eecf23d980928693b7bc Reviewed-by: David Faure <david.faure@kdab.com>
* Q(Plain)TextEdit: don't crash when using a style sheetChristian Ehrlicher2024-02-072-2/+2
| | | | | | | | | | | | | | When using a style sheet, Q(Plain)TextEdit::isReadOnly() might get called during the initialization before d->control is properly initialized which lead to a crash. This amends 43ce457cbd093fc06d99b5ac833c789ef7c893d5. Fixes: QTBUG-121697 Fixes: QTBUG-121790 Task-number: QTBUG-1857 Pick-to: 6.7 6.6.2 6.6 6.5 6.2 Change-Id: I15c357c9eef7f6559bcc2ad89033a3d8e7fcbfef Reviewed-by: David Faure <david.faure@kdab.com>
* Remove extra semi-colonsTasuku Suzuki2024-02-063-3/+3
| | | | | Change-Id: I92fddb36cd136fd1bd627955f15d0559b9942d7e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Reapply: Remove const/ref debug operator for QDockWidgetVolker Hilsheimer2024-02-032-11/+9
| | | | | | | | | | | | | | | | QObjects are usually passed by pointer, so we leave the override taking a pointer. This amends bbeff2a3350dd3396400865525d509b784c2d93e, and reverts the previous revert in b148a362c36a9b34b0c21c60530353d6bf6b92cb. Now that we have removed the incorrectly added operators from the 6.6 branches entirely, we can remove the unnecessary const/ref operator from 6.7. Task-number: QTBUG-119952 Pick-to: 6.7 Change-Id: Id196367ddf3ffb443db44194002f850dcfec5d79 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* QLineEdit: disable cursor blinking on hideGiuseppe D'Angelo2024-02-021-0/+2
| | | | | | | | | | | | | | | QLineEdit activates the blinking cursor timer when it's shown, but never deactivates it, resulting in constant wakeups even for hidden line edits. Note that this is a workaround. Qt is supposed to send a focus out event to line edits that get hidden. In some corner cases, it doesn't, and only a hide event is sent. Change-Id: Ic0645512051466ca9b1e84c54cef34c22287338b Task-number: QTBUG-52021 Pick-to: 6.7 6.6 6.5 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Fusion style: add right side indent to groupbox titleGhenady Kuznetsov2024-02-031-3/+5
| | | | | | | | | | Add right side indent to the title if groupbox alignment is set to Qt::AlignRight | Qt::AlignVCenter. Fixes: QTBUG-121049 Pick-to: 6.7 6.6 Change-Id: I9aac295c824ad774410efd679f59075e4251b611 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* Fix build with -no-feature-animationTasuku Suzuki2024-02-021-0/+2
| | | | | | | | This amends 8eaf01ef818c1b980e2bbce1e8ddd2de638f5028 Pick-to: 6.7 Change-Id: I8e30f232b732b0acb0b6c7070ecfa216fabd64da Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* Change doc snippet licenseLucie Gérard2024-02-023-3/+3
| | | | | | | | | | | | According to QUIP-18 [1], all doc snippet files should be LicenseRef-Qt-Commercial OR BSD-3-Clause [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: I6e5bc9d05a5d510cc07a15abafe2257034562510 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Harden WidgetAttributes debug stream operatorTor Arne Vestbø2024-02-021-9/+10
| | | | | | | | The call site may pass in a null-widget, so guard for that. Pick-to: 6.7 Change-Id: I631cb2fc105bad69faf3daaeac4b893457d27cc1 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Fix build with -no-feature-menuTasuku Suzuki2024-02-021-0/+2
| | | | | Change-Id: I29a230d70a96c3037f4e07dbe23fce13aa869089 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QFileSystemModel: don't crash with setIconProvider(nullptr)Ahmad Samir2024-02-011-4/+7
| | | | | | | | | | | | | | | | | | | | The method takes a pointer, so the code shouldn't crash when passed a nullptr. QFileInfoGatherer::getInfo() still needs to generate a descriptive string for the file, so we refactor QAbstractFileIconProvider::type() to put the implementation into a reusable static function QAbstractFileIconProviderPrivate::getFileType(const QFileInfo &info). This unfortunately involves constructing a QMimeDatabase on the fly, but the docs say that is fine. Drive-by change: use nullptr instead of `0` for pointers. Pick-to: 6.5 6.6 6.7 Fixes: QTBUG-99178 Change-Id: Ia32ea0a26701d593e74fbecced7be8d9e0aa0f52 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Change license of .qdoc filesLucie Gérard2024-02-011-1/+1
| | | | | | | | | | | According to QUIP-18 [1], all .qdoc files should be LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Change-Id: I4559af21fc9069efa9bf0cbd29c5e86cfdac9082 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Don't set ExplicitShowHide on children when showing parent widgetTor Arne Vestbø2024-02-012-23/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As a result of using QWidget::setVisible to show the child widgets we would end up also setting ExplicitShowHide. This is not in line with the intent of ExplicitShowHide, which is to flag a widget as explicitly shown/hidden by the developer, which in turn prevents Qt Widgets from toggling WState_Hidden when the widget is reparented. By using QWidgetPrivate::setVisible instead, we can show the child without setting ExplicitShowHide. As side effect of this is that we no longer reset WA_WState_Hidden from QWidgetWindowPrivate::setVisible(). This is an issue when the setVisible call comes as a result of destroying the QWidgetWindow, as that is an implicit hide, and should not result in the widget having WA_WState_Hidden. QWidget handles this case in hideChildren by not calling QWidgetPrivate::setVisible -- instead doing its own reset of WA_WState_Visible. We don't want to untangle this just yet, so as a workaround we detect that the widget is already !isVisible(), thanks to hideChildren having hidden it, and then skip the call to QWidgetPrivate::setVisible that results from QWindow::destroy(). Task-number: QTBUG-121398 Pick-to: 6.7 Change-Id: Ib5b4d9c84f0569124c5f3ca2169cabff18934e2d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Add logging, clarifications, and tests for QWidget show/hide behaviorTor Arne Vestbø2024-02-013-10/+66
| | | | | | | Task-number: QTBUG-121398 Pick-to: 6.7 Change-Id: I94b4c90c3bd515279417c88497d7b9bd5a362eae Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Add QWidgetPrivate::isExplicitlyHidden() helper functionTor Arne Vestbø2024-01-317-10/+19
| | | | | | | | | To aid readability. Task-number: QTBUG-121398 Pick-to: 6.7 Change-Id: I3cb231584c2b7aee72e9f01c669fed1e01fbe475 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Fusion style: add indent to groupbox titleGhenady Kuznetsov2024-01-311-0/+4
| | | | | | | | | | Add indent to the title if groupbox alignment is set to Qt::AlignLeft | Qt::AlignVCenter. Fixes: QTBUG-121049 Pick-to: 6.7 6.6 Change-Id: I25e2fe4e73b920baf4c678b6b0e758d1da7cf632 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* Widgets: Add missing deprecation version markersKai Köhne2024-01-281-4/+4
| | | | | Change-Id: I277e481c7e802f97d1394d7421e9527083df8482 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QMessageBox: Move enum static assertions to cpp fileAxel Spoerl2024-01-252-7/+14
| | | | | | | | | | | | | | | | | Move static assertions for StandardButton and ButtonRole enums from header to cpp file. Use qToUnderlying instead of casting and assert types where possible. Amends 773f9ab0189bbb439c3066695c947b11a20c484f. Found in API-Review. Change-Id: Ia52886e6e33a3b94b327d17d1453e18febe6dd50 Found-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Task-number: QTBUG-119952 Pick-to: 6.7 6.6 6.5 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* qWaitForWindowFocused: Pass timeout as QDeadlineTimerTor Arne Vestbø2024-01-252-5/+5
| | | | | | | | | | | We should avoid int-based timeouts nowadays, and prefer std::chrono, or for timeouts where Forever is a valid state, QDeadlineTimer. Discovered during API header review. Pick-to: 6.7 Change-Id: Ia56a67084c7a2f989951755fed5ffc161ed8f79e Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QFileDialog::getOpenFileContent: default new parent parameterVolker Hilsheimer2024-01-241-1/+1
| | | | | | | | | | | | | | | | | Amends 7c5cf8cae054954975a3e262f7fe3cd9897d67f4, which removed the old function that didn't have any parent parameter from the API, and added a new one with the parent parameter in its stead. However, to make sure that the new function is source compatible with existing code, the parent parameter must be defaulted to nullptr (which it already is in the new version of saveFileContent). Found during header review. Pick-to: 6.7 Change-Id: I3e734905be9788ae1b206c7a65328e604667f5e4 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Inline one qDrawPlainRoundedRect overloadVolker Hilsheimer2024-01-242-9/+7
| | | | | | | | | | | Don't export both, the one is just calling the other, so make it inline. Give parameters descriptive names that match the documentation. Found in header review. Pick-to: 6.7 Change-Id: I48b221a4fcc476483fee2842ec0a5cadd628b803 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Fusion style: wrongly used PixelMetric enumGhenady Kuznetsov2024-01-231-5/+5
| | | | | | | | | | | Wrongly used QStyle::PM_ExclusiveIndicatorHeight, which is height of a radio button indicator instead of QStyle::PM_IndicatorHeight, which is height of a checkbox indicator in pixelMetric() calls for checkbox subcontrol of groupbox. Pick-to: 6.7 6.6 Change-Id: Ifbf7783fd4494d1e00ee28c27fa5f62b319b8787 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* QWidget: Clean up state that depends on QWindow from ~QWidgetWindow()Tor Arne Vestbø2024-01-232-27/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were assuming that QWidget was in full control of QWidgetWindow destruction, via deleteTLSysExtra(), and that we could limit any cleanups to that function. But in some situations QWidgetWindow is destructed from other code paths, in which case we were left with dangling pointers to the QWidgetWindow in both QTLWExtra, as well as the backingstore. This can happen if there's a child widget hierarchy where there is not a 1:1 mapping between QWidgets and QWindows, for example if the window attribute WA_DontCreateNativeAncestors has been set. In this situation our normal recursion into children in QWidget::destroy() stops at the first widget without a window handle. When we then delete the top level QWindow, the QWindow destructor will delete any child QWindows, which includes our leaf QWidgetWindow. We should probably fix up QWidget::destroy to continue looking for children, even if we don't destroy the current child. But independently of that we should make sure the QWidgetWindow cleans up when it's being deleted, regardless of how it ended up there. There's further room to clean up the deleteTLSysExtra() function and friends, but that's been left for a later time. Fixes: QTBUG-120509 Pick-to: 6.7 6.6 6.6.2 6.5 Change-Id: Ib691df164d7c9c83cb464c0a6bf3bc2116e8ca43 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Do more QRhiWidget cleanups based on API reviewLaszlo Agocs2024-01-222-9/+9
| | | | | | Pick-to: 6.7 Change-Id: I339fb2ac2546b9d7b4b88cba89191e7a4311017f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Increase precision for QGraphicsView::AnchorUnderMouseThorbjørn Lindeijer2024-01-221-7/+6
| | | | | | | | | | | | | | | | | | * Use a more precise view center for views with odd width/height * Use the QPointF version of mapToScene to avoid rounding * Round instead of truncate when setting scroll bar values These changes increase the precision of AnchorUnderMouse, which is important when for example wheel scrolling is used to change the scale of the view. Without these changes, the view shifts slightly with each change in the transform. [ChangeLog][QtWidgets][QGraphicsView] Increase precision for QGraphicsView::AnchorUnderMouse and QGraphicsView::centerOn Pick-to: 6.6 6.7 Task-number: QTBUG-96879 Change-Id: I8199196c671e4aa96732f382e8057468f676b8d7 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QPushButton with a menu remains in sunken state after menu closedEd Cooke2024-01-221-1/+1
| | | | | | | | | | | | | | | | | | | Regression fix, introduced in: 7199498fb9cbfb5afc043ddb0e630c8ffad5240b QPushButton with a menu will have a sunken state, QStyle::State_Sunken, when the menu has been closed. Expected behavior is that the sunken style is to be removed when the menu is closed. A boolean called "menuOpen" is never set to false after being set to true in the popupPressed() method. When this boolean is true, a sunken state is painted. Fixes: QTBUG-120976 Pick-to: 6.6 6.7 Change-Id: I3e721da5dfbb6db200aa2de7366ac5dc73c873e0 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QCheckBox: deprecate stateChanged()Marc Mutz2024-01-192-3/+12
| | | | | | | | | | | | | [ChangeLog][QtWidgets][Deprecation Notices][QCheckBox] stateChanged(int) has been deprecated in favor of checkStateChanged(Qt:CheckState). Found in API-review. Amends 5a96d13bb5abd5339cf21dd1de7a17152c71f0fc. Pick-to: 6.7 Change-Id: I6ff4aa38c2f43622ba4b127420aff83790785455 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QMetaTypeModuleHelper: mark instances constexprMarc Mutz2024-01-191-1/+1
| | | | | | | | | | Static and thread-local objects should be constexpr or constinit if possible. Task-number: QTBUG-100485 Pick-to: 6.7 6.6 6.5 Change-Id: I29088798a50d6278252c9088e7c191c4214b2e5b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Revert "API Review / QDockWidget: Remove const/ref debug operator"Axel Spoerl2024-01-182-9/+11
| | | | | | | | | | This reverts commit ca2f46c04c26ed4649cb6c2c62d3b2e52cd8d5ad. Reason for revert: <BIC in 6.6 found by Marc Mutz> Pick-to: 6.7 6.6 Change-Id: Ia5b8849e55ebccb514bc753ce1d31855d91e2406 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QMetaTypeModuleHelper: suppress cppcoreguidelines-virtual-class-destructorMarc Mutz2024-01-181-0/+1
| | | | | | | | | | | | | | | | | | | | Says clang-tidy: destructor of '(unnamed struct at qmetatype.cpp:966:14)' is public and non-virtual in file:src/corelib/kernel/qmetatype.cpp line:966 col:14 static const struct : QMetaTypeModuleHelper Yes, these classes are polymorphic (because the base class is). Yes, the destructor is non-virtual (because the base class' one isn't, but it's also protected, so fine). But these classes are not used as base classes, so suppress the warning. Pick-to: 6.7 6.6 6.5 6.2 Change-Id: I75be86bca36a4a0e93d72acb1a0d2fe0dca1c505 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Update QRhiWidget API based on review commentsLaszlo Agocs2024-01-183-62/+68
| | | | | | | | | | | | | | | | | | Spell out some API names in enum. Some functions are now protected. Remove property for autoRenderTarget. textureFormat -> colorBufferFormat. Used "fixed" instead of "explicit" and follow the above naming, so that explicitSize becomes fixedColorBufferSize. Pick-to: 6.7 Change-Id: I2fd6ad46033313a3febbb8846146021d5dd11010 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fusion style: add clip region for groupbox titleGhenady Kuznetsov2024-01-171-0/+16
| | | | | | | | | | | | | Fusion style is missing clip region for the title in QFusionStyle::drawComplexControl(). Without that region, the top line of the frame will be visible behind the vertically centered title. Fixes: QTBUG-121041 Pick-to: 6.7 6.6 Change-Id: I3daf5854195e28a5ee3cb50343e2dd56e66ed940 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* QFusionStyle: draw slider in a scrollbar using lighter colorTimur Pocheptsov2024-01-161-1/+3
| | | | | | | | | | | The gradient we are using now, makes slider almost invisible in 'Dark' theme (non-transient scroll bar). Instead of using gradient for non-selected and non-pressed state, use the same color as in pressed state. Fixes: QTBUG-120971 Change-Id: I1a7e4aefa4483e8095e59d82be3d0c1c3526b28f Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Remove note about QDockWidget::DockWidgetClosable not working on macOSTor Arne Vestbø2024-01-161-3/+1
| | | | | | | | It does nowadays. Pick-to: 6.7 6.6 6.5 Change-Id: Ie14a84460abfebd42c93e5ae41969d9e3b4c4f5d Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Doc: Remove wrong comment in QStyle::pixelMetric() docChristian Ehrlicher2024-01-161-2/+1
| | | | | | Pick-to: 6.7 6.6 6.5 6.2 Change-Id: Iebb5794a166899c986e1c408a254184b22bc276e Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Widgets: pass widget to QStyle::pixelMetric()Christian Ehrlicher2024-01-1619-55/+55
| | | | | | | | | | | | Make sure to pass the widget to QStyle::pixelMetric() as some styles might use this (e.g. the new windows styles) to determine the correct pixel metric. Pick-to: 6.7 6.6 6.5 6.2 Task-number: QTBUG-1857 Change-Id: I5c32f5af8b284749732b610e56b4e3d8c8ed1946 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: David Faure <david.faure@kdab.com>
* Styles/fusion: Adjust QSlider painting with modified paint rectChristian Ehrlicher2024-01-121-2/+6
| | | | | | | | | | | | | | When the painting rect is adjusted within an overloaded QSlider::initStyleOption() there are some glitches when using the fusion style: - the tickmarks are not painted inside the specified rect / it is ignored - the glue groove bar is clipped incorrectly Pick-to: 6.7 6.6 Fixes: QTBUG-111314 Change-Id: If140c5348031d869b527c6c4850b4a8d34b395c1 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* QColorDialog: Add trailing comma to new enum valueVolker Hilsheimer2024-01-121-1/+1
| | | | | | | | | As commented in header review, this will make future header reviews less noisy. Pick-to: 6.7 Change-Id: Ia75e51facec100172de7dbb0854830d9981f0552 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* QFusionStyle: fix painting handle with tickmarks enabledChristian Ehrlicher2024-01-121-16/+26
| | | | | | | | | | The handle was drawn outside of the widget's rect when tickmarks were enabled (TicksAbove/TicksLeft). Pick-to: 6.7 6.6 6.5 Fixes: QTBUG-83604 Change-Id: Iff3a1a330317576a759e3fd6795d0b4849e2044b Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* QComboBox: ignore hidden items when calculating popup sizeChristian Ehrlicher2024-01-121-0/+3
| | | | | | | | | | | The popup size depends on the max visible items property. But the loop did not ignore the hidden items which results in fewer items in the popup than allowed. Fixes: QTBUG-120574 Pick-to: 6.7 6.6 6.5 Change-Id: Ic3c503a5272d6839aee158740e096405ca8887d6 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Doc: complete the snippet for a dialog with extensionVolker Hilsheimer2024-01-112-0/+6
| | | | | | | | | | | | | | Add the setting of the layout's size constraint to 'fixed' back to the snippet, so that the dialog automatically resizes when the extension gets hidden. The user won't be able to resize the dialog, but allowing the user to resize the dialog and to show and hide the extension anyway leads to unpredictable results for the user. Amends 11da92ba94570e5eec01597fe09f0a9a48acc677. Pick-to: 6.7 6.6 Change-Id: Ie74ca36eaa1a8e9567e0d5826f91f8633e5cbc05 Reviewed-by: David Faure <david.faure@kdab.com>