summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Never handle scrollbars styled with box or border changes as transientVolker Hilsheimer2021-11-291-0/+10
| | | | | | | | | | | | | | | | If scrollbars are styled with a style sheet that includes a box or removes off the native border, then we never treat them as transient or overlapping. Otherwise, the layout logic in QAbstractScrollArea will show them on top of the viewport, overlapping the content. Add case to the style sheet test baseline test. It's a test for scrollbars in a scroll area, rather than a test for the styling of the scrollbars themselves. Fixes: QTBUG-98289 Pick-to: 6.2 Change-Id: Ic53ad248b3eedd54722ac7b2fe5256a27092dbc1 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QTextDocument: fix an off-by-one in the changed signal for listsEirik Aavitsland2021-11-291-1/+4
| | | | | | | | | | | | | | | | | When blocks are added or removed in block groups, i.e. items added or removed from text lists, the whole group is marked as changed, but the calculation of the before/after group length would be one off. That was reflected in the contentsChange signal. Add unit test. Since the whole group changes when list items are added, text is removed and the change-begin is not where the cursor was when the change was made. Fixes: QTBUG-82455 Pick-to: 6.2 5.15 Change-Id: I99ee2cfef4944fcac8aca492741fd0f3b0de4920 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* gui: add QInputDevice::seatNames()Liang Qi2021-11-282-0/+20
| | | | | Change-Id: Ie6cedd62dcd684a8fd9adbc2409e5aa1f3490ede Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QObject: Q_ASSERT the object type before calling a PMFThiago Macieira2021-11-274-7/+39
| | | | | | | | | | | | | | | | | | | | | | | | The old-syle signal-slot syntax had the advantage of not delivering signals to slots in derived classes after that derived class's destructor had finished running (because we called via the virtual qt_metacall). The new syntax made no checks, so a conversion from the old to the new syntax may introduce crashes or other data corruptions at runtime if the destructor had completed. This commit introduces a Q_ASSERT to print the class name that the object is not any more. Since this is in inline code, this should get enabled for users' debug modes and does not therefore depend on Qt being built in debug mode. It required some Private classes to be adapted to the new form, by exposing the public q_func() in the public: part. Pick-to: 6.2 Fixes: QTBUG-33908 Change-Id: Iccb47e5527544b6fbd75fffd16b874cdc08c1f3e Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QLocale: suppress annoying GCC warning in the bootstrap libThiago Macieira2021-11-271-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Happens on line: return QList<QLocale>() << QLocale(QLocale::C); QLocale's constructor taking the C "language" calls findLocalePrivate() that returns indeed the non-heap object c_locale in the c_private() function. But it also sets the refcount to 1, meaning it can never drop to 0 under proper refcounting and will thus never be deleted. Therefore, the compiler is wrong. I don't have time to figure out how to teach it that the deletion can never happen. I just want the warning to go away. It wsa probably introduced by commit d4242b8af3e6eb5e9f68e5ff2efee97de11da892. In destructor ‘QSharedDataPointer<T>::~QSharedDataPointer() [with T = QLocalePrivate]’, inlined from ‘QLocale::~QLocale()’ at /home/tjmaciei/src/qt/qt6/qtbase/src/corelib/text/qlocale.cpp:1035:1, inlined from ‘void QtPrivate::QMovableArrayOps<T>::emplace(qsizetype, Args&& ...) [with Args = {QLocale}; T = QLocale]’ at /home/tjmaciei/obj/qt/qt6/qtbase/include/QtCore/../../../../../../src/qt/qt6/qtbase/src/corelib/tools/qarraydataops.h:829:5, inlined from ‘T& QList<T>::emplaceBack(Args&& ...) [with Args = {QLocale}; T = QLocale]’ at /home/tjmaciei/obj/qt/qt6/qtbase/include/QtCore/../../../../../../src/qt/qt6/qtbase/src/corelib/tools/qlist.h:891:15, inlined from ‘void QList<T>::append(QList<T>::rvalue_ref) [with T = QLocale]’ at /home/tjmaciei/obj/qt/qt6/qtbase/include/QtCore/../../../../../../src/qt/qt6/qtbase/src/corelib/tools/qlist.h:479:24, inlined from ‘QList<T>& QList<T>::operator<<(QList<T>::rvalue_ref) [with T = QLocale]’ at /home/tjmaciei/obj/qt/qt6/qtbase/include/QtCore/../../../../../../src/qt/qt6/qtbase/src/corelib/tools/qlist.h:726:13, inlined from ‘static QList<QLocale> QLocale::matchingLocales(QLocale::Language, QLocale::Script, QLocale::Territory)’ at /home/tjmaciei/src/qt/qt6/qtbase/src/corelib/text/qlocale.cpp:2684:54: /home/tjmaciei/obj/qt/qt6/qtbase/include/QtCore/../../../../../../src/qt/qt6/qtbase/src/corelib/tools/qshareddata.h:91:55: warning: ‘void operator delete(void*, std::size_t)’ called on unallocated object ‘c_locale’ [-Wfree-nonheap-object] 91 | ~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; } | ^~~~~~~~ Pick-to: 6.2 Change-Id: Iccb47e5527544b6fbd75fffd16b8d078987b812b Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QLayoutPolicy: un-export the classMarc Mutz2021-11-271-5/+5
| | | | | | | | | | | | The class is almost completely inline. Don't export it wholesale, only export the few out-of-line members. Also acts as a test-case for the new Q_GADGET_EXPORT feature. Task-number: QTBUG-55458 Change-Id: I699a774614183960d7ac4e0afcdb57cfef76db15 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* wasm: fix mouse move and right clickLorn Potter2021-11-271-4/+8
| | | | | | | | | | | | Emscripten has no concept of 'no mouse button', so when there is no button down, it was sending left mouse. Also we were hiding mousepress for only leftmouse downs. Fixes: QTBUG-97431 Pick-to: 6.2 Change-Id: Ibf078705c343944e45551830b7fee94ed5aa7333 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QGraphicsItem: Update input context after InputMethod eventJarkko Koivikko2021-11-271-0/+1
| | | | | | | | | | | | Without updating the input context, the input method goes out of sync with the text control. Fix by updating the input context after InputMethod event. Fixes: QTBUG-98544 Pick-to: 6.2 5.15 Change-Id: Idfb99bb0f886249cdab923b8dbed96277800c064 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QSharedPointer: fix counter-productive QT_PREPEND_NAMESPACE use in qHash() implMarc Mutz2021-11-271-1/+1
| | | | | | | | | | | | | | | | | | The qHash(QSharedPointer) implementation is already in QT_NAMESPACE, if any, so explicitly qualifying the call adds no functions to the overload set, but actually removes functions that would be found by ADL (which is only enabled for unqualified calls). Fix by using an unqualified call. [ChangeLog][QtCore][QSharedPointer] The qHash(QSharedPointer<X>) overload can now use qHash(X*) overloads found (only) through ADL (was: ADL was disabled due to qualified lookup of qHash(X*)). Pick-to: 6.2 5.15 Change-Id: Ic6cc47103142d48b6cdefa2cd6552a65cf1cb222 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* wasm: Move Blob creation code to qstdwebMorten Johan Sørvig2021-11-273-21/+56
| | | | | | | | | | | | | | Add Uint8Array::copyFrom() and Blob::copyFrom(), which constructs JS data containers with content copied from the C heap. These should not be confused with e.g. the Uint8Array(buffer, size) constructor, which creates a Uint8Array which references content on the heap, without making a copy. Change-Id: Id7d25d8044ee3914d74698e5a15c93226568eaf3 Reviewed-by: David Skoland <david.skoland@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Long live Q_GADGET_EXPORT!Marc Mutz2021-11-277-189/+240
| | | | | | | | | | | | | | | | | | | | | | Like Q_NAMESPACE_EXPORT for Q_NAMESPACE, this variant of Q_GADGET allows passing an export macro. This is useful to avoid exporting the whole class just to get the staticMetaObject hidden therein exported. Before anyone asks: No, we don't need Q_OBJECT_EXPORT, because QObject subclasses, being polymorphic, always need to have a class-level export macro (to export their vtable), but while that technique also works for value classes (the Q_GADGET audience), it is not desirable for them, because it makes inline functions exported in Windows debug builds, which is not what we want, because it needlessly restricts what you can to with the inline functions (e.g. remove). [ChangeLog][QtCore] Added the Q_GADGET_EXPORT macro, which is like Q_GADGET, but allows passing an export macro (like Q_NAMESPACE_EXPORT for Q_NAMESPACE). Fixes: QTBUG-55458 Change-Id: I546297de1e8aa45d83381991bcd3fbca61e1eef0 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QTest: fix grammar in static_assert()Marc Mutz2021-11-271-2/+2
| | | | | | Change-Id: I6fd408702bb43e37434b382cb6cb9057ca192064 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QThread::wait: Clarify documentation for unsigned long overloadFabian Kosmale2021-11-271-0/+3
| | | | | | | | | | It is not immediately clear from the signature that the time parameter's unit is miliseconds. Pick-to: 6.2 Change-Id: Ifee3c6410b6b2352e75571cc53578a660aabb32d Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove leftovers for supporting SAX-based implenentation of QDomDocumentSona Kurazyan2021-11-263-66/+14
| | | | | | | | | | | | | | | | QXmlDocumentLocator was introduced, so that QDomBuilder can work with both QXmlStreamReader and QXmlInputSource. It had two subclasses - QDomDocumentLocator and QSAXDocumentLocator, to allow getting line and column numbers while parsing, depending on the implementation. QSAXDocumentLocator was removed when removing SAX-based implementation (79e0374143ab385cb12a17443e91c8eb9d2f3a4b), and now it doesn't make sense to keep QXmlDocumentLocator/QDomDocumentLocator, we can get line and column numbers form QXmlStreamReader directly. Change-Id: I75f4a776472ee31ddc3685a999f356be9bf47ac5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Mention QtFuture::when* functions in QFuture's docsSona Kurazyan2021-11-261-4/+7
| | | | | | | | | Also fix an unrelated minor issue in QtFuture::whenAll docs. Task-number: QTBUG-86714 Change-Id: I45f06b17db0508be10215e6d260ef76ede3077fb Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QVarLengthArray: fix insert() type/alias mismatch between decl and implMarc Mutz2021-11-261-1/+1
| | | | | | | | | | | | | | | | | The declaration of insert(it, n, t) used qsizetype for n, while the definition used size_type. That works by chance, because the size_type typedef comes only after the insert(it, n, t) declaration. It was detected when size_type became a typedef in a base class of QVarLengthArray in my local branch. Just use the same type name in the implementation as in the declaration. In 5.15, the same issue exists (with s/qsizetype/int/). Pick-to: 6.2 5.15 Change-Id: I64235eeaeaed3d43f4c070ca536474fae94c1b5d Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* uic: Refactor CustomWidgetsInfo::extends() to use QAnyStringViewFriedemann Kleint2021-11-265-41/+41
| | | | | | | Task-number: PYSIDE-1720 Pick-to: 6.2 Change-Id: I2db4ee9586a87c70db08298e311d692e20a93af0 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Simplify apk build procedure when using DEPFILEAlexey Edelev2021-11-261-21/+17
| | | | | | | | | | | In qt6_android_add_apk_target we require that ${target} is already defined. So to add custom command that runs androiddeployqt we may simply read BINARY_DIR property of the target and use it as path to generated apk file as OUTPUT argument. This avoids the use any intermediate paths when producing apk and related artifacts. Change-Id: I8bb4174f6f9696e7a2a6b5d6399bb410419495fc Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Long live QVERIFY_THROWS_NO_EXCEPTION!Marc Mutz2021-11-262-2/+53
| | | | | | | | | Counter-part to QVERIFY_THROWS_EXCEPTION. [ChangeLog][QTest] Added QVERIFY_THROWS_NO_EXCEPTION macro. Change-Id: Ib6a80c8e810d5e2298ff00d608dae04e7a0c3e8f Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Make QAbstractProxyModel itemData() behave like data()Luca Beldi2021-11-261-2/+4
| | | | | | | | | | | | | | | | | | | | | | QAbstractProxyModel::itemData/setItemData should behave just like data()/setData() instead of calling the QAbstractItemModel implementation. Before this change the QAbstractProxyModel implementation calls its the QAbstractItemModel implementation, which ends up calling data()/setData() in a loop bypassing the convenience of itemData/setItemData. [ChangeLog][QtCore][QAbstractProxyModel] The itemData() and setItemData() functions will now call the respective implementations in the source model (after mapping the index to a source index), matching what data() and setData() already did. Before, the proxy model simply called the default implementations of itemData()/setItemData() in its own base class (QAbstractItemModel). Change-Id: I9e680d355f44fa130660dd7e1c8ac37484c1566e Reviewed-by: David Faure <david.faure@kdab.com>
* rhi: metal: Ignore baseInstance if not supportedLaszlo Agocs2021-11-261-3/+9
| | | | | | | | | | | | | | | | | | | | | | A previous patch already introduced calling the correct variant of drawIndexedPrimitives, but it was not done for drawPrimitives. When base vertex and instance is not supported (e.g. on the iOS simulator), it does not mean that the value cannot be other than 0, but rather that the version of the function taking this arguments must not be called at all, otherwise a Metal failure occurs. The docs and logic is all in place, just add it to draw() as well. Amends 213755a86622ae8b3ed3d7ad34a6aecd051b2b03 which fixed this for indexed draw calls. Now we also prevent aborting Qt Quick applications that trigger non-indexed draw calls. Change-Id: Icb4313ffd2d3a77a73f7b5f49d7ce63c935254d3 Pick-to: 6.2 Task-number: QTBUG-95795 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* rhi: gl: Optimize context/surface changesLaszlo Agocs2021-11-262-12/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When there is a context with a surface current, keep on using that whenever ensureContext() is called without specifying a QWindow. Consider the following sequence: <component A> beginOffscreenFrame render to texture 1 endOffscreenFrame <component B> beginOffscreenFrame render to texture 2 endOffscreenFrame <component C> beginFrame (with swapchain) render something using texture 1 and 2 endFrame repeat all over again, continuously (in practice this is what a top level widget with QOpenGLWidgets and/or QQuickWidgets in it would lead to with the QRhi migration in place) Besides being more readable, the new version recognizes that resource and offscreen operations do not need one specific surface (like the one QOffscreenSurface every GL backend of QRhi has), but are functional with any surface (or with surfaceless even) as long as the context is correct. Thus with the above example we can work with only ever making the one QWindow current. Change-Id: I633071cae88f02e1d45e445ee55c8a58f9ec5a8c Pick-to: 6.2 Fixes: QTBUG-96405 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* CMake: Fix cross-compilation to WindowsJoerg Bornemann2021-11-261-0/+2
| | | | | | | | | | ...and potentially to macOS. This amends 3f56950862181f4d50f30d66f577c933795522c3. Change-Id: Idf2acded37b59994459bc80ecda5733232f721f6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* xcb: stablilize xkb state when keymap updatedLiang Qi2021-11-263-5/+22
| | | | | | | | | | | | | | | | QXcbKeyboard only deals with core_device_id. With the reporter's test case: using xdotool to send a string, the deviceID is not changed, then we assume xkb_state_new() is more stable(or correct) than xkb_x11_state_new_from_device() in this case. See also https://www.x.org/releases/current/doc/man/man3/xcb_xkb_new_keyboard_notify_event_t.3.xhtml . Fixes: QTBUG-95933 Pick-to: 6.2 5.15 Change-Id: Ic595e1f1424fbc6814871a85ac159907f1aeb12a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Zhang Hao <zhanghao@uniontech.com> Reviewed-by: Liang Qi <liang.qi@qt.io>
* wasm: Move streamFile() to qstdwebMorten Johan Sørvig2021-11-263-39/+48
| | | | | | | | | This function is useful also outside of local file access, for example when reading clipboard (file) content. Change-Id: I132546deb6df2969467051c348c05d9331d2cfd2 Reviewed-by: David Skoland <david.skoland@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* QTest: de-inline QVERIFY_THROWS_EXCEPTION message formattingMarc Mutz2021-11-262-5/+38
| | | | | | | | | | | | Extract Method QTest::qCaught() to take the string handling out of the header. This should help a bit in speeding up compilation of large unit test files (provided they use QVERIFY_THROWS_EXCEPTION), although I have no data to support that. Since we changed the error message, update the selftest accordingly. Change-Id: Id4a3c8c34d5df8d0c7a861106d269097f4a6de5c Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Fix and complete style sheet support for QToolButtonVolker Hilsheimer2021-11-261-39/+51
| | | | | | | | | | | | | | | | | | | Amends 2b2e7b2ac50e5b4f6e1888e594f6e32338dd2a80, which rewrote the rendering to remove the conflation of menu arrows and arrow icons, but introduced double rendering of the arrow icons if only the border was styled. Add a baseline test for style sheets, with a test function for QToolButton configured in various ways and styled with different style sheets. The new test case includes a Qt 5 build system so that we can compare Qt 5.15 with Qt 6. Fixes: QTBUG-98286 Pick-to: 6.2 6.2.2 Change-Id: I09cdc829c1a7e7913df4c3768dbe44b6dba4778b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* d3d11rhi: remove leftover of pre-win10 codeYuhang Zhao2021-11-261-3/+1
| | | | | | | | | Amends commit 1e085b9e15abeb45bbbf7995818fcd9c94bfefe1 Task-number: QTBUG-84432 Pick-to: 6.2 Change-Id: Id48fb6c2a9c7d24f1525975c6c154dbc323bbc25 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Add QTest::failOnWarningMitch Curtis2021-11-265-0/+123
| | | | | | | | | | | | | | This solves the long-standing problem of not being able to easily fail a test when a certain warning is output. [ChangeLog][QtTest] Added QTest::failOnWarning. When called in a test function, any warning that matches the given pattern will cause a test failure. The test will continue execution when a failure is added. All patterns are cleared at the end of each test function. Fixes: QTBUG-70029 Change-Id: I5763f8d4acf1cee8178be43a503619fbfb0f4f36 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Long live QVERIFY_THROWS_EXCEPTION!Marc Mutz2021-11-262-6/+32
| | | | | | | | | | | | | Use variable args macros to swallow any extra commas in the expression. To use this, the type of the exception has to be first. Use Eddy's suggestion for a new name to avoid breaking the old macro. [ChangeLog][QtTest] Added QVERIFY_THROWS_EXCEPTION, replacing QVERIFY_EXCEPTION_THROWN, which has therefore been deprecated. Change-Id: I16825c35bae0631c5fad5a9a3ace4d6edc067f83 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QTemporaryDir: Set directory permissions at the time of creationIevgenii Meshcheriakov2021-11-261-11/+3
| | | | | | | | | | | Use new QDir::mkdir() method to set directory permissions at the time of its creation on systems that support this feature. This removes the time window when the created directory is potentially accessible to everybody. Task-number: QTBUG-79750 Change-Id: I82afee7f0708bfdcc9b3b3978af9a2aef1b8672d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDir: Add support for setting directory permissions to mkdir()Ievgenii Meshcheriakov2021-11-2610-45/+380
| | | | | | | | | | | | | | This patch adds an overload of the QDir::mkdir() method that accepts permissions. This allows setting of the directory permissions at the time of its creation. [ChangeLog][QtCore][QDir] Added QDir::mdkir() overload that accepts permissions argument. Task-number: QTBUG-79750 Change-Id: Ic9db723b94ff0d2da6e0b819ac2e5d1f9a4e2049 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Q(Multi)Map: prevent dangling key/value after detach()Giuseppe D'Angelo2021-11-261-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Q(Multi)Map mutating functions that take reference to a key and/or a value (e.g. insert(), take(), etc.) must make sure that those references are still valid -- that is, that the referred objects are still alive -- after the detach() call done inside those functions. In fact, if the key/value are references into *this, one must take extra steps in order to preserve them across the detach(). Consider the scenario where one has two shallow copies of QMap, each accessed by a different thread, and each thread calls a mutating function on its copy, using a reference into the map (e.g. map.take(map.firstKey())). Let's call the shared payload of this QMap SP, with its refcount of 2; it's important to note that the argument (call it A) passed to the mutating function belongs to SP. Each thread may then find the reference count to be different than 1 and therefore do a detach() from inside the mutating function. Then this could happen: Thread 1: Thread 2: detach() detach() SP refcount != 1 => true SP refcount != 1 => true deep copy from SP deep copy from SP ref() the new copy ref() the new copy SP.deref() => 1 => don't dealloc SP set the new copy as payload SP.deref() => 0 => dealloc SP set the new copy as payload use A to access the new copy use A to access the new copy The order of ref()/deref() SP and the new copy in each thread doesn't really matter here. What really matters is that SP has been destroyed and that means A is a danging reference. Fix this by keeping SP alive in the mutating functions before doing a detach(). This can simply be realized by taking a local copy of the map from within such functions. remove() doesn't suffer from this because its implementation doesn't do a bare detach() but something slightly smarter. Change-Id: Iad974a1ad1bd5ee5d1e9378ae90947bef737b6bb Pick-to: 6.2 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add some missing entries to QTest::qExec()'s \sa lineEdward Welbourne2021-11-261-1/+1
| | | | | Change-Id: I45300d5f9df519c5edb68d24232830bd0850915a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Android: Set sem_wait m_terminateSemaphore behind an atomic flagRami Potinkara2021-11-261-1/+7
| | | | | | | | | | | Prevents QML app using QtActivity never calling AndroidJniMain::startQt..'s to jam as ANR Pick-to: 6.2 5.15 Task-number: QTBUG-97115 Change-Id: Ibfe8579dbb701068f4896b6d826ff487094bdf56 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* QAndroidActivityResultReceiver: make uniqueActivityRequestCode() lock- and ↵Marc Mutz2021-11-251-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | UB-free The old code attempted to detect the overflow of the requestCode variable, but because it didn't do anything about it except warn, it still ran into the overflow, and, since the variable is signed, into UB. That means that a clever compiler will just eliminate the warning as dead code because it can backtrack and see that the condition guarding it is never true, because otherwise UB happens. Fix that problem by using a uint counter (unsigned overflow is defined to wrap) and only convert to int after the check. Also fix two inefficiencies with the old code: 1. We don't need a mutex just to up a counter in a thread-safe way. Upping a shared counter is the prototypical use-case for relaxed atomics, so use that. That also solves the problem of the non-POD static object at function scope (QMutex) that forced compilers to emit thread-safe static initialization code. 2. We had a static variable whose initial value isn't 0, which means it can't be in stored in the BSS, but only in the DATA segment. Do the trivial transformation of subtracting the offset so the variable starts at 0. The offset can be added afterwards. Pick-to: 6.2 Change-Id: I3560df21d6b4e4201cb6772237780cc8b400631d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QVERIFY_EXCEPTION_THROWN: re-throw unknown exceptionsMarc Mutz2021-11-252-10/+20
| | | | | | | | | | | | | | | | | | | | | | | | | Swallowing unknown exceptions is dangerous business, as the exception might be a pthread cancellation token, the swallowing of which would terminate the program. Instead of returning from the catch-all-clause, therefore, re-throw the unknown exception. Fix tst_verifyexceptionthrown failure cases that use non-std::exception-derived true negative exceptions to not let the exception escape from the test function. As a drive-by, pretty up the macro's docs. [ChangeLog][QtTest][QVERIFY_EXCEPTION_THROWN] Now re-throws unknown exceptions (= not derived from std::exception) (was: swallowed them and returned from the test function), in order to play nice with pthread cancellation. Pick-to: 6.2 5.15 Change-Id: Ic036d4a9ed4b7683fa67e27af8bcbae0eefdd0da Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Doc: Replace use of \oldcode-\newcodeLuca Di Sera2021-11-253-10/+40
| | | | | | | | | | | The command-pair was recently deprecated. The replacement code should produce an output that is equal to the previous one. Task-number: QTBUG-98499 Change-Id: If26e0d85a174ebc3858b638c34d7f43637eab46d Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QHash: fix thread race around references and detachingMårten Nordheim2021-11-251-31/+80
| | | | | | | | | | | If we detach from a shared hash while holding a reference to a key from said shared hash then there is no guarantee for how long the reference is valid (given a multi-thread environment). Pick-to: 6.2 Change-Id: Ifb610753d24faca63e2c0eb8836c78d55a229001 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QAuthenticator: Filter out algorithms we don't supportMårten Nordheim2021-11-251-0/+19
| | | | | | | | | | | Which is anything other than MD5 Pick-to: 6.2 5.15 Fixes: QTBUG-98280 Change-Id: Ifbf143f233ee5602fed1594e3316e6b2adec1461 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Windows QPA: Further cleanup of pre-Win10 codeYuhang Zhao2021-11-2414-383/+109
| | | | | | | | | | | | | | | | | Mostly a removal of dynamically loaded Win32 APIs. Since Qt 6's minimum supported platform is Win10 1809 (10.0.17763, code name RS5), all these functions will be available and no need to resolve them at run-time. Things not remove: WinTab functions in "qwindowstabletsupport.cpp". Not my familiar area, so not touch it. Pick-to: 6.2 Task-number: QTBUG-84432 Change-Id: I7ad6c3bc8376f6c0e3ac90f34e22f7628efeb694 Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* QObject: don't #include qproperty.hMarc Mutz2021-11-231-2/+2
| | | | | | | | | | | | | | | | | | | | | The qobject.h header needs QBindingStorage in-size and QBindable in-name-only. The former was moved to its own header in a previous commit, which we include now, while the latter can just be forward-declared. This allows dropping the qproperty.h include from qobject.h. [ChangeLog][Potentially Source-Incompatible Changes] The qobject.h header no longer implicitly includes qproperty.h. If your code depends on the transitive include, explicitly include <QProperty> where needed. Task-number: QTBUG-97601 Pick-to: 6.2 Change-Id: I8d6320f5978e20dfc394d2b1e49f626b99529c37 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QTest: mark qFail() as coldMarc Mutz2021-11-231-0/+1
| | | | | | | | | | Unit tests should not fail, so a call to qFail() is by definition exceptional. Therefore, mark the function as cold. It probably doesn't matter in the grand scheme of things, but it also doesn't cost much. Change-Id: I0cafcfa65ff285812155d0687deded8d26cf4efd Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Move macdeployqt and windeployqt from qttools to qtbaseJoerg Bornemann2021-11-2315-0/+6073
| | | | | | | | Having all *deployqt tools in qtbase will allow us to couple deployment support more tightly with the build system. Change-Id: I299efdacfa6b66a303bb3996ff3ff84e723210a5 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* QOperatingSystemVersion: cache the retrieved versionYuhang Zhao2021-11-233-2/+15
| | | | | | | | It won't change during runtime, so make it a static variable to avoid fetching the information repeatedly. Change-Id: I430ceba218f9f3515558736238d1d5a74cf59419 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QCocoaMenuBar: set the app's 'Window' menuTimur Pocheptsov2021-11-233-0/+31
| | | | | | | | | | To enable a list of windows the app has open in the Dock's menu. Not to surprise existing applications with a 'Window' menu where they did not have it before, make the item hidden. Fixes: QTBUG-59433 Change-Id: I1ac3d3de69f4313f39c4631dc4b68bf6e096532a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QtBase: replace windows.h with qt_windows.hYuhang Zhao2021-11-232-2/+2
| | | | | | | | | | We have some special handling in qt_windows.h, use it instead of the original windows.h Change-Id: I12fa45b09d3f2aad355573dce45861d7d28e1d77 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Restore src/tools/moc/util/generate_keywords.proMarc Mutz2021-11-231-0/+5
| | | | | | | | | The file was inadvertently removed in ad2da2d27a590333fc89a56fc58700a09c3017b3. Pick-to: 6.2 Change-Id: Iaaf74d7ae382b0c9487fb25a58632dfc5be6538d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qapplicationstatic.h: fix syncqt warningMarc Mutz2021-11-231-1/+1
| | | | | | | | | | Warning was: "QtCore: WARNING: src/corelib/kernel/qapplicationstatic.h includes QMutex when it should include QtCore/QMutex" Comply. Change-Id: Ifc74b4f8052b7e95f86cab9a01a7e91bcbc3022d Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QVLA: Self-Encapsulate FieldsMarc Mutz2021-11-221-97/+97
| | | | | | | | | | | | | | | | Use member functions to access some (combinations of) fields in preparation of moving said fields to base classes: s + ptr → end() s → size() ptr → data() (or begin(), depending on context) a → capacity() Fixed a const-incorrectness issue detected by the change. Task-number: QTBUG-84785 Change-Id: I2218d57559208c9d77b8860d419979e92f140e13 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>