summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
...
* 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>
* QStyle: deprecate PM_DialogButtons* enumsChristian Ehrlicher2024-04-171-19/+0
| | | | | | | | | | | | The threee enumerations - PM_DialogButtonsSeparator - PM_DialogButtonsButtonWidth - PM_DialogButtonsButtonHeight Are not documented since Qt3 times and also not used anywhere. Therefore deprecated them and remove the logic to handle them. Change-Id: Ia59fe15482e744123e7fbf04b8d44661afb58b5c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@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>
* SQL/ODBC: convert QVariant to QDateTime only onceChristian Ehrlicher2024-04-121-3/+4
| | | | | | | | ... instead three times in a row. Pick-to: 6.7 Change-Id: If08b4c092cfb5b7d224f9a94afb7d395ce2b2eca Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* SQL/IBase: use categorized loggerChristian Ehrlicher2024-04-121-20/+23
| | | | | | | Use the categorized logger qt.sql.ibase Change-Id: Id7cdc54b8b01ee5af0526e3c522c2511697380d3 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* SQL/OCI: use categorized loggerChristian Ehrlicher2024-04-121-40/+38
| | | | | | | Use the categorized logger qt.sql.oci Change-Id: Ib143cfa3136a7382adbabfe4bc421b94e2a25bda Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* SQL/Mimer: use categorized loggerChristian Ehrlicher2024-04-121-3/+6
| | | | | | | | Use the categorized logger qt.sql.mimer Change-Id: I1b0d149a1a6317eec3b821dee99d952ef1000c28 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Fredrik Ålund <fredrik.alund@mimer.com>
* SQL/ODBC: Don't allow default argument for SqlStmtHandleChristian Ehrlicher2024-04-121-1/+1
| | | | | | | | | To avoid usage errors like fixed with 7e5a0b54f0737986b6716bfce0a43eba2e62aae0 Pick-to: 6.7 Change-Id: I33af9721a04e80541c027fa6da8630070a5957ac Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Mac style: draw dock widget titles and status bar without gradientVolker Hilsheimer2024-04-111-56/+2
| | | | | | | | | | | | | | | | | | | | | | Fill with the "window" color of the palette as passed in through the style option, which takes care of active vs inactive color selection. The title bar of a docked dockwidget is a bit lighter than the main window title and unified toolbar background, but identical to the color of the title of an undocked dock widget. This is now the case for both dark mode and light modes. Also remove the gradient fill from the status bar, just fill it with the window brush. Remove the now unused helper functions for the title bar gradient. Fixes: QTBUG-92855 Pick-to: 6.7 Change-Id: Ia04c630201b288c0107567d3f459f66129693c82 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Mac style: draw MDI window title bar without gradientVolker Hilsheimer2024-04-111-10/+1
| | | | | | | | | | | Use a solid fill with the "button" color of the palette also for active title bars, which is then the same color as the frame, and gives the window a consistent look in both dark and light mode. Fixes: QTBUG-123162 Pick-to: 6.7 Change-Id: Iac26fdb1518ffe4f8255e01bedf7329be40ac258 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QOCICols: fix warning for -Wdangling-referenceDennis Oberst2024-04-111-1/+1
| | | | | | | | .. by playing it safe and taking the QVariant by copy Pick-to: 6.7 6.5 Change-Id: I24e0507a912388b7fb17e838a22e8d4c449bcf5b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@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>
* QWindows11Style: Check for nullptr after qobject_castWladimir Leuschner2024-04-091-137/+140
| | | | | | | Fixes: QTBUG-123791 Pick-to: 6.7 Change-Id: I050196bdf45754509a223c89652e0be7e0160a98 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* 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>
* QNetworkInfo[win]: Explicitly link with oleaut32 for MINGW tooMark Brand2024-04-051-1/+1
| | | | | | | | | | | | | Following up on 2 commits that fixed static linking for MSVC but left out MINGW: 230c53ad9d7046e61b37ce63a6bc68449393bb7b d9820b02072b27f830b389e503467c8220679cba Pick-to: 6.6 6.7 Fixes: QTBUG-114243 Change-Id: I12853355ffa1a62acce15ff660478f618c42e0a6 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* SQL/ODBC: QODBCDriver::record Unable to allocate handleMark Brand2024-04-051-1/+1
| | | | | | | | | Seems to have been left out by 874f5c1f463cad61f49e0ff7007852a73fd93e7c Pick-to: 6.7 Fixes: QTBUG-123478 Change-Id: Ic028c3786203cbc1c3d7316c1ae22c12a928b170 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* 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>
* SQL/ODBC: don't escape a driver stringChristian Ehrlicher2024-04-041-1/+1
| | | | | | | | | | | We must not try to escape a driver string, the user has to make sure that everything is correctly escaped when passing a complete driver string. This fixes a regression from QTBUG-122642. Pick-to: 6.7 Fixes: QTBUG-123444 Change-Id: I43316c7a09060f5c8117fdc3c464d239e37d9cdf Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* SQL/ODBC: don't create temporary QStringsChristian Ehrlicher2024-04-041-37/+35
| | | | | | | | | | | | | | ... but use QStringView instead in setConnectionOptions() and the dependent functions. Also remove the (undocumented) ability to pass the connection options in non-uppercase - this was never supported and all other plugins don't support this either. [ChangeLog][SQL][ODBC] All options must now be upper-cased as documented. Lower-cased options are no longer supported. Change-Id: I822db1ddf205c22fe939299c4ab741bbe9b56d65 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* SQL/SQLite: use categorized loggerChristian Ehrlicher2024-04-041-6/+11
| | | | | | | Use the categorized logger qt.sql.sqlite Change-Id: I70880fca579df56500ddc94a72bc6c616c475e67 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* SQL/MySQL: use categorized loggerChristian Ehrlicher2024-04-041-18/+27
| | | | | | | Use the categorized logger qt.sql.mysql Change-Id: I7e6529025dceb81c47571c65b7aea9bd274814e2 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* SQL/ODBC: use categorized loggerChristian Ehrlicher2024-04-041-2/+5
| | | | | | | Use the categorized logger qt.sql.odbc Change-Id: I1411e80fa33582857bafdf77baee75b293df56af Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* 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>
* Port QImage::Format_CMYK32 to CMYK8888Giuseppe D'Angelo2024-04-041-4/+4
| | | | | | | | | | | | Follow the established convention that byte-oriented image formats have the "8888" suffix, not "32". The old enum name is temporarily left to help port other submodules. This work has been kindly sponsored by the QGIS project (https://qgis.org/). Change-Id: I4b6f10cb22312b614cb9cf4b0ac439907276c538 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* 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>
* QCupsPrintEngine: handle a possible failure to open the cups fdGiuseppe D'Angelo2024-04-041-1/+14
| | | | | | | | I'm not familiar with CUPS APIs, so missing better judgment or a code comment, handle the possibility for a failure. Change-Id: I6f9afa9fdccaadbe199ce307f79e1d6050aa2939 Reviewed-by: Albert Astals Cid <aacid@kde.org>
* 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>
* XCB: remove dependency on QtOpenGLPrivateThiago Macieira2024-04-031-5/+0
| | | | | | | | We don't use that in the XCB library or plugin anywhere. Pick-to: 6.7 Change-Id: I5f663c2f9f4149af84fefffd17be8c7f3bd7bd14 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* JPEG plugin: CMYK code tidiesGiuseppe D'Angelo2024-04-031-11/+0
| | | | | | | | | | Remove unused code. This work has been kindly sponsored by the QGIS project (https://qgis.org/). Change-Id: I3db7705b3963d7a7669f8c9b284d3d35a2a7da92 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add support for CMYK file I/O in JPEGGiuseppe D'Angelo2024-04-031-10/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | JPEG part 6 defines CMYK support. This commit adds such support to the JPEG plugin. A *very* interesting discovery is the fact that Photoshop inverts the meaning of the CMYK color channels when saving into JPEG: 0 means "full ink", and 255 means "no ink". Most other image viewers/editors follow the same interpretation, I imagine for compatibility. But others, like Adobe Reader, don't (???) -- a PDF expects a DCT encoding with 0 meaning "no ink". I am adding a SubType to the image I/O handler to let the user choose what they want, defaulting to Photoshop behavior. Also, turns out that Qt was already loading CMYK files and converting them to RGB. I don't think we should do automatic, lossy conversions (we were not taking into account an eventual colorspace...), so I'm changing that loading to yield a CMYK QImage. Finally: save the colorspace, even if it's a CMYK image. QColorSpace doesn't support anything but RGB matrix-based colorspaces. Yet, it can load an arbitrary ICC profile, and will store it even if it's unable to use it. We can use this fact to preserve the colorspace embedded in CMYK images, or let users set an arbitrary ICC profile on them through Qt APIs, and then saving the result in JPEG. [ChangeLog][QtGui][JPEG] Added support for loading and saving of JPEG files in 8-bit CMYK format. When loading a CMYK JPEG file, Qt used to convert it automatically to a RGB image; now instead it's kept as-is. This work has been kindly sponsored by the QGIS project (https://qgis.org/). Change-Id: Ibdbfa16aa35814f5dba28c2df89577175162b731 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Windows: use MSG timestamps for input eventsGiuseppe D'Angelo2024-04-034-29/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Input events have a timestamp. When dispatching an event through QPA, a platform plugin can either provide it, or QPA will use an internal QElapsedTimer to provide a timestamp. Windows input messages do come with a timestamp already, so we can use that instead of the QPA. The two methods are not equivalent. For instance: for various reasons, Qt does not honor Windows' "double clicked" message, but uses the delta between two mouse events to establish if the second click is actually a double click. Now suppose that the user double clicks on a widget. On the first click, the application does something that freezes it for a bit (e.g. some heavy repainting or whatever). Does the second click register as a double click or not? * If we're using Qt's own timer, the answer is NO; the event is pulled from the WM queue after the freeze, given a timestamp far away from the last click, and so it will be deemed another single click * If we use the OS' timestamps, then the second click will be seen as "close" to the first click, and correctly registered as second click. This reasoning can be extended to many other QPA events, but looks like the APIs for some are missing (e.g. enter events), so I'm not tackling them here. This commit reverts ade96ff6446d4b0977d4e5f03b96b77ff8223b8b. Task-number: QTBUG-109833 Task-number: QTBUG-122226 Change-Id: I5f3fba029b44c618ef622bacdc4bcc3928e04867 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Yuhang Zhao <yuhangzhao@deepin.org>
* Invalid cast when setting parameter index in MimerGet/SetXXXFredrik Ålund2024-04-031-22/+22
| | | | | | | | Change the invalid static_cast<std::int16_t>(i)+1 to the correct static_cast<std::int16_t>(i+1). Change-Id: I5d3e17d29deb2a70fa0d7d7838531a3dc80b4e45 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Fix data() with long datatype for Mimer SQLFredrik Ålund2024-04-031-1/+1
| | | | | | | | | | | Calling data() for parameters of the type bigint failed in combination with stored procedures with output parameters. Cast the result to qlonglong to fix it. Pick-to: 6.7 6.6 Change-Id: I84ef04ed26821b92ef7c5bcdf12b778e91450e0b Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* macOS: Remove popup mouse and app activation monitors on app shutdownTor Arne Vestbø2024-04-031-0/+3
| | | | | | | | | | | | We're not guaranteed to get into any of the code paths that call removePopupMonitor() before the app goes away. In a plugin-scenario, this may cause crashes when our monitor then gets a callback and we try to access QGuiApplicationPrivate::instance(). Pick-to: 6.7 6.6 6.5 6.2 Fixes: QTBUG-123959 Change-Id: I287b91ff261a8aab74adbbad8c63a042daf944d5 Reviewed-by: Doris Verria <doris.verria@qt.io>
* Clean up windows accessibility backendMiguel Costa2024-03-279-22/+185
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | What was done: * Removed headers in src/gui/accessible/windows/apisupport: as of v13.1.0, MinGW supports most of the definitions in these headers. Including uiautomation.h should be enough. * Removed the QWindowsUiaWrapper class: it's not meant to be extended or itself instantiated, is an "ultra-thin" layer (it even preserves the "all-caps" Win types of function args), and is in effect only a MinGW-bound "kludge". Instead of this class, use the UI Automation API directly, with the assumption that it's available and fully functional, as specified in the MS docs. Any gaps between this assumption and what is delivered by MinGW are bridged with specific (and explicit) temporary "kludges". * Implemented said specific "kludges" in qwindowsuiautomation. For Windows builds, the header just includes uiautomation.h, and the .cpp is empty. For MinGW, the header contains definitions still missing from uiautomation.h, and the .cpp implements functions of the UI Automation core library through imports from the uiautomationcore DLL. * Windows plugins (and tst_qaccessibility): use the UI Automation API definitions directly, instead of the "ultra-thin" wrapper. * Windows plugin builds: use uiautomationcore library, if found. What's intended: * Unburden Gui of the Windows UI Automation COM interfaces and other definitions that are copied in the uia*.h headers. * Make the Windows plugins independent of MinGW shortcomings. * Remove the QWindowsUiaWrapper class that essentially only hides these shortcomings and the "kludge" code needed to overcome them. * As MinGW adds further support to the UI Automation API over time, make it noticeable which workarounds are no longer needed. The current approach of hiding "kludges" in a wrapper class will also hide the fact that they're no longer needed, if/when that time comes. Change-Id: I0070636817d5de81d0b106e9179e2d0442362e2a Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* configure: Fix -system-zlib and -system-sqlite optionsJoerg Bornemann2024-03-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These options are declared with TYPE enum and a MAPPING that's supposed to control the feature 'system-zlib' or 'system-sqlite'. Since only inputs of type boolean control features now, we need to somehow declare that this non-boolean input controls a feature. We do this by adding the keyword CONTROLS_FEATURE to qt_commandline_option. For example, qt_commandline_option(zlib CONTROLS_FEATURE TYPE enum NAME system-zlib MAPPING system yes qt no ) declares - commandline option "zlib" sets the input "system-zlib", because of the "NAME system-zlib" argument - accepted input values are "system" and "qt", because we have "TYPE enum" and the odd values of MAPPING - those values are translated to yes/no, because of the even values of MAPPING - CONTROLS_FEATURE forces the translated input's type to boolean, and with that it will set the corresponding feature 'system-zlib' Luckily, only qtbase has command line options with MAPPING declared. Change-Id: I82d06cec43ece3b002c8f5dd414c68dc730909af Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QWindowsVistaStyle:Revert polishing of QAbstractScrollArea/QGraphicsViewWladimir Leuschner2024-03-251-12/+0
| | | | | | | | | | Revert the polishing for QAbstractScrollArea and QGraphicsView introduced in a1f12273b2e355033ab2a9478d1e9702210a0733 Fixes: QTBUG-123722 Pick-to: 6.7 6.7.0 Change-Id: I9db9079c672f4bf70ce3401382a5843855df2c4a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* xcb: try to repopulate xinput2 devices when neededLiang Qi2024-03-221-1/+10
| | | | | | | | | | And try to not call Q_ASSERT() to avoid crash. Fixes: QTBUG-123554 Pick-to: 6.7 6.6 6.5 Change-Id: I9443c5f0ab4ca7a858df9b328f517b48ab8f122d Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* wasm: Document and test OpenGLContext limitationsEven Oscar Andersen2024-03-221-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a limit in WebGL that OpenGL context sharing is not supported. There is a proposal from 2013 (https://www.khronos.org/webgl/wiki/SharedResouces), but it seems that it never was implemented. There is an additional limit in that there is exactly one WebGL context for each canvas (i.e. window). A part of the problem here is that the identifier for an OpenGL context is essentially a surface-thread-context triplet. And the thread part might be more difficult to handle in a javascript setting. Regardless of why, we need to have an opinion about what the consequences are, and what we support to what extent. As such this commit: 1) Adds a comment on the QOpenGLContext describing the limitations 2) Adds a qWarning() on the first activation of a shared context. The second item is not complete. We will have problems with multiple individual contexts also, It is just not possible to warn for these cases. The second item covers, maybe, the most common case. Change-Id: I51550a6acb0a7f6f6fa5e9e2c3da080a1d2b498f Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QWindows11Style: Add offset for decoration in QComboBoxPrivateContainerWladimir Leuschner2024-03-211-4/+10
| | | | | | | | Pick-to: 6.7.0 6.7 Change-Id: Ib9043e1b3041c88d757ddd5ada6c0edcf2bb6129 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QAbstractFileEngine: remove member FileTime and use QFile::FileTimeAhmad Samir2024-03-212-3/+3
| | | | | | | | | This is probably a remnant from when QAbstractFileEngine was public API since it's been changed to private API, just use QFile::FileTime. Pick-to: 6.7 Change-Id: I60d3d4ff811f95434b81d5ca115f5d43cfff8b15 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>