summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
Commit message (Collapse)AuthorAgeFilesLines
* Windows: handle theme changes synchronously when settings changeVolker Hilsheimer3 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 Hilsheimer3 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 Vuolle3 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 Vuolle3 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>
* Windows: refactor theme's handling of color schemeVolker Hilsheimer4 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 Hilsheimer4 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>
* Android: Enable required capabilities for embedding QML in servicesPetri Virkkunen5 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 Virkkunen5 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 Virkkunen5 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 Virkkunen5 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>
* [QNX] Add support for QLoggingCategory in QNX QPA debug log outputTuomas Vaarala7 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>
* Android: Add QT_ANDROID_SURFACE_CONTAINER_TYPE env varTinja Paavoseppä10 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>
* Windows: Prevent potential "crash" in setApplicationBadgeOliver Wolff10 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 Curtis10 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>
* Android: Propagate a11y ObjectShow events to screen readerJens Trillmann11 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 Hilsheimer11 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 Hilsheimer11 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 Hilsheimer13 days3-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 Spoerl13 days1-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ørvig14 days1-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>
* 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>
* 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>
* Revert "Always destroy OpenGL context when the window is destroyed"Samuli Piippo2024-04-171-6/+3
| | | | | | | | | | | | | This reverts commit 220afb358f6056a6fc091b48a38878fb98aba979. The change caused segfault after menus or dialogs were closed. The global raster compositing context is still being used by root window and cannot be deleted from child window. Pick-to: 6.7 Fixes: QTBUG-123962 Change-Id: Ie88925052f0f424617382388c587ae47570d13a7 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* macOS: support shortcut for Ctrl-modified TabVolker Hilsheimer2024-04-131-10/+29
| | | | | | | | | | | | | | Ctrl+(Shift/Option/Cmd)+Tab presses are not handled as a regular key events, and are not seen by our NSView.keyDown implementation. But they are delivered to a performKeyEquivalent implementation, so if we see a Tab key being pressed with the Ctrl modifier down, then send a shortcut event and stop processing if that event got accepted by Qt. Pick-to: 6.7 Fixes: QTBUG-113492 Task-number: QTBUG-8596 Change-Id: Id3aa7021a689b94d97eb881b19ddf7cb039e1bd2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* WindowsIconEngine: Use the correct icon for document-propertiesGary Wang2024-04-121-1/+1
| | | | | | | | | | | | Currently the icon used by document-properties is a gear icon, on Windows, the actual icon used by explorer's context menu for the properties menu option is the wrench icon. This patch change the icon to the wrench icon. Fixes: QTBUG-124085 Pick-to: 6.7 Change-Id: Ife49ad64d23b73b7676bc39330887e2cb320dcf9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* :wasm Fix not possible to type tab character in TextEditEven Oscar Andersen2024-04-121-0/+3
| | | | | | | | | | | qinputcontrol refused to accept the character since text part of key was empty This caused the tabkey to always switch focus instead Fixes: QTBUG-12423 Change-Id: I9ea7f02831cc88479b4e15d25eac278547f6f711 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Unify behavior of QSystemTrayIcon::geometry for hidden icons on WindowsOliver Wolff2024-04-102-0/+27
| | | | | | | | | | | | | | | | | | | | | When a system tray icon on Windows wasn't visible (hidden behind the ^ icon in the task bar) our previous implementation gave different results on Windows 10 and Windows 11. On Windows 10 the geometry returned the geometry of the ^ icon itself while we returned a geometry outside of the screen geometry on Windows 11 (that was what the Windows API gave us). We work around this problem by using version specific hacks to be able to check for the visibility of the system tray icon itself. If the icon is hidden we just return QRect(). [ChangeLog][Windows] The geometry of a hidden QSystemTrayIcon was unified over different Windows versions. It will always return QRect() now. Change-Id: Iee7dea184936a13a9221df9c421400ba304a4c38 Reviewed-by: Miguel Costa <miguel.costa@qt.io>
* XCB: Suppress leave event, when mouse leaves with button pressedAxel Spoerl2024-04-102-9/+12
| | | | | | | | Fixes: QTBUG-124003 Pick-to: 6.7 6.6 6.5 6.2 5.15 Change-Id: I232f731b4b5f9e332b1297e5fdae2cadbdf2db1a Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Błażej Szczygieł <mumei6102@gmail.com>
* Pass QVariant to QSystemLocale::query() as rvalue referenceEdward Welbourne2024-04-092-2/+2
| | | | | | | | | | QVariant is rather big for passing by value; and no caller has any further use for the QVariant it's passing in. Pick-to: 6.7 6.5 Task-number: QTBUG-122619 Change-Id: I2751745e715aacfa8982ac97b4ae777fde5e88de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSystemLocale(): disable copy and moveEdward Welbourne2024-04-091-0/+1
| | | | | | | | | | | | | Axivion (SV546) points out (based on a clazy "rule of three" that might be rule of five by now) the lack of move and copy assignment and construction. We don't want those anyway, so tell the compiler not to create them. Pick-to: 6.7 6.5 Task-number: QTBUG-122619 Change-Id: Ie951a2c3d60d76ad3448310d3f9bbda22190015b Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* macOS: Send key press as QKeyEvent if input context doesn't consume itTor Arne Vestbø2024-04-081-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | If IM is enabled we send key events through the macOS text input system, and we do this for all key pressed, including the ones with modifiers pressed. The latter allows the input method to respond to shortcut key combinations to switch its own mode or do more advanced operations on the text. We were relying on the IM to call doCommandBySelector with a noop selector if the shortcut didn't match any of its own internal key sequences, but this fails for key events with more than one modifier pressed. Instead of using [NSView interpretKeyEvents:] to pass the key event to the system IM we now go directly to the NSInputContext, which the former method is just a wrapper for. This allows us to use the result of [NSInputContext handleEvent:] to determine if the system IM consumed the event or not. For key events with multiple modifiers this will be false, which we interpret to send the event as a regular QKeyEvent instead. Fixes: QTBUG-123848 Fixes: QTBUG-106516 Pick-to: 6.7 6.5 6.2 Change-Id: I14a43c2029149514515dd9ece881aed3f6500a4e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove QWindowsComBasePavel Dubsky2024-04-051-30/+0
| | | | | | | | | | | QWindowsComBase is now replaced with QComObject, let's remove the former since it's a duplication. Change-Id: I7f911fa036c1f2eaaee168250b8294170430cc5d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Fix a regression when painting CMYK over ARGB32_PremultipliedAllan Sandfeld Jensen2024-04-042-2/+2
| | | | | | | | | | With the introduction of CMYK32 the old logic of assuming depth meant compatible alpha version no longer works. So change the logic to more explicitly return compatible opaque or alpha versions and remove the now invalid qt_maybeAlphaVersionWithSameDepth. Change-Id: Ib1f7b76b0ce0eae7d49a0dfe369918a746bbe2b4 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Android/QtView: Move resizing of the QWindow to Qt threadTinja Paavoseppä2024-04-041-5/+7
| | | | | | | | | | Since any window resize events originating from Qt side are ran in the Qt thread, having the one originating from Android run in the Android thread can lead to race conditions especially during orientation changes. Pick-to: 6.7 Change-Id: Iebebec2fffdaf9181b01fc1e8f539c7bc232996d Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android/QtView: Set also x and y of the wrapped foreign QWindowTinja Paavoseppä2024-04-042-7/+9
| | | | | | | | | | Previously, we have set the size of the QWindow to match the QtView. Also set its x and y coordinate to match, just to keep the window and the view in sync. Pick-to: 6.7 Change-Id: I0ea89a11e4526a0a996e7b62ac126808358b6bc7 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android/Embedding QML: Resize also parent windowTinja Paavoseppä2024-04-042-6/+9
| | | | | | | | | | | | | | | | The parent window created from the QtView had an empty size. Also set its size when creating the window, and when resizing the QtView. Replace parent window show() call with showNormal() to avoid switching it to a fullscreen window. As a drive-by, use setGeometry() instead of setting the width and height separately to trigger only one geometry update for the platform window. Pick-to: 6.7 Change-Id: I91e350c1748a9e76879faa8bfcab7575f6155f02 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Font icon engines: reverse implementation to avoid pixmapsVolker Hilsheimer2024-04-042-49/+53
| | | | | | | | | | | | Draw the glyph directly in the paint() override, and use that from the scaledPixmap implementation. This avoids a pixmap creation just for drawing an icon with an existing painter. Pick-to: 6.7 Change-Id: Iece0083a3a9f3625d843bc6e9d836baf9b5d84f8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>