summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* QVariant: fix C++20 build with older MSVC 2022HEADdevMarc Mutz5 hours1-0/+4
| | | | | | | | | | | | | | | | | | | | | | | ... which claim full C++20 conformance (__cplusplus >= 202002), but still lack https://wg21.link/P0846. Fix by extending the existing workaround for lack of P0846 support to these compilers. Known to fail: _MSC_VER 1936 Known to pass: _MSC_VER 1939 We might need to check 1938 and 1937, but the workaround should only show up as an additional get/get_if overload and not disturb normal operation, so it's not critical to get the boundary version exactly right. Amends eb9c8042cfa71f16cda27cdeb052d84a6cc117d7. Pick-to: 6.7 Task-number: QTQAINFRA-6204 Change-Id: Ia3e0072d606efb7efd6ce0f75239850c7cd925bb Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* QResource: use qint64 for lastModifiedThiago Macieira13 hours1-4/+4
| | | | | | | | We pass it to QDateTime::fromMSecsSinceEpoch, which is signed. Change-Id: I6979d02a7395405cbf23fffd17c992674c6321fc Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* QResource: remove unnecessary mutable markersThiago Macieira13 hours1-4/+4
| | | | | | | | | | | These are all modified by ensureInitialized() and ensureChildren(), which are const. However, ensureInitialized() does a const_cast<> on the object before calling non-const load(), which is where these are modified. Change-Id: I6979d02a7395405cbf23fffd17c992546ecbda49 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QBitArray: use new comparison helper macrosTatiana Borisova17 hours3-6/+18
| | | | | | | | | | Replace public friend operators operator==(), operator!=() of QBitArray to friend method comparesEqual() and Q_DECLARE_EQUALITY_COMPARABLE macro. Task-number: QTBUG-120304 Change-Id: I6b47111c144016b3aa05f01c8035c32d164291ad Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Widgets focus abstraction: Skip isFocusChainConsistent w/o logging catAxel Spoerl18 hours1-1/+6
| | | | | | | | | | | | | | | | | | QWidgetPrivate::isFocusChainConsistent() iterates over QApplication::allWidgets() to identify and log inconsistencies. In applications with many widgets, this has a major performance impact. Disable the check and return true, unless the logging category qt.widgets.focus is enabled. Adapt tst_QWidget::focusAbstraction() to enable the logging category. This amends 58d5d4b7c2faaeaa2c2ccdabb3da6d37f9db880a. Fixes: QTBUG-124666 Change-Id: Ia487b381ab45b052638b189bf56acaf4353b1a37 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Revert "QCommonStyle: paint arrows with anti-aliasing"Axel Spoerl18 hours1-4/+5
| | | | | | | | | | | This reverts commit 74e8f673b827c57ebf2bf802840c19e4a1ac848b. Reason for revert: the change as is makes the rendering of arrows in the styles unpleasantly blurry. Pick-to: 6.7 Change-Id: I59ccd7373631a550276465caffb7d3074ff5893c Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* metal: Tie drawable's MTLTexture lifetime to MTLCommandBufferTor Arne Vestbø18 hours1-0/+10
| | | | | | | | | | | | | | By default we define QRHI_METAL_COMMAND_BUFFERS_WITH_UNRETAINED_REFERENCES, which means we create MTLCommandBuffer via commandBufferWithUnretainedReferences. In this case, if Metal API validation diagnostics is enabled in Xcode, the texture is released before the command buffer is done with it, so we manually ensure the lifetime of the texture extends until the command buffer is complete. Pick-to: 6.7 Change-Id: I9b9efa96b4a004f43e0b72144aafc4b440c7fbb4 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Avoid including qversiontagging.h in QtCore module headerAlexey Edelev18 hours1-0/+4
| | | | | | | | The header is already included in qglobal.h Task-number: QTBUG-124346 Change-Id: Id713cdecd4c3221edc32402cb874ab0d98a86f82 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSaveFile: don't reset fileEngine after commit()David Faure19 hours1-4/+4
| | | | | | | | | | | [ChangeLog][QtCore][QSaveFile] Member functions such as fileTime() and size() now continue to work after commit(). Fixes: QTBUG-66605 Fixes: QTBUG-77039 Change-Id: I0b17eae9493911d1a0828b589d762bd8eb344bce Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QThread: Introduce static isMainThread() helperJarek Kobus19 hours6-4/+30
| | | | | | | | | | | | Useful for QtCreator, as a replacement for Utils::isMainThread() inside threadutils.h, may serve for other projects, too. Introduce static QCoreApplicationPrivate::theMainThreadId atomic helper field holding the id of the main thread. Change-Id: Iccc0302f423f47b5ecad86c4cd3de4d1ee36155f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QThread: Introduce isCurrentThreadFabian Kosmale19 hours3-0/+38
| | | | | | | | | | This allows a more efficient way of checking whether a thread is the currently executing one (without using private API). Change-Id: I007edae6b258d7e42e901fa720d4f3cf9fe25a49 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: David Faure <david.faure@kdab.com>
* QTest: replace the majority of the ugly QCOMPARE_xx macroThiago Macieira19 hours1-19/+43
| | | | | | | | | | | | | | | | | | Using templates to make the code look nicer and be more debuggable. Previously, if you tried to step into the QCOMPARE_xx, you'd have the creations of qxp::function_ref from the lambdas before you got to the actual comparison. And all of this was in-place from macro expansion, so you couldn't tell what was happening. Now, if you step into QCOMPARE_xx, you go to qCompareOp. There are 5 frames between that point and the actual comparison (four std::forward() and the Compare::compare()) and debuggers could step over std::forward. Even if they can't, both libstdc++ and libc++ implementations are simple casts, so there's nothing more to step into. Change-Id: I12a088d1ae424825abd3fffd171dbbf7adb7e7e2 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QTest: rip out qxp::function_ref from compare_helper()Thiago Macieira19 hours5-26/+95
| | | | | | | | | | | | | | | | [ChangeLog][QtTest] The QCOMPARE_xx macros can now only find QTest::toString() expansions that are either found via Argument Dependent Lookup on the type in question or are an instatiation of the QTest::toString<T>() template. This matches the behavior of the QCOMPARE() macro. This changes the way how the toString() overloads are selected, so we need to explicilty constraint the main QTest::toString() template in order to pick the free functions when they exist. Change-Id: Ie28eadac333c4bcd8c08fffd17c54e768c5cffd0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QTest: rip out qxp::function_ref from reportResult()Thiago Macieira19 hours7-25/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is causing huge code bloat because everything is a local lambda. Instead, pass direct type-erased function and data pointers to the replacement function. Testing with tst_qcborvalue, this reduces the compilation time and the output binary size significantly: Before After Compiler Time Size Time Size GCC 13.2 136.99 s 202.3 MB 13.88 s 14.3 MB GCC 14.0 131.49 s 202.7 MB 14.69 s 14.4 MB Clang 17 77.2 s 146.7 MB 13.62 s 12.2 MB Clang 18 141.9 s 187.1 MB 13.62 s 12.4 MB This causes a difference in how toString() overloads are found. Previously it would match far more overloads because the toString() calls were expanded by the macro. Now, we depend on Argument-Dependent Lookup and associated namespaces, so toString() overloads should not be in the QTest namespace any more. With this patch applied, the testlib testcase of tst_selftest started failing, because nullptr is now handled differently. However, I consider it as a bugfix, because previously it was falling back to a default implementation, and now it is using the QTest::toString(std::nullptr_t) overload, which is a desired behavior. Update the reference files for tst_selftest with the new expected output. Task-number: QTBUG-124272 Change-Id: Ie28eadac333c4bcd8c08fffd17c5484186accdf6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QTest: group all the toString() functionality in a single headerThiago Macieira19 hours4-469/+489
| | | | | | | | | It was split between qtest.h and qtestcase.h, so the QTest::toString() specializations were not available in qtestcase.h. And it was confusing. Change-Id: Ie28eadac333c4bcd8c08fffd17c54fafc8014cc7 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QTest: add removed_api.cpp and move deprecated functions to itThiago Macieira19 hours4-8/+32
| | | | | | | | | | | | | QtTest is not under the same Binary Compatibility guarantees as the other modules, but let's try and do it where it's easy. The toString() method can simply be removed from the header because it's not a member function. Its deprecation wasn't marked with a version number, so it starts now with 6.8. Change-Id: Ie28eadac333c4bcd8c08fffd17c54faca7057b9c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QColorTransferTable: de-duplicate inverse lookup codeAllan Sandfeld Jensen19 hours1-31/+23
| | | | | | | | | As a drive-by, drop the unnecessary floor() and just truncate. These operations are the same for positive numbers, and by the time we reach the code, we have already checked and dealt with negative numbers. Change-Id: I3e99438f11e3a6c7862b8592b7bb4ddda1b33666 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Android: Add QT_ANDROID_SURFACE_CONTAINER_TYPE env varTinja Paavoseppä20 hours1-4/+13
| | | | | | | | | | | | | | | | | | The Android QPA picks between two types of Views that can provide a Surface for it, SurfaceView and TextureView. Normally, SurfaceView is used if there's just one window in the app, and TextureView is used for any additional windows, since it allows better control over the z order between the windows. Add an environment variable QT_ANDROID_SURFACE_CONTAINER_TYPE that can be used to override the normal choosing strategy, and force the application to use either one of the View classes for all the windows of the app. This helps with testing changes to the Android QPA windowing, as you can use the same app to test both Surface Views easily. Pick-to: 6.7 Change-Id: Icc15fd9675175b854354a379b6ffa7ae5532408e Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Correct license of qsignalspy.cppLucie Gérard20 hours1-1/+1
| | | | | | | | | | | | | When 7bff20c9f5d1f6c8bde18f0cfd9c5231d7792ef7 renamed the file from .qdoc to .cpp, it failed to adjust the license header from GFDL (documentation license) to the QtTest default. Copy the license from qsignalspy.h, whence the code originally came from. Task-number: QTBUG-121787 Change-Id: I969ddc2b92882107581bbd514a28af7337e0fb9a Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* SQL/QSqlIndex: remove unused private function createField()Christian Ehrlicher20 hours2-19/+0
| | | | | | | | | | This function was forgotten when the Qt3 support was removed during initial Qt5 porting (f306d18fe6555a9a5c60560745773b0bf5685ec3). Pick-to: 6.7 Change-Id: I83a0be0db7e81bd9d4f84683a013e1d4faab2dd8 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
* SQL/IBase: print warning in case of unsupported data typeChristian Ehrlicher20 hours1-1/+6
| | | | | | | | Print a warning when we encounter an unsupported data type. Pick-to: 6.7 6.5 Change-Id: If35ac4dfdf29e555ec406f592c1001b5e16f8ff2 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Move int QObject::startTimer() to the alphabetically ordered placeTatiana Borisova20 hours1-13/+13
| | | | | | Change-Id: Ibd1f0ef1c57e8aa31ea7b42b2874ba860d9c4373 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QHttpNetworkConnection: make channels member constMårten Nordheim20 hours1-1/+1
| | | | | | | | | They are set in the ctor and should not change afterwards, so make it explicit by making them const. Task-number: QTBUG-102855 Change-Id: Ie1838a532f89d9cc0c3ae16521fa1829b5cdff61 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* MSVC: improve QASV(const char(&str)[N]) compilation timeIvan Solovev20 hours2-1/+12
| | | | | | | | | | | | | | | | | | | | | | | The lengthHelperContainer() implementation for sizeof(Char) == 1 case is using qstrnlen() for the non-constexpr case. qstrnlen() is an inline function which is effectively a nullptr check and a memchr() call. For some reason, on MSVC this combination resulted in very slow compilation for the user projects, where each call to QObject::setObjectName() was hitting this codepath. Fix it by replacing the qstrnlen() call with strnlen_s() for MSVC. It seems that for now all versions of MSVC are affected. However, introduce a new Q_COMPILER_SLOW_QSTRNLEN_COMPILATION definition, which will allow us to check for the compiler version later on. For now this definition is set for all MSVC versions unconditionally. Fixes: QTBUG-124376 Pick-to: 6.7 6.7.1 Change-Id: Id769bef1e950ffa756acf7af39d362fd8b112019 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Android: remove duplicated code for handling UI mode changesVolker Hilsheimer20 hours1-27/+0
| | | | | | | | | The QtActivityDelegate::handleUiModeChange(int) handler implementation is identical to the one in QtActivityDelegateBase, so no need to override. Change-Id: I9753bc6fa22554c99bd127bdfa85d10007eb551c Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* windeployqt: Deploy target dlls for directx and vc runtimeOliver Wolff24 hours2-6/+13
| | | | | | | | | | | When deploying for a cross compiled target we should deploy the target versions of directx and compiler runtime dlls. Thus a new platform was added to utils to be able to reflect this distinction. Fixes: QTBUG-124719 Pick-to: 6.7 Change-Id: I4dd797804fa871d76d56f8775b188d4306b51e5a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Windows: Prevent potential "crash" in setApplicationBadgeOliver Wolff24 hours1-6/+10
| | | | | | | | | | | | In some circumstances our application badge code seems to throw an exception. The issue is hard to reproduce but just catching the exception should be enough to fall back to the "non-winrt" version of the code. Fixes: QTBUG-117091 Pick-to: 6.5 6.7 Change-Id: I61f4e59f7309e2bb47b50a6ca6f3099ed9cd0af1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Introduce optional smarter font merging with ContextFontMergingEskil Abrahamsen Blomfeldt25 hours15-64/+150
| | | | | | | | | | | | | | | | | | | | | | This introduces an optional, slightly more expensive approach to font merging which takes the full string into account, instead of just going character by character. This addresses the issue that you may sometimes get multiple fonts to cover one string of text in a single language. With Chinese, this is especially an issue because many fonts will only support parts of the very large character set. The new algorithm detects if the string was incompletely covered by the font and tries the fallback fonts in order to find the best match. This is obviously more expensive, especially if no perfect match is found and we have to check all the fallbacks in the list, but it is opt-in and only enabled if the ContextFontMerging flag is set. Task-number: QTBUG-121131 Change-Id: I8c7874d0918640bd83418e3c4726c89f43a220a3 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QCocoaMenu: fix crash when app quits while menu is openMitch Curtis27 hours1-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following QML code: import QtQuick import QtQuick.Controls ApplicationWindow { visible: true Menu { id: menu MenuItem { text: "Some action" } } TapHandler { acceptedButtons: Qt.RightButton onTapped: { exitAppTimer.start() menu.open() } } Timer { id: exitAppTimer interval: 1000 onTriggered: Qt.quit() } } With the new native Qt Quick Menu, this will create a native menu on platforms like macOS. When the user right clicks on the window, a timer is started and a native menu opened. After 1 second, Qt.quit() is called while the menu is still open. As popUpContextMenu is blocking, when the menu is finally closed (by user interaction), control returns to QCocoaMenu::showPopup, but the QCocoaWindow has since been destroyed. Account for this by storing the window in a QPointer. It's not possible to test this as native menus can't be auto-tested. Fixes: QTBUG-124551 Pick-to: 6.5 6.7 Change-Id: I14a97073f350c38828b3e16bb157439aeeeb6529 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QCalendarBackend: link to the relevant plugin documentationEdward Welbourne30 hours1-2/+2
| | | | | | | | | The docs mention in passing the option of writing a plugin, but lack any link to where to find the details of that. Task-number: QTBUG-115200 Change-Id: Ibd29516d63c55784236860f81048a425c9620223 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Windows11Style:Save unpolished palette for QAbstractScrollArea::viewportWladimir Leuschner35 hours2-4/+15
| | | | | | | | | | | | | | | When using QWindows11Style, the viewports background has to be set to Qt::transparent to have the effect of rounded corners in ItemViews and Combobox flyouts. Other Windows styles do not make use of transparent windows, so this polishment needs to be reverted in case the style changes. Other styles also do not manipulate the QAbstractScrollArea::viewport palette and thus changing color schemes results in not applying the new color scheme. Fixes: QTBUG-123928 Pick-to: 6.7 6.7.1 Change-Id: Icb529124f63587e75bb56e40e8b1fcfe3c61c55d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* QRestReply: make charset parsing more robustMarc Mutz35 hours1-19/+207
| | | | | | | | | | | | | | | | | | | | | | The old code was based on QString::split and e.g. didn't handle escapes in quoted-strings. Write a modern recursive-descent parser to parse out type/subtype and charset parameter. Since we don't, yet, support CFWS (see below), recursion depth is strictly limited, so we're not susceptible to recursion bombs here. It currently handles only RFC9110-style grammar, but can be easily extended to support CFWS (RFC2822-style comments and folding white-space) or RFC2231-style continuuations, if needed. It's a bit more general than strictly required, because I expect this to be reused elsewhere ere long. Pick-to: 6.7 Fixes: QTBUG-120307 Change-Id: I309928dc350a043672dffb4a259b457764c031be Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
* Add the missing include of termios.hAlexey Edelev35 hours1-0/+1
| | | | | | | | The include unlocks the usage of the TIOCNOTTY constant. Fixes: QTBUG-124642 Change-Id: Ife2475626ca61efe38ea7928a9b61a8aded1701d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSignalSpy: inline connectToSignal() into its only callerMarc Mutz35 hours2-15/+6
| | | | | | | | | | Following the verify() Extract Method refactorings, this function has only one caller left, so it doesn't pull its weight anymore. Task-number: QTBUG-123544 Change-Id: I93a296a9be81ef9c3b702065e76ecc4b822a0a43 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QSignalSpy: de-inline most of the private ctorMarc Mutz35 hours2-9/+14
| | | | | | | | | | | | | | | | ... by moving its body into an out-of-line init() function. This allows to drop the exporting of connectToSignal(). We can't de-inline the whole ctor (yet), because that would pin the vtable to the qsignalspy.cpp TU, which would require us to export the class wholesale to make the vtable accessible to users of the class, but we can't export the class because it inherits QList. Task-number: QTBUG-123544 Change-Id: Ieffd6d2f542daa20e876c6114cb5dc8150870bb4 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* Update Harfbuzz to 8.4.0Eskil Abrahamsen Blomfeldt35 hours78-647/+2497
| | | | | | | Pick-to: 5.15 6.2 6.5 6.7 6.7.1 Fixes: QTBUG-124757 Change-Id: I1fa9259c2f7cb45b4dcec8956c2186735c89fb95 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QDialog: Add Q_ENUM to DialogCodeFriedemann Kleint38 hours1-0/+1
| | | | | | | This helps the dynamic Python bindings project. Change-Id: Ibe2c06f4a4e5fd9c3ca41884d811990ec9328b80 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Android: Propagate a11y ObjectShow events to screen readerJens Trillmann44 hours7-0/+33
| | | | | | | | | | | | Sending an ObjectShow event, e.g. by setting QQuickItem::visible to true, has to trigger a refresh of the screen reader hierarchy. If the signal is ignored the source of the signal will be ignored by the screen reader. Fixes: QTBUG-122436 Pick-to: 6.5 6.7 Change-Id: I32ee2e8b2602cd0dd9b9a83ff1fe426d88d137a8 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* ColorScheme: remove unused QWindowsApplication::isDarkModeVolker Hilsheimer44 hours4-17/+1
| | | | | | | | | | It unnecessarily duplicates and distributes logic for reporting whether the application should run in dark or light mode. Task-number: QTBUG-124490 Change-Id: I227660cf3e1f21afd5fd9b3d6452f6109f3cf799 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* ColorScheme: consolidate dark mode handling on Windows into ThemeVolker Hilsheimer44 hours7-31/+33
| | | | | | | | | | | | | | | Move storage of whether dark mode is set into a static class member of QWindowsTheme, and remove QWindowsContext::isDarkMode; ask the theme instead using the colorScheme() implementation, which will return the stored value. Move the code handling settings changes into QWindowsTheme as well. Task-number: QTBUG-124490 Change-Id: I4795e80b6ab2c94701385dc84771e9ad5578cf32 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Layouts: Compile fix #ifdeffed out debug codeJan Arve Sæther48 hours1-2/+2
| | | | | Change-Id: I1e7ffe1b27688e6d2258af4dcea1b32f02f73923 Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* print: Clamp margins entered by the user in the page setup dialogJarkko Koivikko48 hours7-61/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The current functionality discards all margins if any values fall outside the minimum or maximum limits. This can confuse and frustrate users since the Windows native page setup dialog doesn't enforce minimum values. Introduce a new parameter outOfBoundsPolicy for the set margins functions in the QPageLayout: - OutOfBoundsPolicy::Reject The old behavior rejecting out of bounds values. - OutOfBoundsPolicy::Clamp The new behavior for clamping the values. The OutOfBoundsPolicy is applied only in StandardMode to maintain backwards compatibility in FullPageMode, where all margins are accepted. Use the new Clamp policy in the printsupport where the clamping is necessary. Maintain binary compatibility by putting the declaration of the old symbols without policy parameter behind QT_GUI_REMOVED_SINCE, and implement them in removed_api.cpp to call the new versions. Task-number: QTBUG-122410 Change-Id: I06aee292c1daff2863502f471b03798dafbcd81b Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QSqlDatabase: add moveToThread()/currentThread()Christian Ehrlicher2 days2-0/+52
| | | | | | | | | | | | | Add QSqlDatabase::moveToThread() to be able to move the driver instance to another thread. [ChangeLog][Sql][QSqLDatabase] QSqlDatabase gained two new functions moveToThread() and currentThread() to be able to use it in another thread than the one it was created in. Fixes: QTBUG-39957 Change-Id: I9cb51358f73a3a2fa72813bfdbe059279d388bd7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSignalSpy: make args member constMarc Mutz3 days2-10/+4
| | | | | | | | | | This means it's implicitly thread-safe now and we don't need to protect accesses to it with the mutex. Task-number: QTBUG-123544 Change-Id: I9f826003dca6fb81e7a75e283482c81ecff09be0 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QSignalSpy: make two private static helpers file-staticMarc Mutz3 days2-5/+2
| | | | | | | | | | | ... because they can be. As a drive-by, fix clazy-function-args-by-value by taking QMetaMethod by value. Task-number: QTBUG-123544 Change-Id: Icdad68b91850d284c918e6180f3ce841de2af016 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QSignalSpy: pull makeArgs() out of ctor critical sectionMarc Mutz3 days2-5/+9
| | | | | | | | | | | | | | | | | | First store the result in a temporary, and, in the critical section, only move it into place. This minimizes the amount of code in the critical section (Amdahl's Law) and also means we don't need to permanently drop the mutex when we call unbounded code using metacall(). That, in turn, makes sure the args member is only ever seen empty or fully populated. Since makeArgs() no longer accesses member functions now, we can make it static. Task-number: QTBUG-123544 Change-Id: If19db53f85d7c9eb18d4fb2c61e1aa3d4b9c2e00 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: David Faure <david.faure@kdab.com>
* QSignalSpy: make initArgs() return the resultMarc Mutz3 days2-5/+7
| | | | | | | | | | | ... instead of working directly on the member variable. This is in preparation of making said member variable const, so it need no longer be protected by the mutex. Task-number: QTBUG-123544 Change-Id: Ifc407502ec2c5c52dc3b42edea18be7fc672a968 Reviewed-by: David Faure <david.faure@kdab.com>
* QXmlStreamEntityResolver: disable copyingMarc Mutz3 days1-0/+2
| | | | | | | | | | | | | | | | | It's a polymorphic class, so disable copying as we do for all other interfaces, too. Disabling the copy/move SMFs requires manually restoring the default ctor. [ChangeLog][QtCore][Potentially Source-Incompatible Changes][QXmlStreamEntityResolver] Disabled the copy and move constructors and assignment operators. You can still provide them for your own subclasses, but you must do so explicitly. Change-Id: Ie2460f88664198707fdd4119376503f81a0f2a8d Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QSignalSpy: de-inline chrono wait()Marc Mutz3 days2-15/+16
| | | | | | | | Because we can now that there's a .cpp file. Task-number: QTBUG-123544 Change-Id: Ie525e157016cb3c0c7a273fba3fadb13d54c1877 Reviewed-by: David Faure <david.faure@kdab.com>
* QSignalSpy: de-inline verify() helper functionsMarc Mutz3 days2-40/+37
| | | | | | | | | Now that we're moving the code anyway, also move their declarations into the general private: section of the class. Task-number: QTBUG-123544 Change-Id: I6b1e7006b73b710daa4b511b2fd643293a3d4844 Reviewed-by: David Faure <david.faure@kdab.com>