summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
* Extract classNameSuffix helper in window class registryPavel Dubsky5 hours2-23/+33
| | | | | | | | Added a new helper function classNameSuffix to generate class name suffixes based on window type, style flags, and icon presence. Change-Id: I70c20f211255d9e79fc6e7e3b79dbefd861bf7be Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Wayland plugins: replace header guards with #pragma onceMarc Mutz6 hours17-176/+18
| | | | | | | | | | | | | | | | | | | | | | Following qtbase/1c8884fc277c5916a420a3c14de68547a391f9fc's making syncqt error out when an installable header contains #pragma once, we can now flip the coin and use #pragma once as a static assertion that the given header is not going to be installed, making it easier to understand which headers are "public", which ones are "private" and which ones are "neither, since never installed". Do this for the Wayland platform support files, like 91f9ba2993a2652bcb349ce639aff67b5bfc8938 did for XCB. Since these headers are neither public nor private, also remove "We mean it" comments, where they existed. Had to exclude the QtWlShellIntegration headers, because, for some unknown reason, we install headers from the plugins/ subdir. Pick-to: 6.10 Change-Id: I92f336f79d23134e96cbac13088dbd352e2d3a84 Reviewed-by: David Redondo <qt@david-redondo.de>
* Add shouldDecorateWindowClassName to detect window class conflictsPavel Dubsky21 hours2-6/+20
| | | | | | | | | | Introduces helper overloads that return true when a window class with the same name is already registered but uses a different window procedure. This will be used to decide when to register a new class with a decorated (UUID-suffixed) name. Change-Id: I613173e61152a6f717285a1d4943b01808c1a44e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Simplify WNDCLASSEX initialization in window class registryPavel Dubsky21 hours1-10/+1
| | | | | | | | Replaced manual field-by-field zeroing with aggregate initialization and removed redundant assignments of default values. Change-Id: Ic2e974ef859d3142ae2077ef306403423c979d10 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* CMake: Automatically generate a vcpkg manifestJoerg Bornemann26 hours1-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][configure] Added a -generate-vcpkg-manifest configure option. This generates a vcpkg.json file in the build directory. To just generate the manifest without configuring Qt, run configure with -generate-vcpkg-manifest -dry-run. [ChangeLog][configure] When configuring with -vcpkg, generate a vcpkg manifest file in the build directory, and set VCPKG_MANIFEST_DIR to the build directory to use that manifest file. You can turn off the manifest generation with -no-generate-vcpkg-manifest. You can turn off setting the manifest directory by passing -- -UVCPKG_MANIFEST_DIR to configure. Configuring with pure CMake won't generate a vcpkg.json. This patch adds a low-level CMake API for creating vcpkg manifests in QtVcpkgManifestHelpers.cmake. The functions qt_find_package and qt_feature gained arguments for creating dependencies in the manifest and add them to features. This adds a package dependency (not guarded by any feature): qt_find_package(WrapSystemFreetype 2.2.0 MODULE ... VCPKG_PORT freetype VCPKG_VERSION 2.3.4 ) This adds a package dependency `freetype` to the feature `freetype`: qt_find_package(WrapSystemFreetype 2.2.0 MODULE ... VCPKG_PORT freetype VCPKG_ADD_TO_FEATURE freetype ) This adds a feature `freetype` with `gui` as its "parent dependency": qt_vcpkg_scope(gui) ... qt_feature("freetype" PUBLIC PRIVATE SECTION "Fonts" LABEL "FreeType" PURPOSE "Supports the FreeType 2 font engine (and its supported font formats)." ) If features are turned on/off via configure arguments, we set the CMake variables VCPKG_MANIFEST_NO_DEFAULT to ON and VCPKG_MANIFEST_FEATURES to the list of corresponding vcpkg features to only install libraries that are needed for the build. For a per-repo build, we create a vcpkg.json with dependencies only for that repository. For a top-level build, we create a vcpkg.json with all dependencies of all repositories, excluding those that have been skipped (with configure's -skip argument). Task-number: QTBUG-73760 Change-Id: I6cc449d712f32d9e564acecaede5a7b31f309a8c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Unexport QCocoaSystemTrayIcon from Cocoa platform pluginTor Arne Vestbø28 hours1-1/+1
| | | | | | | | We don't export symbols from the platform plugins. Pick-to: 6.10 6.8 6.5 Change-Id: Id3d801aba8b9fa59af9317602abffe6451be4c80 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* Rename m_proc to m_defaultProcedure in QWindowsWindowClassRegistryPavel Dubsky28 hours2-5/+5
| | | | | Change-Id: I56a25033843c3c1ced047fe3e9072ee6014d182c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Wayland integration plugins: fix QT_END_NAMESPACE locationsMarc Mutz28 hours4-11/+8
| | | | | | | | | | | | | | | Harmless, because QT_END_NAMESPACE is also just '}', but eyebrow-raising, so fix. Amends: - d8e37e4b03f9c786e1cb3dda80b050f05f974752 - 3bf9a581ee13cac988cdfadc7f22d472c1562214 - c2f156e27bf8865dc12108e1aba7cc78bd0dba38 - 6482bf50754e36a89e157ce94096be05b108db75 Pick-to: 6.10 Change-Id: Id59044023bfaf75ddc2bff024439f3d4a20d0936 Reviewed-by: David Redondo <qt@david-redondo.de>
* Wayland hw-integration headers: don't include yourselvesMarc Mutz28 hours4-4/+0
| | | | | | | | | | Harmless, but ... eyebrow-raising. Amends 58e68f1981d0ba0a80e373dd5ca78a9260824c36. Pick-to: 6.10 Change-Id: Id5754a772c1e3244a88294390c98604bfe07f0ad Reviewed-by: David Redondo <qt@david-redondo.de>
* Windows11Style: add and use inputFillBrush()Christian Ehrlicher38 hours2-11/+29
| | | | | | | | | | | | Input widgets have a slightly different styling as there is no 'pressed' state but an 'edit' state. The coloring for this state is also a little bit different (fillControlInputActive). Therefore add a corresponding function to controlFillBrush() to handle this case. Pick-to: 6.10 Task-number: QTBUG-142129 Change-Id: I5b2bf971cb5c7eb2ff8d63ffd381bfe7af659e9a Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Use categorized logging for window class (un)registration failuresPavel Dubsky40 hours1-3/+4
| | | | | Change-Id: Ib4afaf179bed99bdbb1be6fc7deebbdb2e6d1627 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add QDebug stream operator for QWindowsWindowClassDescriptionPavel Dubsky48 hours3-3/+16
| | | | | Change-Id: I18a569a8fefc8ccd27cd4aec4f0d323d461eb0bc Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Revert "qpa/wayland: fix handling textinput's focus object"Inho Lee2 days1-6/+4
| | | | | | | | | | | | | This reverts commit 97c891edd1dd0fda8d90ddea6da4d499f373a069. QTBUG-141475 is just a case using the client controlled enable/disable. Current implemention still has issues. So, another patch will fix the problem. Reopens: QTBUG-141475 Pick-to: 6.10 Change-Id: I23e5a3a6afa8fc2e1dc88296a585e1c33e045243 Reviewed-by: David Redondo <qt@david-redondo.de>
* macOS: Document the various open-file-or-url callbacks in our app delegateTor Arne Vestbø2 days1-0/+61
| | | | | | Pick-to: 6.10 Change-Id: I30a8a4b04f8b2bb40090ab810a5f84de0bd78ba4 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* iOS: Implement support for native save dialogsTor Arne Vestbø2 days2-18/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | The iOS equivalent is a UIDocumentPickerController that exports an existing file, so we need to create an empty temporary dummy file to be able to show the dialog. This is also how we give a suggested file name. Once the target file is chosen, it's available through the normal selected-file APIs, and the application can write to it through the normal security scoped file system backend. For some reason setting directoryURL to an inaccessible path, such as the .app bundle, results in the document picker showing an empty sheet. And in testing both open and save dialogs with the directoryURL set to a known good path (Documents), the iOS dialog still prefers to open to the user's last used path, so we skip the entire logic for save dialogs for now, to be on the safe side. [ChangeLog][iOS] Native file dialogs on iOS now support saving files. Task-number: QTBUG-120528 Change-Id: I10a0e6ce78b23163933ecf67269c54b618c30964 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Add security scoped file engine for Apple operating systemsTor Arne Vestbø2 days4-23/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Apple operating systems where the app runs in a sandbox, the application can not access files outside of its sandbox without explicit user approval. This applies to iOS and friends, as well as optionally for macOS (when the sandbox is enabled, which is a requirement for publishing apps to the macOS App Store). When the user gives explicit access to a file or directory, we need to manage this access at runtime by starting and stopping the access via startAccessingSecurityScopedResource and stopAccessingSecurityScopedResource, and these functions must be balanced, to avoid leaking kernel resources. The access unfortunately doesn't persist automatically when the application terminates (unlike takePersistableUriPermission on Android), so we have to manually persist the access via security scoped bookmarks. We store these inside the app's own sandbox, in a way that limits the access to only that application, so persisting them on behalf of the user should be fine. The persisted bookmarks are loaded in the background on application start, ready for when the application wants to open earlier accessed file or directories. [ChangeLog][Apple] Sandboxed applications on Apple platforms, (including macOS if opted in to) can now access files outside of the application sandbox (so called security scoped resources) for both reading and writing. Files or folders chosen by the user via file dialogs or similar native mechanism are automatically and transparently handled, including persistent access across application and device restarts. Fixes: QTBUG-120528 Task-number: QTBUG-117832 Task-number: QTBUG-120528 Task-number: QTBUG-141414 Change-Id: I90d94066cbf7cd74750049d5d1b990917fd10cad Reviewed-by: Doris Verria <doris.verria@qt.io>
* Use _L1 string literal helpers in window class registrationPavel Dubsky2 days3-3/+5
| | | | | Change-Id: Icebc05fe01ef814dbd4a48519cdfa937e66104d6 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* macOS: Use non-native file dialog if sandboxed app is missing entitlementTor Arne Vestbø3 days1-0/+20
| | | | | | | | | | | | | | | | If a sandboxed app is missing the user-selected read-only or read-write entitlement the native file dialogs will fail to open (and will break in the debugger via REPORT_APP_ENTITLEMENTS_INSUFFICIENT if running in Xcode). The non-native file dialogs still work, but will just show the files we have access to through the app's bundle and sandbox. But it's better than nothing. Fixes: QTBUG-141415 Pick-to: 6.10 6.8 6.5 Change-Id: Ia2007e5c03df73156bc4e2a2badf8a7145a83ded Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Windows11Style: avoid cast from QString to QChar and backChristian Ehrlicher3 days1-1/+1
| | | | | | | | | The WinFontEngine now takes a QString, no need to convert a QString to a QChar anymore. Pick-to: 6.10 Change-Id: I3ac8f54ebc7992c85c2b8956d18ab2c068d66022 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Windows11Style: Also draw 'edit' frame for QPlainTextEditChristian Ehrlicher3 days1-1/+4
| | | | | | | | | The blue 'edit' frame was only drawn for QTextEdit but not for QPlainTextEdit. Pick-to: 6.10 Change-Id: If5e2082e174be8d4b3adc87150c37ba2efc5a9c2 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Windows11Style: fix alignment of QPushButton iconChristian Ehrlicher3 days1-30/+4
| | | | | | | | | | | | The alignment of the icon on a QPushButton was not correctly calculated. Since the drawing for CE_PushButtonLabel is exactly the same as in QCommonStyle go the easy way: Adjust the two different parameters (rect and text color) and call the base class implementation instead. Pick-to: 6.10 Fixes: QTBUG-142083 Change-Id: I9b47dd19a19b8676ab443ae1e3a84a1a9fa62ff9 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* wasm: fix composition for mobile inputLorn Potter3 days3-50/+117
| | | | | | | | | | | | | Take into account replacement range from the native inputmethod. also remove unused, commented out code Pick-to: 6.10 Fixes: QTBUG-138087 Fixes: QTBUG-138821 Change-Id: Ie4616f5dcc60c2e3e7d7b9c3a41373642567e9e4 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Add shouldAddSuffix to QWindowsWindowClassDescriptionPavel Dubsky3 days9-13/+19
| | | | | Change-Id: Ibbcfb8ff728f7fb292dcf6bac03234f1ed88007d Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Simplify [QNSView screenMousePoint:]Tor Arne Vestbø3 days1-2/+1
| | | | | | | | There's a built in function for mapping points to screen now. Pick-to: 6.10 Change-Id: I060cc9ba61899e4d96565fd745d93aff763a4c7a Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: drive animations using requestAnimationFrameMorten Sørvig3 days2-48/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Drive QAbstractAnimaton-based animations using RAF. This has two main benefits: * The animation update rate automatically adapts to the screen refresh rate * The animation update happens in sync with the draw callback, instead of as an extra wakeup in between frames. Add QWasmAnimationDriver, which replaces QDefaultAnimationDriver for Q_OS_WASM. Add QWasmAnimationFrameMultiHandler. This class supports multiplexing multiple animation and draw callbacks to a single native requestAnimation call. It also orders the callbacks such that animation callbacks are called before draw callbacks. Make QWindow::requestUpdate() use the new multi-handler (via QWasmCompositor, as before) Fixes: QTBUG-133695 Change-Id: I0a3fda562a7ba2e8d659d707335d1ce116f71bd9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io>
* Add QWindowsWindowClassDescription classPavel Dubsky3 days7-80/+152
| | | | | | | | | Replace loose parameter set with a small value type to clarify call sites and allow future extension (cursor/menu/extra bytes) without API churn. Change-Id: I84303ab62f22778338a5950557117db7cc2edb77 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* cocoa: add precompiled headerTim Blechmann7 days2-0/+18
| | | | | | | | | | | | | Apple's system headers are rather big. Precompiling them will reduce the compile times: * building the initial pch takes 2s on my macbook * it reduces the compile times for the translation units significantly (1s instead of 2s for qnsview.mm, 600ms instead of 1400ms for qnswindow) Pick-to: 6.10 Change-Id: I466c6fac04e7eb07f52cf62ee492807f48d0c3bd Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Windows11Style: use 'QStyle::State' instead intChristian Ehrlicher7 days1-2/+2
| | | | | | | | Use the distinct enum instead a generic int. Pick-to: 6.10 Change-Id: I5aa7b834fd993cd181ccf211613ef4cc1fae6768 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Windows11Style: use QPainterStateGuardChristian Ehrlicher7 days1-16/+8
| | | | | | | | Use QPainterStateGuard instead QPainter::save/restore Pick-to: 6.10 Change-Id: Idd54144ba8cde65e24510ccb5813cb86993314f9 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* iOS: Add support for QFileOpenEvent for external requests to open filesTor Arne Vestbø8 days1-2/+7
| | | | | | | | | [ChangeLog][iOS] QFileOpenEvent is now sent if the user requests that a supported file type is to be opened in the application. This requires that the application declares supported file types via CFBundleDocumentTypes. Change-Id: Ic3476ad703b51131a0973e3d6135e9aa05c2091f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Extract window class registration into dedicated classPavel Dubsky8 days10-170/+246
| | | | | | | | | | | Moved all logic related to window class registration and tracking out of QWindowsContext into a new QWindowsWindowClassRegistry class. This step preserves existing behavior and structure; no functional or stylistic changes were made. Further cleanups and refinements will follow in subsequent commits. Change-Id: Iba84797067226a3de0489bc466d9cd1b7e1a4d3c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* a11y win: Don't report active windows as having focusIngo Klöcker8 days1-6/+1
| | | | | | | | | | | | | | | | | | | | | UI Automation gets confused if active windows are reported as having keyboard focus additionally to the UI element inside the active window which actually has keyboard focus. This makes UIA synthesizes bogus UIA:FocusEvents for the active window. And this makes NVDA speak some texts twice and suppress speaking other texts (e.g. the name of the actual focus widget). Reporting the active window as having keyboard focus only if it does actually have keyboard focus (and not some child widget of the window) fixes the problem with the bogus UIA:FocusEvents. This change reverts part of 73ca3dbf490b33159ba66e936bcb11fbcd03e886. Fixes: QTBUG-90897 Fixes: QTBUG-90899 Change-Id: I4d1aeec7ec581730c6a4797a6c95f8b2033dea6d Reviewed-by: MohammadHossein Qanbari <mohammad.qanbari@qt.io> Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
* Doc: Wayland: Mark private APIs \internalTopi Reinio8 days2-0/+5
| | | | | | | | | | | | | | | | | | | | | | | QDoc warns about documented functions in undocumented classes; Fixes qwaylandshellsurface.cpp:89: [QtWaylandClient] (qdoc) warning: No output generated for function 'QtWaylandClient:: QWaylandShellSurface::commitSurfaceRole()' because 'QWaylandShellSurface' is undocumented qwaylandwindow.cpp:920: [QtWaylandClient] (qdoc) warning: No output generated for function 'QtWaylandClient::QWaylandWindow:: surfaceSize()' because 'QWaylandWindow' is undocumented qwaylandwindow.cpp:941: [QtWaylandClient] (qdoc) warning: No output generated for function 'QtWaylandClient::QWaylandWindow:: windowContentGeometry()' because 'QWaylandWindow' is undocumented qwaylandwindow.cpp:951: [QtWaylandClient] (qdoc) warning: No output generated for function 'QtWaylandClient::QWaylandWindow:: mapFromWlSurface()' because 'QWaylandWindow' is undocumented Task-number: QTBUG-141665 Change-Id: Ia0d6201783eaebcb356f4efd8d48eb42077e3b2a Reviewed-by: David Edmundson <davidedmundson@kde.org>
* QNX QPA: Scale window and backing store sizesMauro Persano9 days3-8/+20
| | | | | | | | | | | Properly scale QWindow and QBackingStore logical sizes when creating/updating buffers and window system events. Pick-to: 6.10 6.8 6.5 Task-number: QTBUG-141834 Change-Id: I79e22b7bb94fec0857a742be31f5e2f4a4fd2942 Reviewed-by: James McDonnell <jmcdonnell@blackberry.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Use Q_ENUM/Q_FLAG instead of Q_ENUMS/Q_FLAGSAhmad Samir9 days1-1/+1
| | | | | | | | | Q_ENUMS and Q_FLAGS have been deprecated since at least Qt 6.0. Task-number: QTBUG-99060 Change-Id: Ia8cbc607c34683dec99587571c0d04f1854e77c2 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* xcb: Move canCreatePlatformOffscreenSurface out of macro blockMikko Hallamaa10 days1-1/+1
| | | | | | | | | QXcbGlIntegration::canCreatePlatformOffscreenSurface declaration should not be behind #ifndef QT_NO_OPENGL macro. This patch moves it out. Pick-to: 6.10 6.8 Change-Id: I0a76619ccdfc1af2ccb164a71ec515b0254c8efd Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* Wayland: Add logic for OffscreenSurface capabilityMikko Hallamaa11 days4-0/+10
| | | | | | | | | | | The OffscreenSurface platform integration capability was added in change 637918. This patch was detached from that commit to simplify backporting. Task-number: QTBUG-131107 Change-Id: Ic0561fb5f36514275f90e34486b90478dee02022 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: David Redondo <qt@david-redondo.de>
* WindowsVistaStyle/SpinBox: fix geometry for SC_SpinBoxUpChristian Ehrlicher11 days1-1/+1
| | | | | | | | | | The width of SC_SpinBoxUp was 1px more in contrast to SC_SpinBoxDown for unknown reaons (predates git history) which lead to drawing errors, esp. visible when the button was pressed. Pick-to: 6.10 6.8 Change-Id: Ibea0d741950e5754be771edad6bd3185b5a43a87 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Windows11Style: adjust sort indicatorChristian Ehrlicher11 days1-10/+11
| | | | | | | | | | | | | Adjust the sort indicators for itemviews: - paint them above/below the text instead right of the label - the 'up' indicator is for ascending, 'down' for descending order on windows Pick-to: 6.10 6.8 Task-number: QTBUG-126345 Fixes: QTBUG-141895 Change-Id: Id649b5b36e5d1b84d68a7b05aebf2f53eddf9861 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Use QUniqueHDCHandle in QWindowsContextPavel Dubsky2025-11-141-7/+6
| | | | | | Change-Id: Id8ed8239aedaa59e86beba79c2e10663f8ba1c06 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* wasm: simplify compose key handlingMorten Sørvig2025-11-143-44/+15
| | | | | | | | | | | | | | | | Use keyCode 229 to determine if the key event is a part of input method compose, as documented by MDN: developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event#keydown_events_with_ime This restores correct key event behavior where KeyPress events are sent for key events which are not part of an input method compose. Pick-to: 6.10 Task-number: QTBUG-141226 Change-Id: I681ec15cae70c00049c9be03f6ea98222498ba6a Reviewed-by: Lorn Potter <lorn.potter@qt.io>
* Add OffscreenSurface capability to QPlatfromIntegrationArtem Dyomin2025-11-1310-12/+28
| | | | | | | | | | | | | | | | | | The capability reflects whether the function QPlatfromIntegration::createPlatfromOffscreenSurface is available. See QOffscreenSurface::create for details how offscreen surface is handled. If no offscreen surface is created, it falls back to an invisible window, using of which in non-ui thread causes failures. In QtMultimedia, we want to know in advance whether offscreen surface can be created in non-ui thread, so we add the capability in the patch. Pick-to: 6.8 6.10 Task-number: QTBUG-131107 Change-Id: I15e6b1b66aaac18020abca661415aea5c8779192 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* QWindows11Style: Don't highlight disabled tabs on hoverWladimir Leuschner2025-11-121-1/+2
| | | | | | | | | Disabled tabs in a disabled QTabBar and QTabWidget should not be highlighted on hover. Pick-to: 6.10 Change-Id: Ie073479c914739d93dd09bb48d8787cfc031046b Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* QWindows11Style: Don't change disabled QSlider handle inner radiusWladimir Leuschner2025-11-121-4/+7
| | | | | | | | A deactivated QSlider does not change the inner circle radius on hover Pick-to: 6.10 Change-Id: Ic254402b854c04a741037f9d32bad1dfcdc826ef Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* QWindows11Style: Don't highlight disabled QSpinBoxesWladimir Leuschner2025-11-121-2/+3
| | | | | | | | Do not highlight disabled QSpinBoxes on hover. Pick-to: 6.10 Change-Id: I35fed09cccc85277e740ebd62deb7412713b300e Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* a11y Android: Replace magic numbers of RangeType with java constantsJulian Greilich2025-11-123-5/+36
| | | | | | | | | | This also fixes that RANGE_TYPE_INTERMINATE is not available before apilevel 36. Task-number: QTBUG-139712 Pick-to: 6.10 6.8 Change-Id: Icb53204e0a7a369a161461b9e925436eb4e7c27b Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* iOS: Import documents when opening files via UIDocumentPickerControllerTor Arne Vestbø2025-11-111-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | As part of implementing support for native folder dialogs in dbe433f6d0259119fa31103b3428d50cc9fec286 we removed the import mode logic, switching away from UIDocumentPickerModeImport for files to effectively always preferring UIDocumentPickerModeOpen. This regressed file opening, as unless the application explicitly manages access to security scoped resources (files outside of its sandbox) the files selected in the file dialog will be inaccessible. We now pass asCopy:YES when we know we're opening files, which restores the previous behavior. For opening directories outside of our sandbox we can't pass the same flag, as folders can't be imported. As a result, the app can't see any content in the security scoped folders. This will be improve in a follow up that adds support for managing security scoped resources. Pick-to: 6.10 6.10.1 6.8 6.5 Fixes: QTBUG-117832 Change-Id: Ifdc3866c065e777357a2d400f980c27efb8eb9af Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* macOS: Handle non-square system tray notification iconsTor Arne Vestbø2025-11-111-1/+11
| | | | | | | | | If the provided icon is non-square the system will end up clipping it, so let’s pre-generate a square icon if needed. Pick-to: 6.10 Change-Id: I71a21d2c50f1269227257c354b47a812b6566746 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Handle non-square application icons by padding the iconTor Arne Vestbø2025-11-111-3/+15
| | | | | | | | | | The system scales NSApp.applicationIconImage to fit into the tile, but does so without respecting aspect ratio. To avoid stretched icons we pad the icon to make it square, if it's not already so. Pick-to: 6.10 Change-Id: Ib7fbc335586763817b92b8a2f0d73e828e6f85ea Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Use underlying NSImage for symbol images when used in system trayTor Arne Vestbø2025-11-111-0/+13
| | | | | | | | | | | | | | | | | There's no need to flatten the image to a QImage in this case, and doing so loses the isTemplate state of the Image. By passing the NSImage on, we let AppKit decide how to configure and size the image for the menu bar, matching the look of SwiftUI's MenuBarExtra. Note that the look of system status bar UI such as the WiFi icon or battery icon is slightly larger than what the same icon will look like in a MenuBarExtra, but as long as SwiftUI behaves that way we try to match that instead of trying to compensate and align with the few "oversized" system UI icons. Pick-to: 6.10 6.8 Change-Id: Ia82e0bc471426345ff1b695b10c3fd463e357eb7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>