summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
Commit message (Collapse)AuthorAgeFilesLines
...
* QMessageBox: leave the Option's underlying_type as the default, intMarc Mutz2023-08-181-1/+3
| | | | | | | | | | | | | | | QFlags<Option> will anyway store the value in an `int`, so we gain nothing from choosing quint8 as the fixed type, except artificially limiting the number of possible future options to eight. Found in API-review. As a drive-by, put options one per line and add a trailing comma where possible. Pick-to: 6.6 Change-Id: I0ed588ea6c7912e50705af89c47e2cf7e2ee23a0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Rename accent color in QPaletteSanthosh Kumar2023-08-183-15/+15
| | | | | | | | | | Accent color role has been renamed according to name rule of other color roles in QPalette. Fixes: QTBUG-116107 Pick-to: 6.6 Change-Id: I70ac98a1e97afbdc7ea5f8d79f808c307e170712 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Don't keep around old dirty region when entire window is invalidatedTor Arne Vestbø2023-08-071-1/+1
| | | | | | | | | | | | | | | | QPaintDeviceWindowPrivate::markWindowAsDirty() is used to signal that the entire window needs repaint, for example when the window is being resized. If multiple resize events come in before we have a chance to redraw the window, we'll end up redrawing the window based on the window's current size and exposed region, as we should, but we'll still have a dirty region, because we didn't redraw the window at any of its old (larger) sizes. Resetting the dirty region instead of appending to it should be enough. Pick-to: 6.6 6.5 Change-Id: I37443cc1044779f847348a2303a6cebc1a8f3bcb Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* QMutableEventPoint::update(): update the touchpoint uniqueId tooShawn Rutledge2023-08-041-0/+1
| | | | | | | | | | Most touch events don't have uniqueIds, but it happens with TUIO fiducial objects. Fixes: QTBUG-115758 Change-Id: Ibacce255898ce63090bc5b888c12242838603dd5 Pick-to: 6.5 6.6 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Fix link to platform window in QAndroidPlatformBackingStore::flush()Axel Spoerl2023-08-041-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Android QPA implementation requires a 1:1 link between a platform window and a platform backing store, to correctly flush a backing store to the screen. QAndroidPlatformBackingStore has a bool member m_backingStoreSet, to remember if this link exists. It defaults to false and is set to true, when setBackingStore() is called in the constructor. It falsely remains true, when a platform window is deleted, e.g. because a QWindow has been hidden. When the QWindow is shown again, a new Android platform window is created. With m_backingStoreSet still being true, this new platform window will never be associated with a backing store. As a consequence, it will never be displayed on the screen. The 1:1 relationship of an Android platform window and an Android backing store is neither ideal, nor in line with other QPA layers (e.g. XCB). Changing the Android QPA implementation is complex and a short term fix is necessary. This patch removes the member m_backingStoreSet. Instead of it, QAndroidPlatformBackingStore::flush() directly checks, if the platform window corresponding to the QWindow argument is associated to a backing store. If that is not the case, setBackingStore() is called. QTBUG-97482 has been fixed with another approach, which this patch reverts. The following commits are effectively reverted by this patch: 9a39ad8dfb4e6d1a179bd0fa38026886f8f7cb8e f91588923b1e7b68f1bd79b38af44d024df85996 a4ca9e80658bca7dad1529f03c1b59173a6ecf62 dbb072eb2838a04e89e34dad686394a496d5de87 959a8b3967ac3b6315f5b458628ec5661dfc367e Fixes: QTBUG-97482 Pick-to: 6.6 6.5 6.2 Change-Id: Ic4344f8df2e954c057dd2705340f11dfd2d4c6fe Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QPlatformWindow: add a macro when setBackingStore() is virtualMarc Mutz2023-08-021-0/+1
| | | | | | | | | | | | | This is the only way to detect, and act upon, the addition of the virtual function in other Qt modules. Amends a4ca9e80658bca7dad1529f03c1b59173a6ecf62. Pick-to: 6.6 Task-number: QTBUG-97482 Task-number: QTBUG-115691 Change-Id: Id32fdd3d8af1fced17983dd104318645a5578b8c Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Return 0 in QWindow::winId in case of failed platform window creationWladimir Leuschner2023-07-271-0/+4
| | | | | | | Task-number: QTBUG-114613 Pick-to: 5.15 6.5 6.6 Change-Id: I93184d95f8f448ab115570a18cdb720449a0637d Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Implement virtual void QPlatformWindow::setBackingStore()Axel Spoerl2023-07-141-0/+2
| | | | | | | | | | | | | | | | | | QWidget re-uses an existing backing store. Platform windows depend on being associated to a backing store, in case they become toplevel windows. If a platform window gets deleted and re-created each time it is shown or hidden, it has to be manually associated to the re-used backing store. This patch partly reverts fbf0aeea7d3b38ced7a16fcd5c3e2e9b45536292. It removes Android specific code from QWidgetPrivate::create(), which has been added to suppress re-using backing stores in the absence of the new API. Fixes: QTBUG-97482 Pick-to: 6.6 Change-Id: Iaa1b7652efa120ec1955914c0383e8ccd8a41429 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Move palette helper functions to QPalettePrivateOliver Eftevaag2023-07-112-50/+75
| | | | | | | | | | | | We want to use the bitPosition function in Qt Quick, in order to be able to unset a bit in the resolve mask for a specific color group and role. This patch, solves this by adding a new qpalette_p.h header, which declares QPalettePrivate, allowing those helper functions to be accessed anywhere internally in the qt framework. Change-Id: Iecb28b48289d6bcabf0936274964a05d3c44efc0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Gui: include mocsMårten Nordheim2023-07-071-0/+2
| | | | | Change-Id: I915071413b05884e61cfad4924a29b0269fab310 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QPlatformWindow: Add missing includesMårten Nordheim2023-07-071-0/+2
| | | | | | | | | | | | | | | | 1. QObject For ifdef Q_OS_UNIX we inherit from QObject but it's not included anywhere, only implicitly defined! This was compiling before because the moc file was compiled together with _another_ moc file that _did_ include QObject. 2. QWindow For QT_DECLARE_NATIVE_INTERFACE we need to have QWindow included. Change-Id: I5fc0c2d52cb23ee0b2a884178e9115b19e77bf41 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Remove references to Application ExampleAxel Spoerl2023-07-061-4/+2
| | | | | | | | | Removing dangling references to the example due to its move to manual tests. Pick-to: 6.6 6.5 Change-Id: I13f5fad93763d1ef70ddd8b3dcf430b5df8e28f9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix build with -sanitize undefinedTor Arne Vestbø2023-06-261-1/+1
| | | | | | | | | Fixes: QTBUG-114865 Pick-to: 6.5 6.6 Change-Id: If21f0faa8aacc84745c972438c2e30940716fb66 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Fix disabled and inactive group palettes for windows native styleSanthosh Kumar2023-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | The dark mode related changes for windows didn't update disabled and inactive group palettes, and this makes text in certain context (such as menu bar) appear with enabled color. The windows theme API populateLightSystemPalette() is responsible for this and it updates palettes for color roles and certain inactive scenarios but not for disabled. This patch set makes existing systemPalette(Qt::ColorScheme) to be available in QWindowsTheme and it updates palette depending on color scheme. From now on, this API updates palettes for windows native style. Its to be noted that window native style use light palette irrespective of color scheme. Fixes: QTBUG-114821 Pick-to: 6.5 6.6 Change-Id: Iff4f35900293b8e7030ec121ca21856daa094dc0 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Set color scheme after handling theme change in windowsSanthosh Kumar2023-06-212-3/+4
| | | | | | | | | | | | | | | | | | | | | | Setting color scheme before handling theme change provides incorrect palette color when user switches from light to dark or dark to light. This is visible when using Fusion style (or other style that supports dark mode) in Windows. The change has been made as part of patchset 787038bb1d282b4d6c5c040d8e902ccac9befb41. It also has to be noted that handling palette changes to make further changes to the palette (or the style sheet), is less likely than Handling the colorScheme change signal and in this sense, this patch set can also be considered as an improvement. This patchset reverts that change and updates color scheme after palette change in the application. [ChangeLog][QtGui][ColorScheme] Update colorScheme property after palette change. Fixes: QTBUG-112653 Pick-to: 6.5 6.6 Change-Id: I71bc413c56663fefdf9fe5871bbb19b7e6c3d9ff Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Show decimal device IDs in QInputDevice qDebug outputShawn Rutledge2023-06-202-2/+2
| | | | | | | | | | | | The lack of 0x adornment made hex confusing. `xinput list` shows device IDs as decimal, and device IDs appear in decimal in some categorized qt.qpa.input.devices log messages, so let's be consistent here too. Also fixed one more that was inconsistent in that category: "scroll event from unregistered device <x>" Change-Id: I98a39b30b1bc030611d3cfe9dd5e95886faf48ff Pick-to: 6.5 6.6 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* xcb: Use QWSI::handleTabletEnterLeaveProximityEvent(.. QPointingDev* ..)Shawn Rutledge2023-06-201-0/+2
| | | | | | | | | | | | | | | | | | | We want to pass the QPointingDevice* because we've already identified it by its "system ID" (xinput device number). The other versions of handleTabletEnterProximityEvent and handleTabletLeaveProximityEvent try to identify the stylus by only its deviceType, pointerType and unique ID, which can go wrong if there are multiple tablet devices and the unique ID is not provided (as with N-trig and Wacom tablets being used at the same time). Anyway this fixes a TODO comment from 6589f2ed0cf78c9b8a5bdffcdc458dc40a974c60 Leave a "deprecated" comment by the QWSI functions that should not be used. Pick-to: 6.6 6.5 Task-number: QTBUG-104878 Change-Id: Id9f19c60b54b7900b02d5f87b5d12f9a9189721d Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Update QIconLoader system theme names on QWSI ThemeChangeIlya Fedin2023-06-151-0/+2
| | | | | | | | | | | | | | | | | The GTK platform theme (and possibly others) emit theme change when the named icon theme changes, but that was not propagated to QIconLoader. We now call QIconLoader::updateSystemTheme(), but note that if a user theme has been set we ignore the system theme update and will end up with a stale value, even if the user theme is later cleared. This will be fixed in a follow up commit. Pick-to: 6.6 6.5 Change-Id: I40b537f3618f44d396db0c7ca67e515dfcdfba44 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Doc: Fix documentation issuesTopi Reinio2023-06-091-1/+1
| | | | | | | | | | | | | | | | The Qt Widgets Application example was moved to manual tests, and no longer contains the snippet identifiers. Fix \snippet and \quotefile commands to quote similar code snippets from other examples or snippet files. Fix also the following documentation warnings: * No such parameter 'parsingMode' in QUrl::fromEncoded() * Missing image: rsslisting.cpp Pick-to: 6.6 6.5 Change-Id: Ibc989e83abc49837db08628facaf8e5f72b2f123 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Align QKeySequence behavior between macOS and iOSTor Arne Vestbø2023-06-081-43/+43
| | | | | | | | | | | | | | | | | | External keyboards for iOS/iPad devices have the same Macintosh based keyboard as Macs have, with Command (or Cmd) ⌘; Option (or Alt) ⌥; and Control (or Ctrl) ⌃ keys. We were already declaring the QPlatformTheme::KeyboardScheme as MacKeyboardScheme on iOS. [ChangeLog][iOS] Keyboard shortcuts now follow the same scheme as on macOS, with their native representation expressed via the ⌘, ⌥, and ⌃ modifiers. Use Qt::AA_MacDontSwapCtrlAndMeta to override this. Pick-to: 6.6 Fixes: QTBUG-113165 Change-Id: Ia1856ee1718dab9f2f2512ffffc8b4d3cc5adecc Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QPalette Fix documentation typoAxel Spoerl2023-06-081-1/+1
| | | | | | | | compliments -> complements Pick-to: 6.6 Change-Id: I5457582299d9cd7d39c8f17ad445cdb796bc8e59 Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io>
* Add flag to hide eye dropper button from QColorDialogFabio Falsini2023-06-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | There are cases where this eye dropper control is useful and other cases where it is useless. In case of an application connected with graphics it's useful because it allows to select a precise color in a very simple way. But in the case of a simple app where the user only has to choose a color for, example, a graph this control is useless and risks confusing the user (this kind of control is only present in graphics software, not all "normal" users know what it is for or understand its use). This patch add a flag to hide the button. As a drive-by change, the internal screenColorPickerButton pointer is renamed to eyeDropperButton to be more consistent with the qml ColorDialog. [ChangeLog][QtWidgets][QColorDialog] Added a NoEyeDropperButton option to hide the eye dropper button. Change-Id: Ib29d5343383af97c1f488f9e33749517181aead7 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Misc.: fix narrowing conversion warnings with explicit cast to intAhmad Samir2023-06-052-3/+3
| | | | | | | | | | | | | And using qsizetype in some places. ::pathconf() returns long. Found by using -Wshorten-64-to-32 clang compiler flag, or adding that flag to the flags clangd uses. Change-Id: I9f9abd3d4d6fe73f525eec869ceabc799317f3d6 Pick-to: 6.6 6.5 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Misc.: fix narrowing conversion warningsAhmad Samir2023-06-052-5/+7
| | | | | | | | | | | | | | | | Using: - range-for and iterator-based loops - QList constructor that takes a pair of iterators Found by using -Wshorten-64-to-32 clang compiler flag, or adding that flag to the flags clangd uses, e.g. adding this to clangd's config file (see https://clangd.llvm.org/config): CompileFlags: Add: [-Wshorten-64-to-32] Pick-to: 6.6 6.5 Change-Id: I13ae65e09ab59a59f9e5c189ea27e4e16527df2d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Move widgets Application example to manual testsAxel Spoerl2023-06-041-4/+0
| | | | | | | | | | | | | With 6e77da640aa84c1efe330d4a5224c9c7425ece57, the documentviewer demo's TxtViewer plugin has been fully documented in order to replace the Application example. This patch moves the application example to manual tests. Pick-to: 6.5 Change-Id: I67d975e478c7bc840613c8af1301a4eafe8f1a42 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Only consider QScreen virtual siblings that have been addedTor Arne Vestbø2023-05-311-2/+5
| | | | | | | | | | | | | | | | | If a platform builds up a list of QPlatformScreens, and then adds them incrementally, while at the same time implementing virtualSiblings in QPlatformScreen to return the full list of screens, the virtual sibling QScreens will contain nullptrs for each non-added screen. It could be argued that this is the fault of the platform plugin, since it's reporting a virtual sibling that it hasn't added yet, but we can easily work around it in QScreen as well. Fixes: QTBUG-113977 Pick-to: 6.5 Change-Id: I4b9472646a5cc10b6fd35c606e3ae15941da1587 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QGuiApplication: Remove .desktop suffix in setDesktopFileNameVlad Zahorodnii2023-05-301-0/+10
| | | | | | | | | | | | | | | The desktop file name should not contain ".desktop" suffix, but some applications still specify it anyway because of the ambiguity in the documentation that was fixed in 0c5135a9dfa6140d23d86b001c3054891c22dcb9. This change makes setDesktopFileName remove ".desktop" suffix so desktopFileName always returns a desktop file name with correct format and its users don't need to chop ".desktop". Pick-to: 6.5 Change-Id: If5abccaf3bf976449cada8891fff887870e45b5f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Doc: use [since] tag for enum values added in Qt 6.6Volker Hilsheimer2023-05-261-2/+2
| | | | | | | | | Remove the manual "This enum value has been introduced..." text. Doing that only for 6.6 to avoid unnecessary cherry-pick conflicts and general code churn. Change-Id: I89a6fd313582fd0c5d6209608a3740f19f91bd01 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* doc: Reduce expectations for QInputDevice::devices()Shawn Rutledge2023-05-231-0/+7
| | | | | | | | | | | | | | | | I was hoping we could get the list mostly correct and complete on most platforms; but in practice, it's proving difficult on most platforms. Hopefully we can find ways to improve it over time. Task-number: QTBUG-101648 Task-number: QTBUG-101875 Task-number: QTBUG-112432 Task-number: QTBUG-113706 Task-number: QTBUG-113711 Change-Id: I16b6900cddb54197fb7b833a513e36996de72d51 Pick-to: 6.2 6.5 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Shoehorn AccentColor into QPalette and keep existing 64bit resolve maskAxel Spoerl2023-05-213-6/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is necessary to add an AccentColor role to QPalette. QPalette currently has 21 color roles and 3 color groups, which require 63 bits to resolve. The resolve mask is implemented with a qint64, which doesn't provide spare bits for another color role. The color role NoRole is used as a default value, marking that a role has not (yet) been defined. The enum value does not represent a valid brush, even though it can theoretically be stored in QPalette's shared data. This patch adds the enum value AccentColor to QPalette::ColorRole, increasing the available color roles to 22. To keep the resolve mask at 63 bits, AccentColor is mapped to NoRole in static constexpr bitPosition. As the enum range would exceed 64 bits without this tweak, 3 additional bits are substracted in the respective static assertion. With NoRole having no bit in the resolve mask, the following adaptions have been implemented: - QPalette::resolve() is adapted to explicitly ignore NoRole. - QPalette::isBrushSet() always returns false for NoRole. - tst_QPalette::setAllPossibleBrushes() to verify the latter - operator== ignores NoRole (documentation updated) AccentColor is added in tst_QPalette::roleValues and enum documentation is adapted. In QPalette's default constructor, the AccentColor brush is defaulting to the Highlight brush, it this is available. Otherwise it is made 30% darker or lighter than the Base brush, depending on dark/light mode heuristics. QPalette's data stram functions have been extended from QDataStream Version Qt_6_6. If earlier versions are de-serialised, the AccentColor defaults to Highlight. An autotest function dataStream() has been added to tst_QPalette. The QDataStream Version Qt_6_6 has been bumped to 21. tst_QDataStream has been adapted to the new version and the new color Role. Change-Id: I98bbf9de95fb83bda921e9614a0db3a3c0ebdf75 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* rhi: Make it a QPA-style private but semi-public APILaszlo Agocs2023-05-211-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qrhi.h, qshader.h, qshaderdescription.h (and qshaderbaker.h from shadertools; done separately) become "RHI APIs", following the concept of QPA APIs. Mirror completely what is done for QPA headers, but using the "rhi" prefix for the headers. This involves updating syncqt to handle the new category of headers. (a note on the regex: matching everything starting with "qrhi" is not acceptable due to incorrectly matching existing and future headers, hence specifying the four header names explicitly) There is going to be one difference to QPA: the documentation for everything RHI is going to be public and part of the regular docs, not hidden with \internal. In addition to the header renaming and adding the comments and documentation notes and warnings, there is one significant change here: there is no longer a need to do API-specific includes, such as qrhid3d11[_p].h, qrhivulkan[_p].h, etc. These are simply merged into a single header that is then included from qrhi.h. This means that users within Qt, and any future applications can just do #include <rhi/qrhi.h> (or rhi/qshader.h if the QRhi stuff is not relevant), no other headers are needed. There are no changes to functionality in this patch. Only the documentation is expanded, quite a lot, to eliminate all qdoc warnings and make the generated API docs complete. An example, with a quite extensive doc page is added as well. Task-number: QTBUG-113331 Change-Id: I91c749826348f14320cb335b1c83e9d1ea2b1d8b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Clarify documentation about QGuiApplication::setDesktopFileName formatDavid Edmundson2023-05-161-3/+3
| | | | | | | | | | | Whislt the documentation says "base name" there are lots of examples in the wild of clients using the wrong name here. Writing it explicitly might help. Task-number: QTBUG-75521 Pick-to: 6.5 Change-Id: Ic17ca161cf58449e85e25d9b6b8ace44fe14f18a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* qoffscreensurface.h: Add module to Q_MOC_INCLUDEFabian Kosmale2023-05-161-1/+1
| | | | | | | | | | | Depending on the build configuration, just using <QScreen> will not find the header. Pick-to: 6.5 Fixes: QTBUG-113619 Change-Id: Iaaf6f75ce82f8e32a1b1835614accd898b45824e Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* wasm: Add DOM accessors functions through NativeInterfacePiotr Wierciński2023-05-052-0/+13
| | | | | | | | | | | Expose document and clientArea emscripten objects through NativeInterface. This is required by WebView implementation for wasm platform. Task-number: QTBUG-75183 Change-Id: I6f2f084a9dbceb80d2186c7395c008f268a91e39 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
* QGuiApplication: Propagate wheel event accepted stateMorten Sørvig2023-05-021-0/+1
| | | | | | | | | | | | Propagate the accepted state from the QtGui event to the QWindowsSystemInterface event. This makes it possible for the platform plugins to propagate rejected wheel events to the native OS. Pick-to: 6.5 Task-number: QTBUG-107441 Change-Id: Ifa90ed2430e56120a1a04b6a5872a153d26aa6bc Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Allow disable native messagebox dialogThorbjørn Lund Martsum2023-05-022-0/+34
| | | | | | | | | | | | | | | | | | | | | | The native style may not match the program style and it makes sense to give an option rather than forcing native style. Before it could only be done with setting AA_DontUseNativeDialogs on the app, but it is reasonable to use native file dialogs and Qt styled messageboxes - and it is extremely cumbersome - especially since messageboxes often can start save dialogs. It can look a bit strange that these introduced options has just one option (DontUseNativeDialog) and four functions, but this way it works similar to QColorDialog, QFileDialog and QFontDialog. [ChangeLog][QWidgets][QMessageBox] Added options functionality to QMessagebox. The currently only option available is DontUseNativeDialog. Change-Id: I70282fcfaa66f245f7e679b8897c607bcaff333f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* macOS: Don't leak QEventDispatcherUNIX during event dispatcher creationTor Arne Vestbø2023-04-291-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During QCoreApplication initialization, we create the main thread's event dispatcher, which for a GUI app happens via QGuiApplicationPrivate's createEventDispatcher() override. This in turn relies on the platform integration to create the event dispatcher, but to do that it needs to create the platform integration first. And this might result in calling APIs that themselves initialize the main thread event dispatcher, such as QEventLoop, which non-lazily creates an event dispatcher for the thread. We already had a check to catch the platform integration setting the QCoreApplictionPrivate::eventDispatcher member, but not anything for checking the current thread data. On macOS this resulted in a leak of QEventDispatcherUNIX because QCocoaDrag contained a QEventLoop member. We now track the event loop temproarily via a pointer instead, like we do in other places. An alternative fix would be to defer the initialization of QCocoaDrag until QCocoaIntegration::drag() is called, but that would run the risk of something calling the function during platform initialization and we'd be back to the same problem. It's unclear why QEventLoop is not lazily ensuring the event dispatcher, and this might be a wider fix for similar issues. Pick-to: 6.5 Change-Id: I643010ddb09945936ce9b0b94de0df96f6fe218f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Doc: add darkmode=0 explicitlyTasuku Suzuki2023-04-281-1/+3
| | | | | | | Task-number: QTBUG-72028 Pick-to: 6.5 Change-Id: Ia73dbd4f203ce654e5221f69a65b8c82c2af7d79 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add more shortcutmap categorized logging outputMitch Curtis2023-04-271-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Show more detail about the checks made against each entry to show why a shortcut might not get delivered. Specifically, it's useful to know if the contextMatcher returned true. In the case of Qt Quick Controls, it can return false if the Shortcut is blocked by a modal popup, or a popup with a CloseOnEscape policy. With this patch, combining qt.gui.shortcutmap with qt.quick.controls.shortcutcontext.matcher makes it possible to see which popup blocks a shortcut. With only the former enabled, it's already quite useful: qt.gui.shortcutmap: Possible shortcut key sequences: QList(QKeySequence("Ctrl+N")) qt.gui.shortcutmap: - checking entry 0 QKeySequence("Ctrl+N") qt.gui.shortcutmap: - matches returned 2 for QKeySequence("Ctrl+N") QKeySequence("Ctrl+N") - correctContext()? false qt.gui.shortcutmap: - matches returned 0 for QKeySequence("Ctrl+N") QKeySequence("Ctrl+O") - correctContext()? false qt.gui.shortcutmap: Found better match ( QList(QKeySequence("Ctrl+N")) ), clearing key sequence list qt.gui.shortcutmap: Added ok key sequence QList(QKeySequence("Ctrl+N")) qt.gui.shortcutmap: Returning shortcut match == 0 qt.gui.shortcutmap: QShortcutMap::nextState(QKeyEvent(ShortcutOverride, Key_N, ControlModifier, text="N")) = 0 Change-Id: I6e96c94a8b62823553837eda3ef2764ca21775c4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QEvent: fix a narrowing conversion warningAhmad Samir2023-04-251-8/+15
| | | | | | | | By using an iterator-based for loop. Change-Id: I9ae12f16bc2a5c2d74c8557a0324438102fec5b1 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Misc.: Fix some narrowing integral conversion warningsAhmad Samir2023-04-258-22/+22
| | | | | | | Drive-by change: use QByteArrayView instead of allocating a QByteArray. Change-Id: Iaf7acbbdb4efbb101b73b30061ce38dd1fa99ca3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change to darkmode is prevented at runtine in VistastyleWladimir Leuschner2023-04-241-2/+1
| | | | | | | | | Task-number: QTBUG-112965 Task-number: QTBUG-113036 Pick-to: 6.5 Change-Id: I0049e68bbd8e83025f9f576dcd712d03206859d0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* Update QWindow DPR on screen DPI changeMorten Sørvig2023-04-111-0/+4
| | | | | | | | | | The window device pixel ratio may change when the DPI changes. Call the DPR update function, which will poll for the current value and update the cached value and send DevicePixelRatioChanged events if needed. Change-Id: I5d5ac5d24a693d06eb9b1f005a91677e703f8a58 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QWindow: Cache the devicePixelRatio valueMorten Sørvig2023-04-113-21/+28
| | | | | | | | | | | | | | Make each QWindow instance cache the current DPR value. This will make calling QWindow::devicePixelRatio() less costly, since it now does not have to compute the DPR value on each call. The cache is invalidated when the DevicePixelRatioChange event is sent. The common logic for handling this is implemented in QWindowPrivate::updateDevicePixelRatio(). Change-Id: I97231a230347358d8e565d2fd62e8a398adaedfc Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Cache null icons and remove them upon system icon theme changeAxel Spoerl2023-04-111-0/+3
| | | | | | | | | | | | | | | | | | | | | | Since Qt 6, qIconCache does not store null icons. In case an icon name lookup is unsuccessful, the (expensive) lookup is repeated each time. This patch reverts 9e7c5670509ac81efdf78b691e70e5ce3d408a09, which removes a null icon from the cache once it has been found in the cache. In fact, that could no longer happen due to 4dc7102c8410f5699af93b6c55ba1c7df7755bc2, which prevented null icons from being cached at all. Therefore, it is also reverted by this patch. The cache will be cleared when - the system icon theme name changes or - QGuiApplicationPrivate::processThemeChanged is called (e.g. due to a change of the system's color scheme) Fixes: QTBUG-112257 Pick-to: 6.5 Change-Id: I80cd21fa39dc31c4bae60a8e66e78d9da20e9b4b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Implement setBadgeNumber for xcb backendCarl Schwan2023-04-041-1/+2
| | | | | | | | | | | | This use the unity launcher specification which is defined here https://wiki.ubuntu.com/Unity/LauncherAPI This spec is used by Plasma and Unity. On other Linux desktop platform where the unity DBus interface is not detected this is no-op. Change-Id: I81a9b95fe4886ad597bb4e775641926b161c49a5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Make flatpak check more backward compatibleIlya Fedin2023-04-041-2/+2
| | | | | | | | | | Since 68de00e0d4f2c574162a6e033d41786e3757d25d, the check doesn't work with flatpak versions lesser than 1.13.1. Checking the file in the root directory works since flatpak 0.6.10. Pick-to: 6.5 6.2 Change-Id: Icc83ea5de4a962b52a737c9842248df3b60b1331 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QWSI: Remove handleFrameStrutMouseEvent in favor of handleMouseEvent+typeTor Arne Vestbø2023-03-312-74/+22
| | | | | | | | | | | | | | | The handleMouseEvent function already takes a QEvent::Type, where clients pass in the corresponding mouse press/release/move type. The same applies to the handleFrameStrutMouseEvent. To avoid the chance that clients call these functions with a conflicting event type (handleFrameStrutMouseEvent with MouseButtonPress instead of NonClientAreaMouseButtonPress e.g.), we remove handleFrameStrutMouseEvent altogether and just let clients use the handleMouseEvent function directly with the correct event type. Change-Id: I4a0241c39aedac0d2d8d5163ba05cde72605959c Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Doc: link to QWindow::requestActivate() in more placesMitch Curtis2023-03-312-0/+4
| | | | | | | | | Make it easier to find the function that actually gives focus to windows that need it. Pick-to: 6.5 Change-Id: I0586b89b42a1be260e36e166c81b686e394d8b5e Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
* Doc: Use \relates for functions in the global scopeTopi Reinio2023-03-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | This addresses the recent warnings introduced by a change to QDoc: qkeysequence.h:32: (qdoc) warning: No documentation generated for function 'qHash' in global scope. qmap.h:1557: (qdoc) warning: No documentation generated for function 'operator+' in global scope. qmap.h:1565: (qdoc) warning: No documentation generated for function 'operator+=' in global scope. qvariant.h:582: (qdoc) warning: No documentation generated for function 'operator>>' in global scope. qvariant.h:590: (qdoc) warning: No documentation generated for function 'operator<<' in global scope. Also, mark qt_win_hasPackageIdentity() declared in qfunctions_win_p.h as \internal. Pick-to: 6.5 Change-Id: Idc9c813370ff3133ac9dc3bf809976b0ece88811 Reviewed-by: Paul Wicking <paul.wicking@qt.io>