summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Set Qt::SubWindow on windows embedded by QWidget::createWindowContainerTor Arne Vestbø2021-09-101-0/+2
| | | | | | | | | | | | | | | | The embedded window is parented into the containing QWindowContainer widget, which may either have a window handle itself, or is a child of a widget that has one (typically the top level). By setting Qt::SubWindow we inform clients about the embedded window's place in the world, allowing e.g. QPlatformIntegration::defaultWindowState to choose the correct state (Qt::WindowNoState) for the window instead of making it Qt::WindowMaximized on iOS. Change-Id: Icf834192d99fee455aaba3c57bee1a4f1fde5025 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 296621a52f220dfd5456f6fb936f513a7b85b1af) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Always give Qt::SubWindows a default window state of Qt::WindowNoStateTor Arne Vestbø2021-09-101-0/+3
| | | | | | | | | | | On platforms such as iOS, the default window state is Qt::WindowMaximized, so that calling show() will fill the entire screen. But sub-windows should not get this treatment, as their geometry is typically managed manually. Change-Id: Ib17c2011a16baf6023fe368b94fa7f38e12bd777 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit c066cd260087199ed309600d1b924af270cc3a14) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix binding guard in property evaluationIvan Solovev2021-09-101-9/+9
| | | | | | | | | | | | The comment for keepAlive means that it should be destroyed after the updateGuard goes out of scope and restores its value. In this case keepAlive should be actually created *before* updateGuard, not after it. Task-number: QTBUG-96303 Change-Id: I4f8e67b49c1d6579228e22111105fb936f1f94db Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 248f0aad1c4f1c6e7e03ad265c2011390dca75ef) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Move some CMake commands out of tech preview statusCraig Scott2021-09-102-4/+0
| | | | | | | Task-number: QTBUG-95712 Change-Id: I6739e5d2fb4716f40e99576a73f57bca51060e92 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 9ad8d2c0d4fe4edbbdc9619ba1c6a25a66dcdcd3)
* Add documentation for the NO_DEFAULT option for qt_import_plugins()Craig Scott2021-09-101-1/+5
| | | | | | | Task-number: QTBUG-95712 Change-Id: I3ba7fa52fa38c2ee1f9080f91894c36504a4f451 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 1fed96d19f8f0a4a7d56117a22d67396d0aa26ac)
* Remove inline docs for qt_import_plugins() to avoid duplicationCraig Scott2021-09-102-19/+2
| | | | | | | | | | | | | | | Don't maintain two copies of the docs for qt_import_plugins() in separate places. Remove the inline docs because they are not the canonical ones that the user docs contain. Also remove the TODO and qml plugins. Those are now handled by a separate command, qt_import_qml_plugins(). Add a "see also" link to assist in discoverability. Task-number: QTBUG-95712 Change-Id: I3bb872f77a1b57fd5f2f4fe1355625c47e44a351 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 2e4d8d8ec52a56470beeb43b8f08f12953a17d4f)
* Remove unused qt5_... CMake command snippetsCraig Scott2021-09-091-38/+0
| | | | | | | | Task-number: QTBUG-95712 Change-Id: I92535fd96937638bb8997a63455ba5152055b72a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 2ad35d133a8d71d4ce21e25df7b12b70cc2f8151) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Split up cmake-macros.qdoc into one file per commandCraig Scott2021-09-0912-633/+893
| | | | | | | | Task-number: QTBUG-95712 Change-Id: Ieeb4293fb8d17c57fb25e0ac5cd333b07fc53278 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 944c424ff601fe546a0ac83e0d8b3f781beb68f6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update Qt5:: namespaced targets in snippets to versionless Qt::Craig Scott2021-09-091-4/+4
| | | | | | | | | | | | | The docs for CMake commands all show the versionless commands as the primary name, with versioned commands added as a note. Use the same preference for targets for consistency and update the Qt5:: namespaces to Qt:: rather than Qt6::. Task-number: QTBUG-95712 Change-Id: I6bf1929a11656f88e27bb5877e9521a3a651361e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit afb7d3b814ee30ae9673a925612fcd2ed676c661) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Move CMake-related doc files into their own subdirectoryCraig Scott2021-09-093-0/+0
| | | | | | | | | | | This is in preparation for splitting up the cmake-macros.qdoc file into one file per command. Task-number: QTBUG-95712 Change-Id: I9e56b88139cc6a53cd03cbed3d14404577f89faa Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 5b58fbf9a2aa1027fdbe4ade0f796775cc4b0a24) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Clear up QWindow::isActive() documentationTor Arne Vestbø2021-09-081-1/+3
| | | | | | | | | | | The isActive function does not determine if a window should be active, but whether it is currently active. The way the documentation was phrased may have lead people to believe the former. Change-Id: I05a4cb3d8784a2fefa24bdd42ea96cfdae22b9d1 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> (cherry picked from commit c138f55591ff916bad51ff3f80350df0587b1115) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* SQLite: Update SQLite to v3.36.0Andy Shaw2021-09-083-2976/+4341
| | | | | | | | | [ChangeLog][QtSQL][SQLite] Updated SQLite to v3.36.0 Change-Id: I05cde47b757455dfd438405bfba1818c7f6eec00 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit b919fc8fd038bd04a88717269dce1fdf443af442) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* rhi: Reset resource state tracking tables upon layout-compatible updatesLaszlo Agocs2021-09-073-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...just like create() would do when requesting a full rebuild. Not relevant for the OpenGL backend, while D3D and Metal may get away without doing this, but the Vulkan backend gives visible rendering errors in Qt Quick once updateResources() is taken into use and a scene manages to do the "right" amount and types of changes. The most common source is a changing uniform buffer offset. Consider how the Qt Quick scenegraph merges uniform data into a single buffer in unmerged batches (i.e. when a set of geometry nodes cannot be batched together in a single draw all). While each node gets its own draw call, each associated srb refers to the same uniform buffer at binding point 0, just with a different offset. Without the layout-compatible-update optimization (that is QRhiShaderResourceBindings::updateResources()) this is not something that needs extra care: once an srb is built or rebuilt (by calling create()), the offset, just like the resource itself is fixed and cannot change. And once create() is called, it conveniently invalidates all related data structures, leading to the subsequent setShaderResources() rewrite descriptors (incl. the resource, the offset, etc.) with Vulkan or do whatever is relevant with other backends. updateResources() only does the minimum amount of changes because we know that the binding list layout has not changed. It turns out this was a bit too minimal, because certain state tracking data structures still need resetting, just as if we called create(). The problem is becoming apparent with non-layout data such as the uniform buffer offset, storage buffer offset, or the storage image mip level. It however works as expected when changing the resource itself. E.g. if a binding point now references a QRhiBuffer different than before, then there is no visible problems, regardless of the buffer offset being different or the same. Hence being difficult to discover, until the aforementioned Qt Quick renderer case triggers it. Why is this? Changing the resource (buffer, texture, sampler) itself works due to the guarantees given by the QRhi resource model. Consider the following: ubuf is a uniform buffer ubuf->create(); srb->setBindings({ references ubuf }); srb->create(); // use the srb in some draw calls // ... // later, when preparing the next frame we decide we need new data with // a different size even: ubuf->setSize(new_size) ubuf->create(); // fill in new data to ubuf // use the srb in some draw calls at this point "magic" happens: note how there is no rebuilding of the srb itself (no create(), no nothing), yet it will correctly pick up the now-different native buffer objects underneath ubuf. This works because there is a certain degree of state tracking happening that allows recognizing that a resource referenced from an srb got rebuilt and now has different native objects (e.g. a VkBuffer) underneath, which in turn needs (with Vulkan) rewriting the associated descriptor with the new native resource. Incidentally, this also makes updateResources() work just fine as long as it replaces the QRhiBuffer/Texture/Sampler reference for the binding point. However, with the example snippet above there is no way to change the other associated data such as the buffer offset. (that would need rebuilding the srb with create(), and that resets all related state tracking structures) So once we encounter an updateResources() where the same QRhiBuffer is now used with an offset different from before, that is not recognized by setShaderResources() and (with Vulkan) it will not rewrite the descriptor with the new offset. (unless the changes for another resource in the binding list trigger it; the granularity here is quite coarse, i.e. we either rewrite (with Vulkan) all descriptors or none at all; this makes the problem even less apparent because now rendering errors occur only when Qt Quick ends with an update where only the uniform buffer offset, but nothing else changed) Change-Id: I82ee43aa358947288135ff72ec213e091342e9cb Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 19febad9f2f9a9afe0128f7568f3cc41d759db1c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* rhi: Improve srb layout serialization helpersLaszlo Agocs2021-09-072-3/+4
| | | | | | | | | | | | Be idiomatic and return the output iterator one past the last element. Otherwise passing in a plain pointer (as exercised by the autotest now) fails to function because we write over the same 4 elements again and again for each binding. Change-Id: If74463fa5140ffa2b1d5be97b71868848ad46614 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit ce9d0491f2a3836991c3c44fa70c32f1f606ab28) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Cocoa: Make sure we can display multiple sheets for the same NSWindowDoris Verria2021-09-071-1/+5
| | | | | | | | | | | | | | | | On macOS, to display a modal with Qt::WindowModality set, or of type Qt::Sheet, we call beginSheet:completinHandler:. However, this method won't display the specified sheet unless the current active one is dismissed, which is a different behavior than what we expect for this case. Use beginCriticalSheet:completionHandler: whenever we already have an active sheet attached to the NSWindow, which allows us to display multiple sheets for the same window. Fixes: QTBUG-91059 Change-Id: I86bdbcbd63758edbbc48a8aade0178917dcb0e5b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit f3bc1f850046341745d42e2d6739724321634891) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Allow building android{deployqt, testrunner} under target host_toolsAssam Boudjelthia2021-09-074-11/+18
| | | | | | | | | | | | When doing a cross build for Android we need only the host tools which are available under cmake's host_tools target, but androiddeployqt and androidtestrunner are not part of that. This fixes that. Change-Id: Icdbc4a78ca050b66ec8df656d9ec766ef6c9f4b9 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 7dc05252a0df829bb5ea3994160d425bb0da26cb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix compilation for recursive Qt containersSona Kurazyan2021-09-077-32/+60
| | | | | | | | | | | | | | | | | | | | | The operator checks cause compilation errors when trying to check for their existence for recursive containers. This happens because of trying to check for the operators on the template parameter type(s), that inherit from the container itself, which leads to compilation errors. Introduced alternative versions of the operator checks (with _container suffix), that first check if the container is recursive, i.e. any of its template parameter types inherits from the given container, and skips the operator check, if that's the case. The fix is done for all Qt container types that had the problem, except for QVarLengthArray and QContiguousCache, which don't compile with recursive parameter types for unrelated reasons. Fixes: QTBUG-91707 Change-Id: Ia1e7240b4ce240c1c44f00ca680717d182df7550 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 9f13842fe61541cb8ab9822174ea963e418b5537) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* rhi: Enable serializing a layout description without baking an srbLaszlo Agocs2021-09-072-10/+31
| | | | | | | Change-Id: I66d28cc9d5417bcd5d192fa100c21f69fd42fd6b Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 4cde0e484c009415397430050cde389fb9b445b6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* rhi: Make the serialized srb layout description accessibleLaszlo Agocs2021-09-072-1/+14
| | | | | | | | | | | | | | | | | | | | | | ...by the Qt Quick renderer, for example. A typical Qt Quick material binding set serializes to 8 uints. This would not demand a container like QVector. However, being implicitly shared is essential here due to the intended usage (query the serialized blob, put it into a cache key, hash it, compare it, all without any copying and new allocs; we can afford an extra alloc upon each srb construction, but don't want more afterwards in the rendering engines) Also make it clear in the pipeline docs that the optimization Qt Quick is (soon going to be) doing is legal. (the srb ref in the pipeline can be dead and dangling as long as every call to setShaderResources() specifies a layout-compatible alternative) Change-Id: I97efbea1fa3516b10c9832adbab0a21b7bc0845d Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit b6b0c33058ba7f43661e316d9f27d4102f6a988f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QPaintEngineEx: solve compile errorZhang Hao2021-09-071-1/+1
| | | | | | | | | | Use the same variable name in function Amends 6869d2463a2e0d71bd04dbc82f5d6ef4933dc510 Change-Id: If710a53993e84d048f9052f4fcf92eb57635f585 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> (cherry picked from commit cca8ed0547405b1c018e995ad366ba0ab4c2a0e8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Copy and install lldb QtCore.py script for lldb and Xcode useAlexandru Croitor2021-09-071-2/+26
| | | | | | | | | | | | | The file was not handled during the qmake -> CMake transition. qmake had a more generic mechanism to allow embedding dSYM scripts per Qt module, but it wasn't used as far as I know, so the CMake implementation only limits it to QtCore. Change-Id: Ibcd818df1897f603ac194092b28d4bd4d1d6c6ae Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit c2a2522089942f8a50237c9dac8cbd9b713d1fb5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* wasm: fix network data URI schemeLorn Potter2021-09-071-2/+0
| | | | | | | | | | | Inadvertantly ifdefed out. Tested and works fine Fixes: QTBUG-96170 Change-Id: Ib26cf76a548146d4212c48b228965348038f34e8 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit 70b9e0687b501f1602b0c4251cda50ddddfb6712) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix lldbbridge.py loading when using lldb + Python 3 from CLIAlexandru Croitor2021-09-071-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | or from Xcode. A command line lldb that uses python3 fails to load the 'utils' module dependency when importing lldbbridge.py via the dSYM script debug_script.py. Add the directory where lldbbridge.py is as an additional import path to sys.path. This fixes the bridge to load in both CLI lldb and from within Xcode. Traceback (most recent call last): File "src/corelib/debug_script.py", line 92, in __lldb_init_module bridge = import_bridge(bridge_path, debugger, session_dict) File "src/corelib/debug_script.py", line 42, in import_bridge bridge = imp.load_source(MODULE_NAME, path) File "Versions/3.8/lib/python3.8/imp.py", line 171, in load_source module = _load(spec) File "<frozen importlib._bootstrap>", line 702, in _load File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 783, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "Qt Creator.app/Contents/Resources/debugger/lldbbridge.py", line 34, in <module> import utils ModuleNotFoundError: No module named 'utils' Amends 1b73c202ce907cd03864413f472bfeb5abf5151e Change-Id: I521d7530e35ee9c51ae0418d2c532e58ec1952d0 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit fc038ef44561b6fa60adf40ada84d9337e76808c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Forward touchEvents to children inside QGraphicsProxyWidgetVolker Hilsheimer2021-09-063-13/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reapplies the fix from 1ecf2212fae176b78c9951a37df9e33eb24d4f2d, using QApplication::translateRawTouchEvent to dispatch the touch event received by the QGraphicsProxyWidget to the relevant child widgets under each touch point. In addition, limit the implicit grabbing of each touch point before sending the event to those cases where we have to: touch pads, and if the target widget comes from a closest-widget matching. And don't call the QTouchEvent override of QEvent::setAccepted() on QTouchEvent instances in QGraphicsView classes, as this will override each event point's acceptance state. This way, we can identify which touch points have been accepted after event delivery, any only implicitly grab those points that were. Otherwise, touch points not accepted by a proxied widget hierarchy will still be part of an accepted event, and be grabbed by the viewport of the QGraphicsView. This would then lead to infinite recursion when the QGraphicsProxyWidget passes the TouchUpdate event on to each touch point's grabber. Re-activate the test case, and extend it with more combinations. Refactor touch-event recording to make it easier to test multi-touch scenarios. Task-number: QTBUG-45737 Fixes: QTBUG-67819 Change-Id: Id5611f4feecb43b9367d9c2c71ad863b117efbcb Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit dad1e1494128ff963b2a38870c44081f493f1e54) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix QLocale::system() standalone day and month handlingIvan Solovev2021-09-065-8/+40
| | | | | | | | | | | | | | | | Some backends were missing support for standalone days and months, also the standaloneDayName() implementation was always using the same codepath as dayName(). This patch fixes the issues. Support for narrow format will be added in the following patch. Task-number: QTBUG-84877 Change-Id: I38ee06342cafab544e3c69097bd0e6ae68e85645 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 78dee15da43597126d0a8579cf5db3ec4f019ca8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qt_pixmap_thread_test(): Simplify logic, merge warningsSze Howe Koh2021-09-061-12/+6
| | | | | | | Change-Id: I0c413c14d124bafbd6b2bd94d7a128e19ed83ade Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> (cherry picked from commit ee2ac8b4ef3b8691ef8b9d17a6d4c95b95db4349) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: mark documentation of internal functions as such to silence qdocVolker Hilsheimer2021-09-062-1/+4
| | | | | | | | | Change-Id: I9523511b9adf40d1280fbf320c24a79aa2860ef2 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Luca Di Sera <luca.disera@qt.io> (cherry picked from commit 197fcdd7ee56a53bf7035c62128b29001f3a4ea9) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix segfault when closing widget and destroying window in QDialog::doneVolker Hilsheimer2021-09-061-3/+7
| | | | | | | | | | | | | On OpenSUSE we seem to get an Enter event after or while the QWindow is closed, and that appears to reset the currentMouseWindow after we cleared it in QWindowPrivate::destroy. Apply a workaround similar to the focus_window to make sure that currentMouseWindow and currentMousePressWindow don't point to destroyed objects. Change-Id: I61afdaa7d8d1d437058624012319460be2f2567f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit e9e8d67e31b8b6a8348b5dae3225be2dbd87ffd2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* macOS: Report preedit cursor position and cursor visibility correctlyTor Arne Vestbø2021-09-061-2/+9
| | | | | | | | | | | | | | | | | Unfortunately QInputMethodEvent::Cursor defines length == 0 as the cursor being hidden, and length > 0 as being visible. This is the opposite of what native macOS application do. A future improvement here would be to base the QInputMethodEvent logic on QStyle::SH_BlinkCursorWhenTextSelected, which we already respect for normal selections. That would also allow us to use QInputMethodEvent::Cursor to set the preedit selection, which we currently have to fake via QInputMethodEvent::TextFormat. Change-Id: I75b5d8c5403283a0988355e440a98b4df35ec995 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 9877d55a50db45f7c629f2172dd848ef07e9fabe) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix cases of output variables not being passed back to calling scopeCraig Scott2021-09-061-2/+26
| | | | | | | | | | | | | | | | | | | | | | Some versionless wrappers were not passing back output variables to their calling scope. Ensure they always are. Fix qt6_extract_metatypes() to set its output variable in the parent scope (it was previously setting it erroneously in the local scope). Some functions had code paths that would not set output variables. This would allow situations where if the variables had an initial value set by a higher up parent scope, the output variable would still have that value in the caller's scope upon return. That could be misleading, so fix these code paths to explicitly set the output variable to an empty string instead. Task-number: QTBUG-96121 Task-number: QTBUG-96219 Change-Id: I291775813f025cabdccd4372ac077cdfd3ec090e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit f68f6ecf6f2c6c0567c3255568446700cb1f952c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Revert "Ensure versionless wrappers do not introduce a new variable scope"Craig Scott2021-09-064-60/+69
| | | | | | | | | | | | | | This reverts commit 08180e76e6116f0ef66476ca00b2b676b3aa50da. Macros add another level of escaping that functions do not. The conversion of the versionless wrappers to macros may alter the behavior, so revert that change. Task-number: QTBUG-96219 Change-Id: Ic5dcff3081123d957888584ba1d76ae0580d9083 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit a37789e4931a85fce4fba9c9612ebb4020572d54) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QMessageBox: Reset clickedButton for each invocation of the dialogTor Arne Vestbø2021-09-051-0/+1
| | | | | | | | | | | When showing a messagebox that has already been show we don't want to keep around the clicked button of the previous invocation. Change-Id: Ib6f6293d40ab338c550ea344094db871ccf45c46 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 2262744ad00524384f1ee02cdec20cf36a3b5947) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Add the PixelScroll device capability (new in 6.2)Shawn Rutledge2021-09-041-0/+5
| | | | | | | | | | | Followup to 69c833dae91d004b48f815e0156d6caeb4cdb491 Task-number: QTBUG-72167 Task-number: QTBUG-87646 Change-Id: I4ac7cbacd6dc1407ad3b565674a6d6494ec8857f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 673ed80fa42a77c92256388d8dff03a3c1651941) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QSslCertificate(OpenSSL plugin): fix memory leaks in extension 'parser'Timur Pocheptsov2021-09-043-12/+63
| | | | | | | | | | | They went unnoticed previously because of lazy evaluation, which is not the case anymore. Fixes: QTBUG-96155 Change-Id: I46026a24b354c1db7c10d84fceae06c4ab7cc0fc Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit c55f61578ce16dec57130bce6c5ef10689c44154) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: fix a bunch of qdoc warnings from wrong prototypesVolker Hilsheimer2021-09-042-8/+5
| | | | | | | | | | * name method parameters consistently with their declaration * don't document parameters that are not there Change-Id: I06ae9fdca357ed29eb7a72802f149eb4914181f4 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 62fc486a77fa882da6d60cfec323223dbbd26236) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QPixmap: Fix crash if created without gui app in secondary threadSze Howe Koh2021-09-041-1/+1
| | | | | | | | | | | | | | The thread checking in in_pixmap_thread_test() is only safe, and only makes sense, if we have a QGuiApplication. If we only have QCoreApplication, only null QPixmaps may be created anyway, so threading makes no difference. Fixes: QTBUG-95358 Change-Id: I93c983a3d6c271b0a19dfd0384862fc151459029 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> (cherry picked from commit ee5077daf59f24ca535302799ad718935e6bc4b8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* macOS: Don't rely on invalidateCursorRectsForView when mouse is over viewTor Arne Vestbø2021-09-031-0/+14
| | | | | | | | | | | | | | | | | | | | | | | Calling invalidateCursorRectsForView will normally result in a updateCursor callback, where we then set the current cursor using [NSCursor set]. But if an override cursor is set by AppKit, which happens for example when hovering over a resizable window's theme frame, then AppKit ignores the call to invalidateCursorRectsForView. And it will not consult the view when the override cursor is unset again, which results in the cursor being reset back to the default arrow cursor instead of the cursor that was set when we initiated the invalidateCursorRectsForView call. We need to hit-test to confirm that the mouse is over the view, as there might be child views in the mix that also have custom cursors, and we don't want to activate the parent view's cursor unless we're actually over that view. Fixes: QTBUG-81552 Fixes: QTBUG-96003 Change-Id: I52573ab7be82f28c6a1cf686bd4b133551cfe98b Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit ae8e96d4c2fc430ed6f71e422ef4aff2c7f15186) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: add more notes about full screen windows on macOSVolker Hilsheimer2021-09-032-3/+13
| | | | | | | | Fixes: QTBUG-68069 Change-Id: I8fc99f708cfa19a9c8cc8d13f6889549c79dd3b3 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit f70421bfc0f0c1b4da730154b49f425a6b0bb08e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: add note that hiding a window doesn't close a full screen spaceVolker Hilsheimer2021-09-031-0/+7
| | | | | | | | Fixes: QTBUG-52450 Change-Id: I3f819bac470b5a883a74fb58f6fa2d27740eaaf2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 2c6de9c099f6a5c3f76cbb149177b6f1281bcd07) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix QMAKE_LIBS_OPENSSL/NOLINK entries in qt_lib_network_private.priJoerg Bornemann2021-09-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The file qt_lib_network_private.pri contained the following bit QMAKE_LIBS_OPENSSL/NOLINK = QMAKE_INCDIR_OPENSSL/NOLINK = C:/openssl/include QMAKE_LIBS_OPENSSL = QMAKE_LIBS_OPENSSL_DEBUG = -L"C:/openssl/lib/VC" -llibssl64MDd QMAKE_LIBS_OPENSSL_RELEASE = -L"C:/openssl/lib/VC" -llibssl64MD QMAKE_INCDIR_OPENSSL = C:/openssl/include The /NOLINK entries are nonsense. QMake projects that do QMAKE_USE += openssl/nolink would use QMAKE_INCDIR_OPENSSL and discard the QMAKE_LIBS_OPENSSL* variables. The QMAKE_*_OPENSSL/NOLINK entries stem from the WrapOpenSSLHeaders CMake package, and QMAKE_*_OPENSSL from WrapOpenSSL. It's safe to assume that both packages use the same include paths. Remove the QMAKE_LIB parameter from the qt_find_package(WrapOpenSSLHeaders) call to avoid writing this library into the .pri file. Fixes: QTBUG-89562 Change-Id: Ibc20f6f90678eb127db7813eb63c5c3e0bff2268 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 4c52dd43ae69659f5b838448817d8f47ad61df21) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* rhi: Add a way to tell an srb that only the resources have changedLaszlo Agocs2021-09-0311-0/+70
| | | | | | | | | | | | | | | | | | Until now, after updating the bindings one had to always rebuild the srb, which can be heavy esp. on Vulkan (release old objects, create new layout object, descriptor sets). When updating the binding list in a way that it is fully isLayoutCompatible() == true with the previous list, this is an overkill. Internally, most notably in setShaderResources(), we already should have everything in place in all backends to recognize if the entries in the binding list refer to QRhiBuffer/Texture/Sampler objects that are different than before, and so apart from adding an alternative to create() in the API there is not much else needed here. Change-Id: I2efdd4fd0b24c7ebba694a975ed83509744b044b Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 69065160048335b8f5e2e3d0ba254a2065c51c5d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* rhi: Correct a doc noteLaszlo Agocs2021-09-031-2/+6
| | | | | | | | | | | It is not true that isLayoutCompatible() can be called before create(). That used to be the case before the optimizations have been added. The docs are still internal, but let's fix it up. Change-Id: Iee61848f058a06774550af6f38a3253956e4cfd3 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 65cad49473af68bcf6353ac51411629e2613e01f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* rhi: Include resource count in srb layout compatibility checksLaszlo Agocs2021-09-032-6/+13
| | | | | | | | | | | | | | | | Relevant for Vulkan, given that descriptorCount is part of VkDescriptorSetLayoutBinding, meaning two srbs with arrays of SampledTextures should only be reported as compatible if the array size matches. Also reduces the prealloc size for the VLAs. For Qt Quick even a lower number would be sufficient, but we still keep the number something fairly high in order to play nice with Quick3D. Change-Id: Id92b7c09b051ebe54b1fa2bf4ba78950fe60ba27 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 6cdf95a970f499f7d724e79638856a71942dd30d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* cocoa: use TouchPad deviceType for trackpadShawn Rutledge2021-09-031-0/+1
| | | | | | | | | | | | WheelHandler { acceptedDevices: PointerDevice.TouchPad } doesn't react unless we use the right type. Amends 69c833dae91d004b48f815e0156d6caeb4cdb491 Change-Id: I813de096b87f3af4dfcf5510abc0d0bd9c15b689 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 4d8fb1bc6f8b57952f930e293d79ffbfc0b0701e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QWidget: close the QWindow in QWidget::closeVolker Hilsheimer2021-09-024-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | We want to close the window, end full screen mode on macOS, and free platform resources. This is all done by QWindow::close. QWindow::close closes the platform window, triggering a closeEvent to QWidgetWindow, which then calls QWidgetPrivate::close_helper. This way, closing a window via QWidget::close, QWindow::close, or interactively by the user are all equivalent. The QCloseEvent generated by the widget needs to be spontaneous for window-system generated events (i.e. the user clicked the close button), and non-spontaneous if the window closes because of a call to QWindow::close. To keep track of whether the event originated in an explicit call to QWindow::close, add a boolean to the QWindowPrivate. Add a test case that verifies that the window resources is destroyed, and that events are delivered as they should. Done-with: Morten Johan Sørvig <morten.sorvig@qt.io> Fixes: QTBUG-46701 Change-Id: Iacb6a2c8d5e880b16b0c8f0c9257ed94bed36f5b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 7ba75d088c3eba81a1d2bb708119442991d9f30b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Remove a redundant checkEdward Welbourne2021-09-021-1/+1
| | | | | | | | | | Missed in a recent fix to QTimeZonePrivate::dataForLocalTime(), but noticed during picking back to 5.12 Change-Id: I63964952150fedf857b7aef12dfc866097d2e2d1 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit 7403561f2101556828b584c3af37cff028ee0969) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Clean up output target handling left behind by earlier changesCraig Scott2021-09-021-8/+6
| | | | | | | | | | | | | | | | | | | Previous work removed the no-longer-used code path that could add targets from qml compiler features. The variable that code path would populate was not fully cleaned up in that removal. Clean it up now and move the variables related to output target handling closer to the only remaining area where they could be generated. Also ensure that we set the variable named by OUTPUT_TARGETS even if isBinary ends up being true. We should explicitly set that variable to an empty string in that case. Amends 363df5cd709762c3c014132c1670fdd715233620 Change-Id: I17de9788b390aac9a7aedb29ab9bdfee99c305af Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit f266381b1ba427485e444640fcd6fb3f68a2b1bb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix build on riscv32Fabrice Fontaine2021-09-021-0/+5
| | | | | | | | | | | | | | | | | | | riscv32 fails to build because __NR_futex is not defined on this architecture: In file included from thread/qmutex_linux.cpp:45, from thread/qmutex.cpp:804: thread/qfutex_p.h: In function 'int QtLinuxFutex::_q_futex(int*, int, int, quintptr, int*, int)': thread/qfutex_p.h:116:30: error: '__NR_futex' was not declared in this scope; did you mean '_q_futex'? 116 | int result = syscall(__NR_futex, addr, op | FUTEX_PRIVATE_FLAG, val, val2, addr2, val3); | ^~~~~~~~~~ | _q_futex Fixes: QTBUG-96067 Change-Id: Ib6a9bcc496f37e69ac39362cb0a021fccaf311f5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 035dc537bee26e3b63a211b2835d8560439e161f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix QListView assert when the last row is moved in IconModev6.2.0-beta4ChunLin Wang2021-09-011-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | After the last row is moved, 0 will be returned when obtaining row and column data. At this time, QListView::doitemslayout will not call d->doitemslayout, so the QBspTree data structure will not be cleaned up, leaving a stale tree structure behind. This will trigger an assert during paintEvent handling if QListView is set to IconMode In QListView::ListMode the test for a valid model index doesn't use an assert. Call QListViewPrivate::clear explicitly if the column count is 0 so that the QBspTree and other data structures are cleared. Add a test case that simulates this scenario by implementing a model that returns a 0 column count for an index after the model structure was changed through a move of rows. Done-with: Volker Hilsheimer Fixes: QTBUG-95463 Change-Id: I36419be5459b8ced930c619f538482ea1db4ad03 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit ca69e5aeef2fef540e687475ac00a4f332fdc5f3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qlocale_win: Fix non-standalone month namesEdward Welbourne2021-09-011-3/+30
| | | | | | | | | | | | | | | | | | | | | We have previously been using the standalong (nominative) month names both when asked for that and when asked for the plain (genitive) month name, probably because there was no LCTYPE value for the latter. However, MS's docs for the standalone values do contain a comment telling us how to get the genitive names. Rename the old monthName() to standaloneMonthName() and add a monthName() that calls GetDateFormat() suitably, as described by the MS doc. Fixes: QTBUG-92018 Fixes: QTBUG-86279 Change-Id: I27f63198c3a15b792683f476d2019078b0860f99 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit 38ec2c830b849ad44ca7e16bd9c4722e0bcdb61f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>