summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* QRhi: support uniforms of int and ivec arrays in GLES2 backendInho Lee2022-07-051-21/+58
| | | | | | | Uniforms of int and ivec arrays are supported from GLES v2.0. Change-Id: I9a08db18f584e39b4f71b7348a2a1fe4089bfce4 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* tst_QSslKey: prepare for the migration to OpenSSL v3Timur Pocheptsov2022-07-051-12/+42
| | | | | | | | | | | | Many algorithms (ciphers etc.) had become 'legacy' in OpenSSL v3, meaning they are not available by default. Since we don't mess with loading providers and don't load the 'legacy' one, we have to skip tests involving such algorithms. Pick-to: 6.4 6.3 6.2 5.15 Fixes: QTBUG-104232 Change-Id: Ieceabeb080e531aeb24f733cb8c83ad08a25049c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Remove Q_DECL_VECTORCALL when SSE2 is not availableAllan Sandfeld Jensen2022-07-051-2/+6
| | | | | | | | | | It expands to sseregparm in gcc, and then can't build with SSE2 disabled. Pick-to: 6.4 6.3 6.2 Fixes: QTBUG-104726 Change-Id: I063ed87ed7f7ba683a19cd3f6e8a25c5111ef72a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* macOS: Ignore deprecation for kOnSystemDisk icon domainTor Arne Vestbø2022-07-051-1/+1
| | | | | | | | There's no good replacement yet, so for now ignore the deprecation. Pick-to: 6.2 6.3 6.4 5.15 Change-Id: I56928b73c47b677e3fdafd35cc5ae558e5285314 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QStringConverter: Do not use std::optional::value()Ulf Hermann2022-07-051-1/+1
| | | | | | | | | | | | | | | | value() can potentially throw an exception. We know that it doesn't in this case, but the compiler doesn't know. And our code checker doesn't know either and generates lots of false positives. Also, without the exception propagation code the resulting binary is probably smaller. Coverity-Id: 386110 Coverity-Id: 384314 Coverity-Id: 383835 Coverity-Id: 383784 Pick-to: 6.4 Change-Id: Icdacf8e003fd3a6ac8fd260ed335239a59de3295 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QListview: PageDown/Up infinite loopTang Haixiang2022-07-052-3/+30
| | | | | | | | | | | When item.height > viewport.height, the next item is not found correctly, resulting in an infinite loop. In this case, move directly to the next item. Pick-to: 6.4 6.3 6.2 Change-Id: I67a40a079ca9dd9189bf84ae550758c685b83d75 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* tst_qwindow: modify some abnormal touch testsTang Haixiang2022-07-051-39/+39
| | | | | | | | | | | | Under normal circumstances, when the second point is touched, the first point has not been released, and the message at this time should contain two touch points. We are simulating the case where the message is lost when the popup is closed by touch. Amends efc02f9cc301f98c77079adae026ffd07f50d5ab Pick-to: 6.4 6.3 6.2 Change-Id: Ic722e3dbd615c46076ede26611d0107501c5e274 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* CMake: Fix missing include directories from qmake support filesJoerg Bornemann2022-07-051-1/+1
| | | | | | | | | | | | The include paths in QMAKE_INCDIR_FOO entries in qt_lib_XXX.pri files are filtered to not contain implicit include directories. We must enclose the regular expression with ^...$ to avoid catching too many paths like any subdirectory of /usr/include. Fixes: QTBUG-104736 Change-Id: I2d40e6ec6d3f3421d591fed90b4dd9ebbbeb59f4 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Create and include plugin packages in shared buildsAlexandru Croitor2022-07-054-13/+13
| | | | | | | | | | | | | | | | | | | | | | Previously QtModulePlugins.cmake files were only created and included in static library Qt builds. Having the targets available in shared library builds would be useful for custom project deployment purposes. One could query the location of the plugins or use various generator expressions referencing their location. Ensure we always generate and include the QtModulePlugins.cmake files regardless of the build type. Allow opting out of including the files by setting QT_SKIP_AUTO_PLUGIN_INCLUSION to ON, just like we allow for Qml plugins with QT_SKIP_AUTO_QML_PLUGIN_INCLUSION. Pick-to: 6.4 Fixes: QTBUG-94066 Change-Id: I69a5dc17762a8e43265578fc33b82b5c4b7a1f5c Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* CMake: Move plugin package inclusion logic into a common functionAlexandru Croitor2022-07-052-62/+66
| | | | | | | | | | Don't duplicate the logic of plugin package inclusion for each Qt module. Instead move it into QtPublicPluginHelpers.cmake. Pick-to: 6.4 Task-number: QTBUG-94066 Change-Id: I5e1f5176a0e754ed56a792c97865752529462617 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* CMake: Improve 'Generating Plugins' messageAlexandru Croitor2022-07-051-1/+6
| | | | | | | | | | | | | | Use message(STATUS) for the 'Generating Plugins' message. This way it will go to stdout instead of stderr, which follows the convention we have for most of our other messages. Also list only the modules that actually have plugins, rather than all known modules. Pick-to: 6.2 6.3 6.4 Change-Id: I1ea0ed71418ede54790cabd32e03e82fc69f2858 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* rhi: Keep track of pipeline creation timesLaszlo Agocs2022-07-0514-38/+144
| | | | | | | | | | | | | | | | | | | | | Make our QRhiMemAllocStats struct a bit more generic, drop the memory allocation part in the naming, and use the same getter and struct for reporting some important timings. (we are free to rename for now, there are no users in other modules yet) The time spent in graphics (or compute) pipeline creation has a special relevance in particular with the modern APIs (as it is the single biggest potentially time consuming blocking operation), but also highly interesting with others like D3D11 simply because that's where we do the expensive source-to-intermediate compilation is HLSL source is provided. In order to see the effects of the various caching mechanisms (of which there can be confusingly many, on multiple levels), the ability to see how much time we spent on pipeline creation e.g. until we render the first view of an application can be pretty essential. Task-number: QTBUG-103802 Change-Id: I85dd056a39db7e6b25fb1f9d02e4c94298d22b41 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* rhi: Make it possible to query the backend name beforehandLaszlo Agocs2022-07-055-25/+16
| | | | | | | | | | | | | | | | The goal is to make it possible to implement QSGRhiSupport::backendName() in Qt Quick with just a single line: return QString::fromUtf8(QRhi::backendName(m_rhiBackend)); instead of duplicating the strings and the logic. Similarly, QBackingStoreRhiSupport can now drop its apiName() helper entirely. Change-Id: Ia8cbb1f1243539ed4d7a98e71dcc2ed56b017e40 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* rhi: Fix a doc snippetLaszlo Agocs2022-07-051-3/+6
| | | | | | | | | Docs are private for now, but it is still preferable that the code snippets in there are up-to-date. Change-Id: Icaf28d9b6a9ac029755ba241263f59d5091aa1b5 Reviewed-by: Inho Lee <inho.lee@qt.io> Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* QDom: Use the default for assignment operators in QDom* classesSona Kurazyan2022-07-051-53/+14
| | | | | | | | | | | These classes are all derived from QDomNode, and their assignment operators are directly or indirectly calling the ones from QDomNode by explicitly converting to it. We can just use the default assignment operators instead. Change-Id: I1e3d4eef2188d124e5d54a909eb18bb93ddaa110 Pick-to: 6.4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDomDocument: some doc fixesSona Kurazyan2022-07-051-8/+4
| | | | | | | | | | | - removed outdated docs about QXmlParseException (a leftover from SAX-based implementation) - replaced 0 with nullptr - fixed a typo Change-Id: I96362be8bb6a5f1b23eb8999416b6b04228e0a5f Pick-to: 6.4 6.3 6.2 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Add support for naming JNI functions with the unstringify macroJuha Vuolle2022-07-053-2/+34
| | | | | | | | | | | | | | The manually defined native JNI function tables allow defining a name that may be different from the actual function name; this name is then used from the Java-side. This can be useful to provide also as an option with the new "unstringifying" macros which can help for example in porting code to these new macros. Pick-to: 6.4 Change-Id: Icfebfb351cb8dfb122795d20b37e2eac167a41bf Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* wasm: enable sql/sqlite for non threaded buildsLorn Potter2022-07-052-1/+5
| | | | | | | | | [ChangeLog][QtSql][Wasm] Enable sqlite for non threaded builds Pick-to: 6.4 Fixes: QTBUG-70505 Change-Id: I7cb6f52c81a6e8a60249f7bcaa8ee29f109f7b84 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QDockWidget warning log for an unexpected situationThorbjørn Lund Martsum2022-07-051-1/+4
| | | | | | | | | | It didn't enter the original patch because it would prevent it to be backported to 6.2 and 5.15. Pick-to: 6.3 6.4 Change-Id: I9af30b86b98d5d101b0784cf45781cf46d216c6d Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Doc: add missing "see also"Volker Hilsheimer2022-07-041-0/+1
| | | | | | Pick-to: 6.4 Change-Id: Ibeb7d48a8c4c3e0e2000280bd85db943fc73c1c7 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* qgraphicsitem_cast: replace 0 with nullptrMarc Mutz2022-07-021-2/+2
| | | | | | | | | While headerscheck doesn't detect this (generic code), this might trigger warnings in user code. Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I6183323d0a1c73b021699d4c4afa2d1fcf71aad2 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Harden drag and drop handling in widget windowLaszlo Agocs2022-07-012-7/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | User code in an event handler can do arbitrary things, including operations that lead to destroying the QWidgetWindow. An example is what the autotest does: reparenting the top-level widget to under another top-level upon the drop. Internally this leads to destroying the drop target's QWidgetWindow as the widget is now a child, not a top-level. In fact some of the existing drag and drop handling code seems to be prepared to handle the case of having the drag target widget destroyed in the user's event handler during a drag-move. But none of it is prepared for having the QWidgetWindow destroyed upon returning from forwardEvent(). The associated bug report has the same root cause, it is just popping up now via the new 6.4 behavior: adding a QOpenGLWidget to a widget hierarchy upon a drop leads to getting a new QWidgetWindow (if the window only had regular raster widgets before). To solve this, avoid touching members on 'this' after the forwardEvent(). It looks like the handlers for mouse events follow this pattern already, no member data is touched after forwarding events (not sure if that is intentional or just incidental but it is the safe solution, even if this is not feasible everywhere, but ideally input events should take this into account). Fixes: QTBUG-104596 Pick-to: 6.4 6.3 6.2 Change-Id: I96c704cadcd799fc5619b776e939dfdf313a27dd Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* CMake: Fix qml plugin prl files not to have hardcoded pathsAlexandru Croitor2022-07-022-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | The previous fix 754512a64dffa20165e5b08b77e34b82c072f7f8 did not handle qml plugins, which meant that they would still have hardcoded paths and see warnings like the one below when generating the prl files CMake Warning (dev) at cmake/QtFinishPrlFile.cmake:103 (message): Could not determine relative path for library qml/QtQml/WorkerScript/libworkerscriptplugin_debug.a when generating prl file contents. An absolute path will be embedded, which will cause issues if the Qt installation is relocated. Handle qml plugins as well. Amends 754512a64dffa20165e5b08b77e34b82c072f7f8 Amends f4e998125981038e5e50dab8cc56039faaa0b750 Pick-to: 6.2 6.3 6.4 Fixes: QTBUG-104708 Task-number: QTBUG-104396 Change-Id: Icfb1069d1cb0a39a35004b20e58ee6e386d14f3b Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Fix confusing FPHSA zstd version warning messageAlexandru Croitor2022-07-021-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | Previously if zstd was not found, one would see such a warning message Could NOT find WrapZSTD: Found unsuitable version "", but required is at least "1.3" (found ZSTD_LIBRARY-NOTFOUND) This is because PC_ZSTD_VERSION was a defined variable with an empty value, which makes FPHSA believe that a version was extracted from somewhere. Avoid passing that value directly. Now the warning message is Could NOT find WrapZSTD (missing: ZSTD_LIBRARIES ZSTD_INCLUDE_DIRS) (Required is at least version "1.3") Pick-to: 6.2 6.3 6.4 Change-Id: I88760d94db0d869d328085996298f4aaa88bc6c2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Rewrite double-conversion find moduleAlexandru Croitor2022-07-026-58/+84
| | | | | | | | | | | | | | | | | | | Rename FindWrapDoubleConversion.cmake into FindWrapSystemDoubleConversion.cmake. Merge contents of Finddouble-conversion.cmake into the one above. This allows users to provide their own Finddouble-conversion.cmake file (Conan can do it). Don't mark the system package as required, because we have a bundled one too. Add link to upstream. Make sure to show either Config file or library path when one is found. Pick-to: 6.2 6.3 6.4 Fixes: QTBUG-104541 Change-Id: I9ea2330697c6fc280328849ca11522291c4073d8 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Don't force CONFIG mode when looking for system PCRE2Alexandru Croitor2022-07-021-1/+5
| | | | | | | | | | | | | | | This allows picking up 3rd party Find modules. One use case is Conan-generated Find modules. Also add TODO in case we ever need to handle finding the upstream target name rather than the Hunter chosen one. Pick-to: 6.2 6.3 6.4 Fixes: QTBUG-104542 Change-Id: I243987c657f74e8127076666d9734b2b657bc0ee Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Fix lookup of system PCRE2 versionAlexandru Croitor2022-07-021-1/+1
| | | | | | | | | | | | | | | | | | | The version option needs to be specified before the COMPONENTS option, otherwise it is treated as another component. This causes failures when a Conan provided FindPCRE2.cmake script is picked up, which actually does validation of component names based on the component information stored in the conanfile.py recipe. Move the version value to be before COMPONENTS. Amends 1007aac63a378c1b09f221f9b58b65bb56f9e9e8 Pick-to: 6.2 6.3 6.4 Task-number: QTBUG-104542 Change-Id: I92c70f266a07c4aabdadcecda1ba7e107a033604 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Cocoa: deal with unexpected tablet events without proximityShawn Rutledge2022-07-011-6/+10
| | | | | | | | | | | | | | If the user has a Wacom stylus in proximity of the tablet already (perhaps left it lying on the tablet) and starts a Qt application, we don't get to see a proximity enter event, so a lot of device information is missing; nevertheless, creating a stop-gap device (with ID 0, type Unknown) makes it possible to get basic QTabletEvents with pressure, until the next time the stylus leaves and comes back into proximity. Pick-to: 6.4 Fixes: QTBUG-65559 Change-Id: Ibacbdb78461c0b62d4040c80d210a1b06074e952 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QLayout: add className() to a warning messageAhmad Samir2022-07-013-12/+13
| | | | | | | | | | | | | | | | Since objectName() isn't always set, the className() makes it slightly easier to find and fix the issue. Also unify some wording "produce a warning", which is generic enough to fit: print warning in terminal print warning in logviewer (if you're unlucky and have to use Windows?) print warning in system journal (if you're unlucky have to use binary systemd journal logs) Pick-to: 6.4 Change-Id: I7522d65666cb5829c33c45039b8646dd535e21ea Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* iOS: Send touch events asynchronously to avoid deadlocking UIKit event loopTor Arne Vestbø2022-07-011-2/+10
| | | | | | | | | | | | | | | | | | | | | | Although CFRunLoop is documented to support nesting, the UIKit event delivery machinery is not prepared to handle nested event loops. If the user starts a nested event loop in response to e.g. a button press/release, it will deadlock the entire UIKit event machinery, stopping processing of both screen updates (CATransactions) as well as other events. This became an issue on iPhone hardware device in iOS 15, but can not be reproduces on iPads or in the simulator. To be on the safe side, we deliver all touch events asynchronously, even if that means the application code will always be one step behind the event delivered by the operating system. Fixes: QTBUG-98651 Pick-to: 6.4 6.3 6.2 5.15 Change-Id: Id0a9fa60b7bb7aa98606d46257e99eac144a1080 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QCOMPARE: Fix a typo in the documentationLaszlo Papp2022-07-011-1/+1
| | | | | Change-Id: If21359397ef7873592b94838647aee121b84b33a Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* CMake: Record used package version for each target dependencyAlexandru Croitor2022-07-0110-13/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When recording which package version to look for in QtFooModuleDependencies.cmake and other files like it, instead of using PROJECT_VERSION, use the version of the package that contains the dependency. For example if we're hypothetically building the qtdeclarative repo from the 6.4 branch, against an installed 6.2 qtbase, then the Qt6QmlModuleDependencies.cmake file will have a find_package(Qt6Core 6.2) call because qtdeclarative's find_package(Qt6Core) call found a 6.2 Core when it was configured. This allows switching the versioning scheme of specific Qt modules that might not want to follow the general Qt versioning scheme. The first candidate would be QtWebEngine which might want to follow the Chromium versioning scheme, something like Qt 6.94.0 where 94 is the Chromium major version. Implementation notes. We now record the package version of a target in a property called _qt_package_version. We do it for qt modules, plugins, 3rd party libraries, tools and the Platform target. When we try to look up which version to write into the QtFooModuleDependencies.cmake file (or the equivalent Plugins and Tools file), we try to find the version from a few sources: the property mentioned above, then the Qt6{target}_VERSION variable, and finally PROJECT_VERSION. In the latter case, we issue a warning because technically that should never have to happen, and it's a bug or an unforeseen case if it does. A few more places also need adjustments: - package versions to look for when configuring standalone tests and generating standalone tests Config files - handling of tools packages - The main Qt6 package lookup in each Dependencies.cmake files Note that there are some requirements and consequences in case a module wants to use a different versioning scheme like 6.94.0. Requirements. - The root CMakeLists.txt file needs to call find_package with a version different from the usual PROJECT_VERSION. Ideally it should look for a few different Qt versions which are known to be compatible, for example the last stable and LTS versions, or just the lowest supported Qt version, e.g. 6.2.6 or whenever this change would land in the 6.2 branch. - If the repository has multiple modules, some of which need to follow the Qt versioning scheme and some not, project(VERSION x.y.z) calls need to be carefully placed in subdirectory scopes with appropriate version numbers, so that qt_internal_add_module / _tool / _plugin pick up the correct version. Consequences. - The .so / .dylib names will contain the new version, e.g. .so.6.94 - Linux ELF symbols will contain the new versions - syncqt private headers will now exist under a include/QtFoo/6.94.0/QtFoo/private folder - pri and prl files will also contain the new version numbers - pkg-config .pc files contain the new version numbers - It won't be possible to write find_package(Qt6 6.94 COMPONENTS WebEngineWidgets) in user code. One would have to write find_package(Qt6WebEngineWidgets 6.94) otherwise CMake will try to look for Qt6Config 6.94 which won't exist. - Similarly, a find_package(Qt6 6.4 COMPONENTS Widgets WebEngineWidgets) call would always find any kind of WebEngine package that is higher than 6.4, which might be 6.94, 6.95, etc. - In the future, if we fix Qt6Config to pass EXACT to its subcomponent find_package calls, a find_package(Qt6 6.5.0 EXACT COMPONENTS Widgets WebEngineWidgets) would fail to find WebEngineWidgets, because its 6.94.0 version will not be equal to 6.5.0. Currently we don't pass through EXACT, so it's not an issue. Augments 5ffc744b791a114a3180a425dd26e298f7399955 Task-number: QTBUG-103500 Change-Id: I8bdb56bfcbc7f7f6484d1e56651ffc993fd30bab Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* CMake: Don't show the incompatible version warning when not neededAlexandru Croitor2022-07-011-1/+9
| | | | | | | | | | | | | | | | If a find_package(Qt6Foo) call has the QUIET option passed, don't display the incompatible version warning. Also if the find_package call has the EXACT option passed, and the searched for version does not match the package version exactly, there's no point in showing the warning because find_package will reject the package anyway, even if we set PACKAGE_VERSION_COMPATIBLE to TRUE Pick-to: 6.2 6.3 6.4 Change-Id: I78ef95cf4a045034fc50853465f3ba1db84bba63 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* IM: Don't let all widgets support IM by defaultRichard Moe Gustavsen2022-07-013-3/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A new property Qt::ImEnabled was added in Qt 5.3. Since the already existing widgets with IM support (3rd party included) didn't implement this property, QWidget got the fall back logic that if a widget was queried for Qt::ImEnabled, and the returned QVariant was invalid (the widget didn't implement it), we would, for backwards compatibility with Qt 4, return "true" (meaning that the widget supports IM). But a side effect from this fallback logic, is that now any widget that doesn't implement ImEnabled (or input methods at all) report that they support IM. This will confuse platforms like iOS, which uses ImEnabled to decide if the input panel should show, and if text selection tools should be enabled. The result is therefore that if you click on a QPushButton, the input panel will open. This patch will implement a more careful strategy to check if a widget implements IM, if ImEnabled is missing. Rather than saying that all widgets that don't implement ImEnabled supports IM, we now require that the widget also returns a valid QVariant for Qt::ImSurroundingText. We assume then, that a widget that doesn't do so will anyway not be in need of input method support from the platform. Fixes: QTBUG-104527 Pick-to: 6.4 6.3 6.2 Change-Id: Ib391fd1daae92c4325e9ccb59730fbdd7c9328fc Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QWindowPrivate::setMinOrMaxSize: port to function_refGiuseppe D'Angelo2022-06-302-5/+5
| | | | | | | | | | The "callbacks" passed to setMinOrMaxSize are not stored and outlive the callee. Therefore, don't use std::function to pass them (by value (!)); instead employ the recently-added function_ref. Change-Id: I37eea020920a76c063265e667c99a6040394d645 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Create a promise wrapper for C++ and port existing usesMikolaj Boc2022-06-307-99/+977
| | | | | | | | | | | | | | | Currently, to use a promise from C++ we either have to use an ASM block (which does not work well with dynamic linking) or declare exports in the EMSCRIPTEN_BINDINGS block, which is cumbersome and cannot be chained. This solution makes it easy to use js promises by introducing the WebPromiseManager which dispatches callbacks to appropriate callers when available. This is a preliminary patch for FileSystem support, which will heavily use async APIs. Task-number: QTBUG-99611 Change-Id: I368a8f173027eaa883a9ca18d0ea6a3e99b86071 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Windows: Don't rely on top level QWindow to scale children on DPI changeTor Arne Vestbø2022-06-301-13/+9
| | | | | | | | | | | | | | | | | The native size of a QWindow on Windows is the logical size of the window times the window's device pixel ratio. We manage this relationship for top level windows via the WM_GETDPISCALEDSIZE message, and during WM_DPICHANGED we then applied the same scale to child windows. This is problematic in the case where a child window does not have a QWindow parent, so instead of scaling all children when the parent gets a WM_DPICHANGED message, we scale each individual child in the child's WM_DPICHANGED_AFTERPARENT message. Task-number: QTBUG-103383 Pick-to: 6.4 Change-Id: Ia0845aa19a3bb97b7bc9e7d9554ac02b95ca65a5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix QDockWidget move between screens with different dprThorbjørn Lund Martsum2022-06-292-1/+30
| | | | | | | | | | | | | | | | | | | When partly moved back and forth between screens with different dprs (device pixel ratios) unexpected jumps and size changes could occur. (See the linked issue for details) This patch maps global coordinates to native ones and vice versa (in QDockWidgetPrivate::mouseMoveEvent()), so that the calculated position is the right coordinate on the right screen. Pick-to: 6.4 6.3 6.2 5.15 Fixes: QTBUG-104205 Change-Id: I0e59792a946e0444fed2e2b857f2f8b140afc9b7 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Forward COMPILER_LAUNCHER to the ABI-specific external projectsAlexey Edelev2022-06-291-0/+8
| | | | | | | | | This allows to speed-up the build of external projects. Pick-to: 6.3 6.4 Change-Id: I3bbdbd6ec5b0920c9e912cb59a6e16c5a8efa0ec Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Use the main ABI's CMAKE_MAKE_PROGRAM in ABI-specific external projectsAlexey Edelev2022-06-291-0/+4
| | | | | | Pick-to: 6.3 6.4 Change-Id: Ie35b6a334be419d3182fe77f9d70153cd1fd8a51 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Let qt6_add_plugin accept sourcesJoerg Bornemann2022-06-296-13/+5
| | | | | | | | | | | The commands qt6_add_executable and qt6_add_library both accept a list of sources that get automatically added to the created target. Extend qt6_add_plugin to also accept sources for consistency. Fixes: QTBUG-104189 Change-Id: Iad5d8c5b31551663be155d068d55e770e1a91b27 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Doc: Clarify qmake's c++latest CONFIG valueJoerg Bornemann2022-06-291-2/+4
| | | | | | | Fixes: QTBUG-104631 Change-Id: I1d2b7de0f76de9c6ba4b7e47de7e777fedc7bd30 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* wasm: add qtwasmtestlibMorten Johan Sørvig2022-06-295-0/+416
| | | | | | | | | | | | | | | | | | | | | | | | qtwasmtestlib supports writing asynchronous tests for the web platform. Asynchronous test functions differ from normal test functions in that they allow returning from the test function before the test has completed: void TestObject::testTimer() { QTimer::singleShot(100, [](){ completeTestFunction(); // Test pass if we get here }); } Currently one logging backend is supported which writes the results to an html element. See the README file for further documentation. Change-Id: Ia633ad3f41a653e40d6bf35dd09d62a97c608f84 Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Android: fix wrong position of cursor handle and editpopup menu in split screenPekka Gehör2022-06-292-6/+16
| | | | | | | | | | | | Use activity location in the Window to handling a cursor handle and editpopup menu in Multi-Window mode. No effect when using full screen. Fixes: QTBUG-58503 Pick-to: 5.15 6.2 6.3 6.4 Change-Id: I17f3119be4c3dda2fca50156bf62c1260c2ea1f6 Reviewed-by: Samuel Mira <samuel.mira@qt.io> Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Android: Fix the offset of the EditPopupMenuPekka Gehör2022-06-291-3/+14
| | | | | | | | | | Fix the offset of the EditPopupMenu on application window. Issue caused by a5bb7b3ca510c301baf84e1dd46d5aeeb4986eb2 Fixes: QTBUG-71900 Pick-to: 6.2 6.3 6.4 Change-Id: Ib95e1544fe91c273bc5317bd338a50a74fb1090a Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Drop call to setPlatformScreen in QHighDpiScaling::setScreenFactorFushan Wen2022-06-294-24/+23
| | | | | | | | | | | | | | | | | Drop call to setPlatformScreen since the only affected variables are logicalDpi and geometry. Replace setPlatformScreen with updateLogicalDpi which handles global scale factor changes in QScreen. Call updateGeometriesWithSignals() to check if there are any changes in geometry or availableGeometry, since the geometry or availableGeometry can also change when setting a scale factor. Move setPlatformScreen to QScreen ctor as the function is not used elsewhere. Pick-to: 6.4 6.3 6.2 Change-Id: I7acf40bf0643e89a1d9177674d66dc503829f98f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Don't trigger qBound assert in QExpandingLineEditVolker Hilsheimer2022-06-291-1/+1
| | | | | | | | | | | Ignore the original width if it's larger than maximum. Fixes: QTBUG-104383 Fixes: QTBUG-104565 Pick-to: 6.4 6.3 6.2 Change-Id: Id86d4f5bd1d50304d95c4711f1989f4dae416b69 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* moc: fix const-init for WindowsThiago Macieira2022-06-282-5/+5
| | | | | | | | | | | | | | | | | | References to __declspec(dllimport) is not a constant expression on Windows, so we can't have a direct reference to a staticMetaObject. Commit 9b8493314dd77f3e96b353187816bb7ef4dedbb5 fixed the Q_OBJECT parent link (added in 5.14, kicked in for 6.0 with the ABI break), but commit 656d6f2a9b221dbd5adfc46262cb243e696d8d62 added links for Q_GADGETs too without taking the need for Windows DLLs into account. This change is a no-op everywhere but Windows. On Windows, since we store the pointer to the indirect getter function, now you may get non- null pointers from QMetaObject::superClass(). Pick-to: 6.4 Change-Id: I6d3880c7d99d4fc494c8fffd16fab51aa255106e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* moc: move the qt_static_metacall below the staticMetaObjectThiago Macieira2022-06-281-10/+11
| | | | | | | | | Just so we have data structures and functions grouped together. Pick-to: 6.4 Change-Id: Id0fb9ab0089845ee8843fffd16fa171f6e1caf2b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* qmetatype.h: remove unnecessary specializationThiago Macieira2022-06-281-7/+0
| | | | | | | | | Commit 5db3fd29b42ec06ccb15fdd7f274bb20c326ffb6 removed the expansions that likely needed this. Pick-to: 6.3 6.4 Change-Id: I6d3880c7d99d4fc494c8fffd16fbbe8dcde4a1b1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>