summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
* Fix QDockWidget's dock area permissions after hoveringAxel Spoerl2022-03-111-2/+12
| | | | | | | | | | | | | | | | | When a QDockWidget's dock areas are restricted by setAllowedAreas(...) and a second QDockWidget is hovered over it, the first QDockWidget can be docked to any dock area of the main window. Area restrictions will be ignored. That is due to the first QDockWidget being implicitely mutated into a QDockWidgetGroupWindow upon hovering. By definition, the latter has no docking restricitons. This fix adds a check if a QDockWidgetGroupWindow has a single QDockWidget child. In that case, the single child's area permissions will restrict docking. Fixes: QTBUG-100670 Pick-to: 6.3 6.2 5.15 Change-Id: I903b074739953791634f482c9cf4b9a95a1d93d3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QStyle: Fix cases when logicalValue is outside rangeRobert Löhning2022-03-101-2/+4
| | | | | | Change-Id: I410c40425d6677612dbe3a40cbaa1debba998064 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Widgets: use QPlatformTheme::ButtonPressKeys for pressing buttonsNoah Davis2022-03-093-39/+49
| | | | | | | | | QComboBox is included because it works like a button when it is not editable. QGroupBox is included because it has a checkbox and QCheckBox is a subclass of QAbstractButton. Change-Id: Iad89259314e77f78c915dce83ec601df94c88941 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QStyle: Fix overflows and crash when converting slider positionsRobert Löhning2022-03-091-7/+7
| | | | | | | | | Qt Creator crashes when max is INT_MAX and min is -1, see bugreport. Change-Id: I441e76c0ff87052083ed3d77e6085b186402e5d8 Fixes: QTBUG-101581 Pick-to: 6.2 6.3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Miscellanea fixes for QT_TYPESAFE_FLAGS in our headersGiuseppe D'Angelo2022-03-071-3/+3
| | | | | | | | | | | | | | | | | | | | | In preparation for adding it to headersclean. Some remarks: * QStandardItemModel builds just fine (QFlags has comparison operators against literal zero); the warning we however get is about 0 converted to a null pointer constant. There's nothing we can do about that one (even <compare> gives such a warning). * Several code was depending on flags->int conversions. Add toInt(), but also cast again to the expected type to avoid warnings in case toInt() returns unsigned int. * Ported to explicit casts to bool rather than test(Any)Flag to minimize confusion for people unfamiliar with the test*Flag methods. Change-Id: I5be280ac33a0b38e2680096f0e79129fd55ba241 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QErrorMessage: fix deprecated warning about standardIconMårten Nordheim2022-03-051-1/+1
| | | | | Change-Id: Idf50c1b74fddfccded2003528181f81a7a0ca8ac Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QMessageBox: fix deprecated warning about using old ctorMårten Nordheim2022-03-051-1/+1
| | | | | Change-Id: Ib53962e3527e2703af5ff36ce2fd4bd5ea987d85 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix Q_FLAG declaration over enumerationsGiuseppe D'Angelo2022-03-022-2/+2
| | | | | | | | | | One should use Q_ENUM, not Q_FLAG, to mark an enumeration. Q_FLAG should go on the respective flag type. Change-Id: I16cd5c0d405c3db1951569b72805fdae18898c45 Pick-to: 5.15 6.2 6.3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QLabel: remove some dynamic allocationsGiuseppe D'Angelo2022-03-012-25/+21
| | | | | | | | | | | QLabelPrivate uses pointers and dynamically allocated objects as a form of optional. To add insult to injury, the objects are implictly shared, compounding the effects in terms of required allocations. Just use std::optional instead. Change-Id: Ica582dc0d2a9ab56f45ce305290541383b7ddeef Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QLabel::setPixmap(): remove the no-op self-maskingGiuseppe D'Angelo2022-02-241-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling QLabel::setPixmap() with a 1bpp pixmap (i.e. a bitmap), and that pixmap didn't have a mask set, QLabel would then set the pixmap as its own mask. This seems to be a no-op due to how QPixmap::setMask is coded: void QPixmap::setMask(const QBitmap &mask) { // ... if (static_cast<const QPixmap &>(mask).data == data) // trying to selfmask return; } Moreover, in order to convert the pixmap to a QBitmap, the code would just straight downcast it, triggering UB (if the input to setPixmap wasn't a QBitmap to begin with). I *guess* this was done this way to avoid a QBitmap::fromPixmap call, which however is not expensive at all if the pixmap is already 1bpp, which QLabel::setPixmap checks explicitly (before attempting to mask the pixmap). I don't know the historical reasons for the code to have the shape it had (and the code history is from before open governance). So get two birds with one stone: remove the no-op and also the UB. Change-Id: Ibab20492c2945bd1d01f98a18b168fabc56292b0 Pick-to: 6.3 6.2 5.15 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Make sure all qtbase private headers include at least one otherThiago Macieira2022-02-241-0/+1
| | | | | | | | | | See script in qtbase/util/includeprivate for the rules. Since these files are being touched anyway, I also ran the updatecopyright.pl script too. Change-Id: Ib056b47dde3341ef9a52ffff13ef677e471674b6 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QColorDialog: code tidiesGiuseppe D'Angelo2022-02-241-1/+1
| | | | | | | | Combine two flag-like enumerations using a bitwise OR, not a plus. Cleanup for the follow-up commits. Change-Id: Iceb05bf5ea0635d623ba9a7d145606e80b7f21f3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Implement QFormLayout::set/isRowVisibleVolker Hilsheimer2022-02-242-7/+200
| | | | | | | | | | | | | | | | | | | | | | | Hiding a row in a form layout is inconvenient to do as access to the widgets in each row is cumbersome. In addition, a row might include a layout for the label or the field column, and we can't hide layouts and instead need to navigate to the widgets inside the layout. And even if an application developer does all that, the spacing calculation doesn't ignore hidden rows. Add setRowVisible and isRowVisible APIs with the usual overloads. Implement the logic to traverse a layout item to its contained widgets, so that they are explicitly hidden when a row is hidden, and skip hidden rows in the spacing calculation. [ChangeLog][Widgets][QFormLayout] New APIs setRowVisible and isRowVisible to hide and show rows in a form layout. Fixes: QTBUG-6864 Change-Id: I6af98409802f331c4523e91d7dac8a97762c579d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Protect headers against min/max macrosMarc Mutz2022-02-221-1/+1
| | | | | | | | | | | | ... using the usual pattern, which, being idiomatic, doesn't need a comment explaining it. Pick-to: 6.3 Change-Id: Id6b12450495a18f89e1f83f2018b6218b03ff6a7 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QGuiApplicationPrivate::lastCursorPosition.toPoint() safe to useShawn Rutledge2022-02-221-1/+1
| | | | | | | | | | | | | | | | | | | QGuiApplicationPrivate::lastCursorPosition is initialized with qInf(); so before Qt has seen a mouse move event, attempting to convert to QPoint is an error. It's best to have one place where we do the qIsInf() check rather than several (and otherwise prefer using the QPointF as-is rather than converting to QPoint at all). Introduce a helper class that contains a QPointF, and provides a safe conversion to QPoint, as well as simple accessors for clients using QPointF. Fixes: QTBUG-52472 Task-number: QTBUG-45045 Change-Id: I83fad1bfb658e03fa876344552f1d5bb751d9f81 Pick-to: 6.2 6.3 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Document change to style sheet selectors for enum propertiesVolker Hilsheimer2022-02-201-0/+21
| | | | | | | | | | | | | | The change is presumably an unintentional side effect of QVariant and QMetaType system changes in Qt 6, but it arguably is a good change. Document it in the porting guide, while evaluating whether (and figure out how) we want to support integer values as well. Pick-to: 6.3 6.2 Task-number: QTBUG-99642 Change-Id: Id1589c594bcdc2afe5c4fd0e47a158cd5e03e52f Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Ensure QMainWindow has WA_TranslucentBackground when using unified toolbarTor Arne Vestbø2022-02-181-1/+8
| | | | | | | | | | | | Otherwise the QWindow will not end up with a surface format with an alpha. This issue had been hiding in the shadows because we hard-code the backing store image format to include an alpha, but was discovered when trying to use RHI to flush the backing store, which does respect the window format. Pick-to: 6.2 6.3 Change-Id: Ie2b28ca605fc7aa1b1ed22885c8f56e76d3a0305 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Eliminate double arrow in QToolButtonAxel Spoerl2022-02-161-4/+12
| | | | | | | | | | - InstantPopup mode is set and - application uses a stylesheet that does not apply to QToolButton Task-number: QTBUG-100401 Pick-to: 6.3 6.2 Change-Id: Iadf752ad9280d59763f4efc1938927a9b83e6ad9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Position QCompleter popup based on the widget's screen geometryYin Jie2022-02-151-1/+1
| | | | | | | | | | | | | | | | | | If adding a QLineEdit to a QGraphicsScene as a QGraphicsProxyWidget, the popup completion of that QLineEdit is drawn in the wrong location. When the completer getting the rect of screen, it gets the rect of the QGraphicsScene where QLineEdit is located rather than the rect of the screen, resulting in an error in the following calculation. Note that as long as the completer popup is a toplevel widget not parented to the target widget, it will not be automatically embedded into the graphics view via QGraphicsProxyWidget. So with multiple views for a scene, or in views that use transformations, the geometry will still be off. Pick-to: 6.3 Task-number: QTBUG-20531 Change-Id: If5d8a707ca35a9e4709117b077978145c6143e46 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Core: Remove 'properties' featureKai Köhne2022-02-146-42/+4
| | | | | | | | | | | | | Even QtCore alone cannot be built without the properties feature since Qt 5.5. While fixing this is easy, other modules like dbus, networking are also using QObject::property() and friends liberally. All in all I doubt that anybody will miss the feature (otherwise it would have been fixed in the last decade). Change-Id: Iaf3cc20bda54ee2ff3b809fac8fa82b94ecc88c0 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QMdiSubwindow: respect minimum size of subwidgets when shown maximizedChristian Ehrlicher2022-02-111-1/+8
| | | | | | | | | | Size a QMdiSubWindow is no real toplevel widget, QLayout::activate() did not properly set the minimum size based on it's children. Fix this by treating a QMdiSubWindow as a toplevel widget during the calculation. Fixes: QTBUG-100494 Change-Id: Ia2e6c519c7214c36383facd244711bd932231d40 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QPlainTextEdit: fix the visibility of placeholderTextQiang Li2022-02-113-6/+5
| | | | | | | | | | | If one calls setPlainText("") before setting a placeholder text, the placeholder visibility is not updated, and the placeholder is not visible. Fix it by updating placeholderVisible properly. Fixes: QTBUG-96212 Pick-to: 5.15 6.2 6.3 Change-Id: I1bd3f0cb4c59973a847bcf3787e35d7c17b6d673 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Always update pressedPosition when drag was enabledZhang Hao2022-02-101-12/+13
| | | | | | | | | | | | | | | | | | | | | | | Since e02293a76d21e7077f1952d4ed8af6c6d1970190 and 2e0c29a4bbe2b3ae427137e65f179b0550dcf169 was committed, If a item width more than others,the selectionRect.x() always consist of currentStartSelection item's rect.center().x(),this will cause selectionRect size is not right. Because the code of 2e0c29a4bbe2b3ae427137e65f179b0550dcf169 is to fix the new bug introduced by e02293a76d21e7077f1952d4ed8af6c6d1970190, we need to use a better way to solve QTBUG-78797. When itemview enable drag,we need always update pressedPosition because pressedPosition was used to determine the drag distance, otherwise keep previous logic. Fixes: QTBUG-78797 Fixes: QTBUG-81542 Fixes: QTBUG-99512 Pick-to: 6.2 6.3 Change-Id: Ibc5020e35b0eb319e4b5546bdba39ff527c209a6 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* qtextstream.h: streamline includesFabian Kosmale2022-02-101-0/+1
| | | | | | | | | | | [ChangeLog][Potentially Source-Incompatible Changes] The qtextstream header no longer includes <QString>, <QStringEncoder> and <QStringDecoder>. Code which relied on the implicit inclusion of those classes might now need to include the headers explicitly. Task-number: QTBUG-97601 Change-Id: Ifb8c8452026195a772c0588dbbbc53fb51cac548 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Reduce qaccessible includesFabian Kosmale2022-02-092-1/+7
| | | | | | | | | | Forward declare some types in qaccessiblewidgetfactory_p.h instead of including qaccessible.h. In turn, qapplication.cpp which relied on transitive includes now needs to include qaccessible_base.h. Change-Id: I8ac00d45a7ffccd84769fb210f29364a45bcd59e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Widgets: Do not include qundogroup.h, qundostack.h in QtWidgets headerKai Köhne2022-02-092-0/+10
| | | | | | | | | | | The headers are already included in QtGui/QtGui. This also fixes an issue when compiling with the respective features disabled. Pick-to: 6.2 6.3 Fixes: QTBUG-100290 Change-Id: I5e7c6578952535315bacde218a26d2133c486b2c Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add a QHoverEvent ctor taking global mouse position; deprecate the otherShawn Rutledge2022-02-031-9/+9
| | | | | | | | | | | | | | | | | The QSinglePointEvent ctor assumes that the given globalPos is correct, so it was wrong that the QHoverEvent ctor passed along a local position as global. It's better to require globalPos as an argument; and in fact it seems that everywhere we construct a QHoverEvent, global position is available, or possible to get by transformation (which is better than resorting to QCursor::pos()). Also, don't convert to QPoint: pointer events have qreal resolution and there's no reason to truncate them. Fixes: QTBUG-100324 Change-Id: I919455da36265988d3d149eb97563c9ed0d2c660 Pick-to: 6.3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QAbstractItemView: do not access invalid model indices (3/N)Giuseppe D'Angelo2022-02-021-7/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | The slots connected to rowsAboutToBeRemoved and columnsAboutToBeRemoved attempt to find a new current index by scanning the model around the existing current index -- in case that index is indeed about to be removed. The problem is that the scanning was done without any sorts of bounds checking; instead it was relying on the model's index() to return an invalid index for an out of bounds request. Fix that by adding bounds checking. Since models are not supposed to return invalid indices for in-bounds index() calls, added some warnings if that happens. For some reason, the code handling rows and columns isn't perfectly symmetrical. Rows are searched both forwards and backwards, while columns only backwards, and the related code is slightly different. Filed QTBUG-100273 to try and understand what's going on. Change-Id: I7452d8c521e74daa4408e6cc969ce5a6059f53ea Pick-to: 5.15 6.2 6.3 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Stylesheet: Fix tab layout when tab has a font and iconsVolker Hilsheimer2022-02-021-6/+18
| | | | | | | | | | | | | | | | | | | | | | | Amends e3b2b12a912361af309302a4b1fc27c2206322af, which made the style sheet calculate the font-dependent text size, but didn't add the space needed for the close button or a tab icon. QTabBar's layout code already adds the space needed for icons and margins to the size; so instead of overwriting that size, subtract the size needed by the normal font, and then add the size needed for the font form the style rule, considering both vertical and horizontal tab bars. Fix the test case to style only one tab rather than the entire tab bar, otherwise the font is applied to the entire tab bar, and not just to a specific tab, which is the style sheet style code in question. Pick-to: 6.2 6.3 Task-number: QTBUG-6905 Change-Id: Ieed0ba146a32e81229419adecaf41f467cfd5959 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QGuiApplication: invert meaning of qt_is_gui_usedMarc Mutz2022-02-022-5/+5
| | | | | | | | | | | | | | | | | | The default value was true, which is non-zero, forcing the variable out of the BSS and into the DATA segment. Fix by inverting the meaning so the default value can be false. Since qt_is_gui_unused sounds a bit complicated, however, take a cue from the variable's only writer and rename it qt_is_tty_app. Pick-to: 6.3 Change-Id: I198e9786f7e71178d69fecb5179287bf39b3a1d6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QAbstractItemView: do not access invalid model indices (2/N)Giuseppe D'Angelo2022-02-011-0/+2
| | | | | | | | | Similar to the parent patch, the private selectAll() was doing two out of bounds accesses on an empty model. Guard it. Change-Id: If0f3ce1e6c44a152791313e47db79985e71ef955 Pick-to: 5.15 6.2 6.3 Reviewed-by: David Faure <david.faure@kdab.com>
* QAbstractItemView: do not access invalid model indices (1/N)Giuseppe D'Angelo2022-02-011-1/+2
| | | | | | | | | | Calling selectAll() on a view with an empty model, with the view in ContiguousSelection, causes an out of bounds access into the model. Guard the access. Change-Id: I3830a979bad760e9e1526c1c8b12d9767d41fc99 Pick-to: 5.15 6.2 6.3 Reviewed-by: David Faure <david.faure@kdab.com>
* QAbstractItemView: code tidiesGiuseppe D'Angelo2022-02-011-4/+12
| | | | | | | | | In preparation for an upcoming fix, refactor an if over an enumerator to a switch (which is how this code should've been to begin with). Change-Id: I11a2de6d66f0359b985b587b7fd37022a7bf56e6 Pick-to: 5.15 6.2 6.3 Reviewed-by: David Faure <david.faure@kdab.com>
* Make one QT_REMOVED_SINCE/QT_BUILD_REMOVED_API per moduleMarc Mutz2022-02-014-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A single global QT_REMOVED_SINCE will start hurting us once more modules downstream of QtCore start using the mechanism. With every use of feature, the set of code that needs to compile under QT_BUILD_REMOVED_API increases. Since we use QT_REMOVED_SINCE in situations where overloading the new and the old function don't work in general, this means all code included by any removed_api.cpp needs to be very carefully written to ensure that any calls to the overload set formed by the combination of old and new function(s) don't create ambiguities. Likewise, the set of APIs that change semantics under QT_BUILD_REMOVED_API also increases. At some point, the combination of removed_api.cpp including almost every module header and almost every header exposing source-incompatibilities when included in removed_api.cpp will make maintenance a headache. By making QT_REMOVED_SINCE and QT_BUILD_REMOVED_API per-module (QT_CORE_REMOVED_SINCE, ...), easy now that we generate the export macros using CMake, we limit the scope of this problem to the module using the feature. Downstream modules (say, QtWidgets) will now see the QtCore API like every other user, even in the widgets/compat/removed_api.cpp TU. Pick-to: 6.3 Change-Id: I177bc7bd5aa8791639f97946c98e4592d2c7f9d9 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QTableWidgetSelectionRange: make relational operators noexceptMarc Mutz2022-01-211-4/+4
| | | | | | | | Also remove the superfluous inline keyword. Pick-to: 6.3 Change-Id: I2cd2fc46687626a6f9eab60553bc3022c7eed6de Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix version in which SH_Table_AlwaysDrawLeftTopGridLines was addedVolker Hilsheimer2022-01-211-1/+1
| | | | | | | | | Since it shows up as a new enum value in the 6.3 header review, it's reasonable to assume that it was added for 6.3. Pick-to: 6.3 Change-Id: If766ef56f3354644fbda09088514e55b28a44f32 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* QTabBar: Improve scrolling with high resolution mouse wheelsNoah Davis2022-01-202-2/+17
| | | | | | | | | | | | | | | | | | | | | The current behavior for handling the angle delta of a wheel event changes index the instant there is a change in angle delta. This works fine for mouse wheels that send events with 120 angle delta units and there is also already behavior defined for devices with pixel deltas, but there is nothing good for handling events from high resolution mouse wheels that don't have pixel deltas. This patch makes it so that the current index doesn't change until the accumulated angle delta for the X or Y axis reaches 120. [ChangeLog][QtWidgets][QTabBar] Scrolling with a high resolution mouse wheel changes the current index at a rate more like a normal mouse wheel. Task-number: QTBUG-97844 Pick-to: 6.3 Change-Id: I2e7fd88984a253f6ef8a0008deb7233e4cb4d84a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Use QStylePainter when painting widgetsMorten Johan Sørvig2022-01-205-11/+15
| | | | | | | | This makes it easier to set global painter options which affect all style painting. Change-Id: I6a38204ed2d874255e92345e6a6a50d27939fb24 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Doc: Remove "Docs about UI Design" book overviewKai Köhne2022-01-192-81/+4
| | | | | | | | | | | | | | Recommending a Qt 4 book in Qt 6 documentation tells us something about how much we maintain the list :) The other books might still be good sources. Anyhow, the chances of a customer looking exactly in this place to learn good books about icons are not very high. So let's just ditch the page, and use external links instead. Pick-to: 6.3 Change-Id: I8013a5ab9d3416fe795f4aaed647e26db79508a1 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
* Remove unused .qrc filesJoerg Bornemann2022-01-172-184/+0
| | | | | | | | Task-number: QTBUG-94446 Change-Id: I136d8b4ab070a832866aa50b5701fc6bd863df8a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QFusionStyle: don't draw an invalid outline for up/down buttonsTimur Pocheptsov2022-01-171-20/+24
| | | | | | | | | | When they are disabled ('NoButtons'). Otherwise, we end up with a tiny dot (top left or right corner of a spinbox). Pick-to: 6.2 6.3 5.15 Fixes: QTBUG-99486 Change-Id: Ic99f4bce2abd57c988254296a749b5d5b23cfb39 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Doc: Remove mentioning of Fowler bookKai Köhne2022-01-1718-36/+17
| | | | | | | | | It is out of print since years, and probably quite dated by now (released 1997). Pick-to: 6.3 Change-Id: I1653eb404713c15d70b8a15858e8c7d12b2e71cb Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* QCSS: Support Qt 5-style integer property selectorsVolker Hilsheimer2022-01-151-20/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Qt 5 style sheets, objects could be selected by an enum-type property using the integer value of the enum value, e.g QToolButton[popupMode="1"] { ... } In Qt 6, the the new meta type system and QVariant implementation enabled QVariant::toString to return the string representation of the enum value instead for a property containing an enum. Since QStyleSheetStyle's attribute matching is string based, this breaks the Qt 5 style selector, and QCSS code instead needs to use e.g. QToolButton[popupMode=MenuButtonPopup] { ... } While the new syntax is arguably preferable, this is an unintentional change that silently breaks style sheet code (no error or warning at compile- or run-time). To support Qt 5-style selectors, we have to change the StyleSelector interface of the QCssParser API so that we can pass through what type of value the attribute extractor should return; if an integer string "1" is provided, then we need to compare the enum integer value; if the string provided does not represent a number, then we need to compare the name of the enum value. Since the pure virtual attribute() method that needs to be implemented to extract the attribute value of the node is implemented in modules outside qtbase, add a second virtual method that takes the entire QCss::AttributeSelector, which includes the value to match. Extractor implementations can use it to evaluate which type of data to return for an exact match. The default implementation calls the old attribute() method so that existing StyleSelector implementations continue to work. Make the respective change in the QStyleSheetStyleSelector, and simplify the surrounding code. Adjust other StyleSelector implemnentations in qtbase. As a drive-by, remove the superfluous virtual declaration from those overrides. Once submodules are adjusted to override this virtual function instead of the (now no longer pure) virtual attribute() method, that method can be removed. Pick-to: 6.3 6.2 Fixes: QTBUG-99642 Change-Id: I9a2b3498f77bf7cab5e90980b7dab2f621d3d859 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix Pick Screen Color with multiple monitorsFawzi Mohamed2022-01-151-1/+3
| | | | | | | | | | | QScreen::grabWindow expects screen coordinates, not global ones, use QScreen::geometry() to compute them. Fixes: QTBUG-99472 Pick-to: 6.2 6.3 Change-Id: Ic4b99577b8cb394e6cd0a2d3f554bb3ec8250afa Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Zhang Hao <zhanghao@uniontech.com>
* Don't include qeventpoint_p.h from qevent_p.hMarc Mutz2022-01-144-0/+4
| | | | | | | | | | | The header no longer uses QMutableEventPoint. Fix TUs that relied on the transitive include. Task-number: QTBUG-99615 Pick-to: 6.3 Change-Id: Iae4ff34ea708304fcd365fd763875dd4a97a1cf8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Port the last user of QMutableSinglePointEvent::mutableEvent()Marc Mutz2022-01-141-1/+1
| | | | | | | | | | | ... to the static setters of QMutableEventPoint. Remove the mutableEvent() function. Task-number: QTBUG-99615 Pick-to: 6.3 Change-Id: If4d3decae67baff41e23e7e9eaed3f3035fab595 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Don't return an associated screen for embedded widgetsVolker Hilsheimer2022-01-131-0/+5
| | | | | | | | | | | | | | | Widgets embedded in a graphics view via QGraphicsProxyWidget don't have an associated screen, even though they are top level windows in the widget hierarchy. Their screen has to be based on the screen of the toplevel widget they are embedded in. This fallback is taken care of by QWidget::screen already. Task-number: QTBUG-20531 Pick-to: 6.3 Change-Id: I77af092b2f8e6322662499be464eec40cfd9ac1c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QApplication: port manual users of QMutableEventPointMarc Mutz2022-01-131-2/+2
| | | | | | | | | | | | | | ... to new static setter API, which doesn't depend on undefined behavior. These users didn't use QMutableEventPoint::from(), but static_cast<>, so they were only found when the non-static setters were removed, locally. Task-number: QTBUG-99615 Pick-to: 6.3 Change-Id: I37faf17b2b180e0f6e8bb4e5f46951a2cc29678d Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QRollEffect: Remove assignments that have no effectIvan Tkachenko2022-01-131-2/+0
| | | | | | | | | | | Value of the member variable `done` will be overwritten after the end of each `if` block. Pointed out by PVS-Studio static analysis tool: https://habr.com/ru/company/pvs-studio/blog/542760 Change-Id: Icaf965aaebfa8a238dd3569689e1496a30d4b6d1 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QStyle docs: Use since enum attributeKai Köhne2022-01-121-30/+16
| | | | | | | | | Use the explicit [since ...] instead of plain text to mark when new enums were introduced. Pick-to: 6.3 Change-Id: I13655931c91a509fa64cd545b49c517e975d4cc7 Reviewed-by: Marc Mutz <marc.mutz@qt.io>