summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
* QIOSDocumentPicker: Directly add UTTypes to document types arrayDoris Verria36 hours1-4/+4
| | | | | | | | | We don't need to create UTTypes from identifiers when we can now directly add the UTType to the array. In fact this way was causing an exception since it couldn't cast a UTType to a NSString type. Change-Id: I34d44422c102df84a625945af218b9c25c1a6895 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QIOSTextInputOverlay: Use new presentationWindow to access keyWindowDoris Verria36 hours1-1/+1
| | | | | | | | | Accessing the keyWindow through UIApplication keyWindow was causing a crash. Fixes: QTBUG-125089 Change-Id: Ie02afd7875b490c1f72ff2e827ffa2204d0e9e81 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* wasm: Enable building WebAssembly platform plugin as shared libraryPiotr Wierciński38 hours1-1/+0
| | | | | | | | Fixes: QTBUG-121924 Change-Id: I20a4a41a16ac3d7855f359df020564bfc7435c57 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io>
* Windows 11 style: simplify code to polish paletteVolker Hilsheimer5 days2-60/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two cases in which we let the style polish a palette: - after merging the system palette and the style's standard palette - or when a widget-class specific palette gets set A style needs to know which colors of the palette it can safely overwrite with style-specific preferences. For that to work, we need to reset the resolve mask of the synthesized palette (first case) to 0 before polishing. Palettes set explicitly by application code will then have resolve bits set, and the polishing can respect those colors and not overwrite them. Simplify the polish() implementation then to check whether the respective color's resolve bit is set, and only overwrite it with the style's preferred color if the bit is clear. Move that logic into a macro for simplification. This amends b733d31f275d09ca81b5e347ca1e9b6c9b216cd4 and makes sure that colors that are set by the application explicitly don't get overridden by the style. Task-number: QTBUG-124490 Task-number: QTBUG-124286 Change-Id: I69e1e3da93f661ebdafee0b62adbb3d411322443 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Windows: handle theme changes synchronously when settings changeVolker Hilsheimer5 days1-1/+1
| | | | | | | | | | | | The handleSettingsChange handler is usually already executed through the event loop. And if it is called directly e.g. when changing settings programmatically, then all side effects of the change should be in effect immediately. Task-number: QTBUG-124490 Change-Id: I243772860b1137ef9fe712c4b0d1c88593d2bdb4 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows: simplify setting the dark borderVolker Hilsheimer5 days2-17/+2
| | | | | | | | | | | | | | | A round trip through querying the window attribute to avoid a call to the setter is overkill, we can assume that the setter won't do anything if the value of the attribute doesn't change. Also, don't check whether QWindowsIntegration::darkModeHandling is overridden before calling setDarkMode, which checks that flag already. The flag will be very rarely cleared (and we might want to remove support for this obscure mechanism soon). Task-number: QTBUG-124490 Change-Id: I7e027fd53f556200edfd127eaf5f2b97f027528e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* macOS: Add support for custom uri scheme handlingJuha Vuolle5 days1-1/+13
| | | | | | | | | | | | | | | | With this support applications can claim to be handler for specific custom scheme URLs such as "com.my.app" This requires that the scheme is listed in the plist file (CFBundleURLTypes and CFBundleURLSchemes). One notable usage example is the use of OAuth redirect_uris. [ChangeLog][macOS] Added support for custom uri scheme handling Task-number: QTBUG-124340 Change-Id: Ia04e9b89b53ee6f24129f9dd5ee8fbc5c0f0516c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* macOS: Add support for universal links / https uri scheme handlingJuha Vuolle5 days3-0/+45
| | | | | | | | | | | | | | | With this support applications can claim to be handler for specific https URLs. This requires that an appropriate AASA (apple-app-site-association) JSON file is hosted and accessible. One notable usage example is the use of OAuth redirect_uris, which are often required to use "https" URI scheme. [ChangeLog][macOS] Added support for https/universal links handling Task-number: QTBUG-124340 Change-Id: I91c725fcf209b295dc1b2687a52cd0a547aff1c8 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QSql/IBase: fix compilationChristian Ehrlicher5 days1-0/+1
| | | | | | | | Looks like the CI does not compile the IBase/Firebird plugin so this compile error slipped through. Change-Id: I2e20088e10baa91f2e1e5e2b5656dfb7bdf42896 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* Windows: refactor theme's handling of color schemeVolker Hilsheimer5 days2-3/+12
| | | | | | | | | | | | | | Make the functions populating the palette static class members so that they can access private helpers. Encapsulate logic that overrides the system or (later) explicitly set color scheme into a helper that always respects the presence of a high-contrast theme. Task-number: QTBUG-124490 Change-Id: I7ad09596bb308b17b4c6ec34bb02cb6cf4b8c1bb Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Windows: store the color scheme instead of a boolean for darkVolker Hilsheimer5 days2-20/+21
| | | | | | | | | | | | | | | | Since the color scheme is a tri-state (it might be Unknown when a high-contrast theme is active), don't store a "darkMode" value, but the color scheme. Make the query-functions private to the theme, the external API should always return the stored value, which gets updated when a theme change is processed. Task-number: QTBUG-124490 Change-Id: I41e6336773a3bb426b406dce370ef81c20e513ee Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* Remove QGuiApplicationPrivate::colorScheme()Volker Hilsheimer5 days2-3/+4
| | | | | | | | Use the platform theme or QStyleHints instead. Task-number: QTBUG-124490 Change-Id: Iab12faa726d3031d6a250664468dac333c2c2e0c Reviewed-by: Doris Verria <doris.verria@qt.io>
* Android: Enable required capabilities for embedding QML in servicesPetri Virkkunen7 days1-5/+14
| | | | | | | | | | | | | | | Enabling OpenGL, ThreadedOpenGL and ForeignWindows capabilities for all cases where we have a valid Android context. Also enable createPlatformOpenGLContext and createPlatformWindow in the same circumstance. This allows service-embedded contexts to create and manipulate windows and surfaces. Task-number: QTBUG-118874 Change-Id: I34a3153865cc1263973b8ddf67a82d61b2266bca Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: PlatformServices:Do not expect Intents in non-Activity usecasePetri Virkkunen7 days1-9/+12
| | | | | | | | | | | | | | | | In non-Activity contexts, do not register the QPlatformServices class as an intent listener, as only Qt applications based on Qt Activities will receive new Intents. Calling getIntent on a non-Activity context will also cause an error, as getIntent is a method of Activity, not Context. Skip both when constructing QPlatformServices for applications without an Activity context. Task-number: QTBUG-118874 Change-Id: Ide64bd6a90d8db0a7654968ff42cdaa5da1d3b51 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Android: Do not wait for service onBind() in service embedding pathPetri Virkkunen7 days1-1/+1
| | | | | | | | | | | When embedding QML into an Android service, Qt is not actually running as a service. Avoid checking for QtAndroid::Service() and assuming that means we are running as a service. Task-number: QTBUG-118874 Change-Id: I5eea32b9fc200c4f34f1507d591aa1a483849118 Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Delete parent window in QtView instead of just the child viewPetri Virkkunen7 days1-11/+6
| | | | | | | | | | | | | | Since the parent window wraps the QtView, it should always be destroyed when the QtView is, and live inside QtView rather than the delegate. Destroying the parent window will always destroy the child window, so do not destroy the child window separately. Move createRootWindow and deleteWindow native functions to QtView. Fixes: QTBUG-124908 Change-Id: Ib6b3c6388a9dd3f74d16fa09a442b0a6f8ccb336 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* QWindows11Style: Respect user set StylesheetsWladimir Leuschner8 days2-12/+42
| | | | | | | | | | | | | | | | QWindows11Style inherits from QWindowsVistaStyle for which StyleSheet theming is deactivated. QWindows11Style draws most elements with QPainter and should therefore be able to use overrides by StyleSheets. This patch checks, whether QWindows11Style is used and enables the theming by declaring it not to be a QPixmap based style. Further drawing routines for QComboBox, QPushButton and QLineEdit are now drawing always the base background and when they are hovered a alpha mask is used to overdraw the elemens to create a highlight effect. Fixes: QTBUG-124286 Pick-to: 6.7 6.7.1 Change-Id: I65436493bc2b1572c0d9423a066caea3ba9e1459 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Fix progress bar rendering issue when using windows 11 styleSanthosh Kumar9 days1-60/+57
| | | | | | | | | | | | | The Windows 11 style checks for QProgressBar type and gets the respective orientation required for rendering. This creates an issue when we use QStyleItemDelegate as it's not QProgressBar type. This patch removes that condition and gets the orientation information through the style option similar to Windows Vista style. Fixes: QTBUG-124447 Pick-to: 6.7 Change-Id: Ic2b36d79d7af017262e44dd2800ad45fbe63f8f2 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* [QNX] Add support for QLoggingCategory in QNX QPA debug log outputTuomas Vaarala9 days34-347/+299
| | | | | | | | Makes it possible to enable debug log outputs via QLoggingCategory. Earlier it was only possible via buid time flags. Change-Id: Iaec732e7acdf44a74c9d7c806bf0e6f5a5f87b1c Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
* SQL/IBase: factor out applying decimal scale into own functionChristian Ehrlicher11 days1-37/+51
| | | | | | | | Move the calculation of the decimal scale into own function and preserve HighPrecision string values by not converting them into doubles before. Change-Id: I839923189e9f6b1f8fb9ce234c987423703b79bf Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Android: Add QT_ANDROID_SURFACE_CONTAINER_TYPE env varTinja Paavoseppä12 days1-4/+13
| | | | | | | | | | | | | | | | | | The Android QPA picks between two types of Views that can provide a Surface for it, SurfaceView and TextureView. Normally, SurfaceView is used if there's just one window in the app, and TextureView is used for any additional windows, since it allows better control over the z order between the windows. Add an environment variable QT_ANDROID_SURFACE_CONTAINER_TYPE that can be used to override the normal choosing strategy, and force the application to use either one of the View classes for all the windows of the app. This helps with testing changes to the Android QPA windowing, as you can use the same app to test both Surface Views easily. Pick-to: 6.7 Change-Id: Icc15fd9675175b854354a379b6ffa7ae5532408e Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* SQL/IBase: print warning in case of unsupported data typeChristian Ehrlicher12 days1-1/+6
| | | | | | | | Print a warning when we encounter an unsupported data type. Pick-to: 6.7 6.5 Change-Id: If35ac4dfdf29e555ec406f592c1001b5e16f8ff2 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Windows: Prevent potential "crash" in setApplicationBadgeOliver Wolff12 days1-6/+10
| | | | | | | | | | | | In some circumstances our application badge code seems to throw an exception. The issue is hard to reproduce but just catching the exception should be enough to fall back to the "non-winrt" version of the code. Fixes: QTBUG-117091 Pick-to: 6.5 6.7 Change-Id: I61f4e59f7309e2bb47b50a6ca6f3099ed9cd0af1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QCocoaMenu: fix crash when app quits while menu is openMitch Curtis12 days1-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following QML code: import QtQuick import QtQuick.Controls ApplicationWindow { visible: true Menu { id: menu MenuItem { text: "Some action" } } TapHandler { acceptedButtons: Qt.RightButton onTapped: { exitAppTimer.start() menu.open() } } Timer { id: exitAppTimer interval: 1000 onTriggered: Qt.quit() } } With the new native Qt Quick Menu, this will create a native menu on platforms like macOS. When the user right clicks on the window, a timer is started and a native menu opened. After 1 second, Qt.quit() is called while the menu is still open. As popUpContextMenu is blocking, when the menu is finally closed (by user interaction), control returns to QCocoaMenu::showPopup, but the QCocoaWindow has since been destroyed. Account for this by storing the window in a QPointer. It's not possible to test this as native menus can't be auto-tested. Fixes: QTBUG-124551 Pick-to: 6.5 6.7 Change-Id: I14a97073f350c38828b3e16bb157439aeeeb6529 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Windows11Style:Save unpolished palette for QAbstractScrollArea::viewportWladimir Leuschner12 days2-4/+15
| | | | | | | | | | | | | | | When using QWindows11Style, the viewports background has to be set to Qt::transparent to have the effect of rounded corners in ItemViews and Combobox flyouts. Other Windows styles do not make use of transparent windows, so this polishment needs to be reverted in case the style changes. Other styles also do not manipulate the QAbstractScrollArea::viewport palette and thus changing color schemes results in not applying the new color scheme. Fixes: QTBUG-123928 Pick-to: 6.7 6.7.1 Change-Id: Icb529124f63587e75bb56e40e8b1fcfe3c61c55d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Android: Propagate a11y ObjectShow events to screen readerJens Trillmann13 days5-0/+16
| | | | | | | | | | | | Sending an ObjectShow event, e.g. by setting QQuickItem::visible to true, has to trigger a refresh of the screen reader hierarchy. If the signal is ignored the source of the signal will be ignored by the screen reader. Fixes: QTBUG-122436 Pick-to: 6.5 6.7 Change-Id: I32ee2e8b2602cd0dd9b9a83ff1fe426d88d137a8 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* ColorScheme: remove unused QWindowsApplication::isDarkModeVolker Hilsheimer13 days2-6/+0
| | | | | | | | | | It unnecessarily duplicates and distributes logic for reporting whether the application should run in dark or light mode. Task-number: QTBUG-124490 Change-Id: I227660cf3e1f21afd5fd9b3d6452f6109f3cf799 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* ColorScheme: consolidate dark mode handling on Windows into ThemeVolker Hilsheimer13 days7-31/+33
| | | | | | | | | | | | | | | Move storage of whether dark mode is set into a static class member of QWindowsTheme, and remove QWindowsContext::isDarkMode; ask the theme instead using the colorScheme() implementation, which will return the stored value. Move the code handling settings changes into QWindowsTheme as well. Task-number: QTBUG-124490 Change-Id: I4795e80b6ab2c94701385dc84771e9ad5578cf32 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* ColorScheme: clean up code to prepare adding a setterVolker Hilsheimer2024-04-233-3/+3
| | | | | | | | | | | | | | | | | | | The current QStyleHintsPrivate::setColorScheme is called when the system theme changes, handling the change and informing the application. It is not a setter. When we add a public setter, that setter will have to go through the QPlatformTheme to request an override for the application. That will then result in a call back to the QStyleHints to update the theme with the effective color scheme (or ignore the request for the override, on some platforms). Rename it (and similar misleading APIs in platform plugins) to updateColorScheme, and adjust outdated comments in some of the platform plugins. Task-number: QTBUG-124490 Change-Id: I6a852211254993df86acf2e2d42cf345e7401f4f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Android: Detect mouse buttonsAxel Spoerl2024-04-221-11/+75
| | | | | | | | | | | | | | | | | | | | | | | | The mouseDown() and mouseUp() methods in androidjniinput.cpp hardcoded Qt::LeftButton to all mouse-press / release events. If a mouse is connected to an android device, all three buttons are mapped to the left button. Extend both mehtods' signature by a mouse button state. Add a converter method to map from Android button states to Qt::MouseButtons. Add a sendMouseButtonEvents method, that iterates through all buttons pressed/released and sends the respective events to QWSI. Adapt the mouse handler in java, to obtain and pass the button state to C++. The patch can't be verified in an autotest. Testlib's mouse emulation injects into QWSI. Fixes: QTBUG-99106 Pick-to: 6.7 6.6 6.5 6.2 Change-Id: I933f490901928db9761d2ef254ae1e5b4f473f28 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* wasm: back out of calling onLoaded at first frameMorten Sørvig2024-04-221-3/+9
| | | | | | | | | | | | | | | Qt and application code expects that QScreen geometry should be available early in main(), after the QApplication constructor returns. This is not the case if onLoaded is called at later point in time, since the container element for the screen is typically made visible when onLoaded is called, and does not have valid geometry before. Change-Id: I62d87f01fce1cd601e7a70d842e22a61814c9db7 Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io> Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
* Avoid crash with Windows 11 style when no widget passedMarius Kittler2024-04-221-2/+2
| | | | | | | | | | The documentation of `QStyle::drawControl()` states that "The widget argument is optional" so it must not be used unconditionally. Pick-to: 6.7 Change-Id: I8b5a8ed421c0ae2c667925e448c9a029b6deedfd Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* iOS: Decouple UIWindow management from QIOSScreenTor Arne Vestbø2024-04-198-49/+108
| | | | | | | | | | | | | | | | | | | | We now adopt the UIScene lifecycle, where we react to iOS creating UIWindowScenes for connected screens, which we then configure with a single instance of our QUIWindow, that in turn contains the QIOSViewController and QIOSDesktopManagerView that we depend on for our window management. As a result, we can now create and show QWindows on visionOS, which doesn't have UIScreen and hence failed with our old strategy managing our UIWindow via UISScreen. We still do not declare a UIApplicationSceneManifest in our Info.plist, or report UIApplicationSupportsMultipleScenes, as this adds another level to the window management that we're not ready for yet. Task-number: QTBUG-121781 Change-Id: Ic02f43aa6b205289a3f3c8e72c2a6ef575031d9a Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Remove QWindowsComBasePavel Dubsky2024-04-193-54/+0
| | | | | | | QWindowsComBase is now replaced with QComObject Change-Id: Ieb54b357fc4d658b751a35f0ba06df777617aafc Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* QWindow: Persist foreign winId to support destroy/create cyclesTor Arne Vestbø2024-04-193-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | We used to set a private _q_foreignWinId property on QWindow when creating foreign windows, and this was the mechanism which we then passed the foreign winId to the platform plugin. With c585802e946d97e7d177ea334a162dc7bc286b84 this was removed, since we now were passing the winId through via explicit QPA APIs, and since 0c6911e5cde24c45d6f2c08b6e71064bdd1eccfa removed the ability to explicitly destroy() a foreign window. But when closing a QWindow, we destroy both the window itself, and all its children, including foreign windows. In this case we still want to support recreating the foreign window, for example when the parent window is shown again. To enable this we restore the _q_foreignWinId private property, but keep the limitation of not being able to explicitly destroy a foreign window. Pick-to: 6.7 6.5 Fixes: QTBUG-124160 Change-Id: Ia885ba9f043e64fb21eedd2b4c344679726f1b5c Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Disable copy and move of QAbstractFileEngineHandlerEdward Welbourne2024-04-193-0/+5
| | | | | | | | | | | | They're not wanted and Axivion (SV71) grumbles about the lack of copy and move operators and constructors otherwise. Do the same in all derived classes. Some of these needed their default constructors made overt as a result. Similar for QAbstractFileEngineHandlerList. Task-number: QTBUG-122619 Change-Id: Iff016940f8c4884bd65dd781354b9bcda9b7cdd8 Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QXdgDesktopPortalTheme: watch for color scheme changes on runtimeJan Grulich2024-04-191-3/+22
| | | | | | | | | | | Subscribe to SettingChanged signal from xdg-desktop-portal to get info when color scheme changes and update it on runtime. Fixes: QTBUG-116197 Pick-to: 6.7 6.6 Change-Id: I7803ea76bc1ac0749d60ee55c1c0d9051dad210a Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QGtk3Theme: Add support for xdg-desktop-portal to get color schemeJan Grulich2024-04-195-9/+206
| | | | | | | | | | | | | | | | | Use xdg-desktop-portal to get color scheme used by GNOME. Recent GNOME versions use this as primary way to switch between light and dark theme. Make this a preferred way to get color scheme and fallback to previous methods in case xdg-desktop-portal cannot be used. Also update app theme on runtime when color scheme changes, not only when theme is changed. [ChangeLog][Platform Specific Changes][Linux] Add support for xdg-desktop-portal to get color scheme in QGtk3Theme. Fixes: QTBUG-116197 Change-Id: Ib3ffad405bc795ed6f4de4af411efc45721662b9 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* Replace expensive inherits with cheaper qobject_cast (2)Volker Hilsheimer2024-04-191-36/+44
| | | | | | | | | | | | | | | In the Windows 11 style, it's better to include the headers for specific widget types at the expense of compile time, than to pay a regular runtime cost from using expensive inherits(). Add const, fix style, and break excessively long lines related to this change. Pick-to: 6.7 Change-Id: I2c8c6d98267d9ff3542decda71e08e462cf9807c Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
* iOS: Don't report UIDevice.currentDevice.orientation through QScreenTor Arne Vestbø2024-04-182-76/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | As of Qt 6 (3e12951c0b35041920989d6089ddb6c2f5c2d3d1, the QScreen's orientation() property is supposed to represent the orientation of the screen from a window management perspective, and not the orientation of the actual device, as in Qt 5 times. For iOS, when the orientation of the app is locked to a orientation via the Info.plist or [UIViewController supportedInterfaceOrientations], the UIDevice API will keep reporting the actual orientation of the device, which is wrong for the Qt 6 definition of the API. We currently don't have an API in QScreen to represent the always updating physical rotation of the device. For this use-case the supported API is QOrientationReading in Qt Sensors. [ChangeLog][iOS] QScreen::orientation() will no longer report the device's physical orientation when orientation has been locked to a subset of the available orientations, but will instead match the primary orientation. Task-number: QTBUG-38576 Task-number: QTBUG-121781 Change-Id: I251a039a618656466cbfd1d836a5b49a6be8e736 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* iOS: Remove plumbing for QWindow::reportContentOrientationChangeTor Arne Vestbø2024-04-185-105/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | The [UIApplication setStatusBarOrientation:animated] API has been deprecated since iOS 8, and a no-op since iOS 13. It is no longer possible to report the orientation of a view or view controller independently of the orientation of the view itself. This was problematic because we were applying additional logic to our screen geometry mapping based on the assumption that the API was still doing something, resulting in broken auto rotation when calling reportContentOrientationChange(). Removing the iOS implementation for reportContentOrientationChange makes this API a no-op on QWindow as well, as no other platforms seem to implement it. We should perhaps consider re-thinking the screen orientation APIs in this light. [ChangeLog][iOS] QWindow::reportContentOrientationChange no longer has any effect on iOS, as the APIs used to implement this on iOS are no longer available. Task-number: QTBUG-38576 Task-number: QTBUG-121781 Change-Id: I5b129d21c990332170599c2580e389e252140d6f Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* iOS: Move QUIWindow implementation out of qiosscreen.mmTor Arne Vestbø2024-04-187-49/+73
| | | | | | | | Task-number: QTBUG-121781 Change-Id: Iaa4388908d0d59022ec05b63696147a0d1d01ae1 Reviewed-by: Amr Elsayed <amr.elsayed@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* iOS: Handle geometry of maximized windows outside of QIOSScreenTor Arne Vestbø2024-04-184-37/+40
| | | | | | | | | | | | | | | Ideally we would report the available geometry of our screen in a way that reflects the safe area margins of a potentially full screen window, but doing so requires that we manage UIWindows via QScreen/UIScreen, which is not in line with modern iOS window management. We still apply safe area margins to maximized windows, as before, but do so when applying the maximized state in QIOSWindow::setWindowState Task-number: QTBUG-121781 Change-Id: If7b9855aea47014f01e23dfe197b7057a1305a68 Reviewed-by: Amr Elsayed <amr.elsayed@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* iOS: Support message box at startup without relying on screen's windowTor Arne Vestbø2024-04-182-20/+17
| | | | | | Task-number: QTBUG-121781 Change-Id: Iafc911dad6c668799383f423e38ab389c29688b4 Reviewed-by: Doris Verria <doris.verria@qt.io>
* iOS: Reduce dependency on screen's UIWindow in QIOSScreen::grabWindowTor Arne Vestbø2024-04-181-6/+6
| | | | | | | | | | | We still fall back to m_uiWindow for grabbing the entire screen, but the rest of the logic is now agnostic to where the window of the view is coming from. Task-number: QTBUG-121781 Change-Id: If8815f62d22a1d4bbdfe6fe24ddadce2223c8623 Reviewed-by: Amr Elsayed <amr.elsayed@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* iOS: Track virtual keyboard gestures via focus window instead of screenTor Arne Vestbø2024-04-181-9/+6
| | | | | | | | | | | We're moving away from the screen managing a UIWindow, so let's track the UIWindow via the focus window instead. Task-number: QTBUG-121781 Change-Id: I943b1d501f743c51b3f1484aecbe008c6dae8cd4 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Amr Elsayed <amr.elsayed@qt.io>
* Use QComObject with QWindowsUiaMainProviderPavel Dubsky2024-04-182-29/+16
| | | | | | | | This change adds QComObject as base to QWindowsUiaMainProvider in order to reuse its implementation of IUnknown. Change-Id: I48808262364992f90f18fc881594f151eeb29a3f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* wasm: fix linux touchscreen keyboard inputLorn Potter2024-04-181-11/+11
| | | | | | | | Fixes: QTBUG-124366 Pick-to: 6.7 Change-Id: I9bd83ecb75b94efbf12b13055e292a74e6e9edcd Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
* QEglFSKmsGbmScreen::framebufferForBufferObject: release() at the correct timeMarc Mutz2024-04-181-2/+3
| | | | | | | | | | | | | | | It's the gbm_bo_get_user_data() function that takes ownership of the FrameBuffer object, not the caller of the function, so release() into gbm_bo_set_user_data() not into the return. This threw Coverity off, which complained about a leak of the return value in the caller. Amends 2f0fa59d5903d4c9596ed42dcbaa9da0f77c78da, but not picking through all the refactorings the code has since seen. Pick-to: 6.7 6.6 6.5 Coverity-Id: 444117 Change-Id: I5f058e4a42942349193eecfd8c00ec9499ef4886 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add preliminary support for Qt for visionOSTor Arne Vestbø2024-04-1819-66/+161
| | | | | | | | | | | | | | | | | | | | | | Qt already runs on Vision Pro as "Designed for iPad", using Qt for iOS. This change enables building Qt for visionOS directly, which opens the door to visionOS specific APIs and use-cases such as volumes and immersive spaces. The platform removes some APIs we depend on, notably UIScreen, so some code paths have been disabled or mocked to get something up and running. As our current window management approach on UIKit platforms depends on UIWindow and UIScreen there is currently no way to bring up QWindows. This will improve once we refactor our window management to use window scenes. To configure for visionOS, pass -platform macx-visionos-clang, and optionally add -sdk xrsimulator to build for the simulator. Change-Id: I4eda55fc3fd06e12d30a188928487cf68940ee07 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>