summaryrefslogtreecommitdiffstats
path: root/tests/auto
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix duplicate data tag tst_QDate::fromStringFormat:year-match-1999Edward Welbourne5 days1-1/+1
| | | | | | | | | | | | | | There were two of it. The "year-match-*" tests have two year fields, one four-digit the other two-digit, and deal with whether they match. The second year-match-1999 had, however, only a "yy" year format; it in fact belongs to the "just-yy-*" family that follows. So rename it. Amends commit 5108192f67042656afdb3508f8cc2563167fae97 which landed in 6.7. Pick-to: 6.7 Task-number: QTBUG-107185 Change-Id: Ibfe0c33cb00dc068d0f670d27c43ec4dc4550c05 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* More consistent handling of feature timezoneEdward Welbourne5 days2-5/+3
| | | | | | | | | | | | | | Follow-up to commit ae6186c7e8cfdb9420b9119f5affbba7d069598d * require the feature in headers that should only be seen when it's enabled, * expose the auto-test to being run even when the feature is disabled (the parts of that depend on the feature have needed #if-ery) and * fix the Darwin-specific test's misguided #if-ery. Pick-to: 6.7 6.5 Task-number: QTBUG-108199 Change-Id: I398cf44c33ffdcb4bb04f54a9d8ccfef68741e4e Reviewed-by: Mate Barany <mate.barany@qt.io>
* Disable copy and move of QAbstractFileEngineHandlerEdward Welbourne5 days4-0/+23
| | | | | | | | | | | | They're not wanted and Axivion (SV71) grumbles about the lack of copy and move operators and constructors otherwise. Do the same in all derived classes. Some of these needed their default constructors made overt as a result. Similar for QAbstractFileEngineHandlerList. Task-number: QTBUG-122619 Change-Id: Iff016940f8c4884bd65dd781354b9bcda9b7cdd8 Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* Convert "Color Editor Factory" Example to snippetsMohammadHossein Qanbari5 days1-1/+0
| | | | | | | | | | The color editor factory example is removed and part of the codes are used as snippets. Fixes: QTBUG-119985 Pick-to: 6.7 6.6 Change-Id: I421e473e7db09a5af7543b80b87a338d8ff2ab7e Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Fix end-of-parse fixup of two-digit year in QDateTimeParserEdward Welbourne5 days1-0/+3
| | | | | | | | | | | | | | | | | When a date string contains day of the week, day of the month, month and two-digit year, it was still possible to get a conflicting result in the default century instead of a consistent result in the next (in fact present) century. The actual logic needed to get the right year has to take into account all date fields. This is all worked out already in actualDate(), so delegate to it instead of trying to make do with just the year info. Pick-to: 6.7 6.6 6.5 Fixes: QTBUG-123579 Change-Id: Id057128d8a0af9f3a7708d0ee173f854bb1a2a8e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Dennis Oberst <dennis.oberst@qt.io>
* Fix handling of am/pm indicators in mapping from CLDR to Qt formatsEdward Welbourne5 days1-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Both qlocale_mac.mm and dateconverter.py were mapping the CLDR am/pm indicator, 'a', to the Qt format token 'AP', forcing the indicator to uppercase. The LDML spec [0] says: May be upper or lowercase depending on the locale and other options. [0] https://www.unicode.org/reports/tr35/tr35-68/tr35-dates.html#Date_Field_Symbol_Table We don't support the "other options" mentioned, but we can at least (since 6.3) preserve the the locale-appropriate case, instead of forcing upper-case. As such, this change is a follow-up to commit 4641ff0f6a1b0da6f55db5e33c58a77be2032808 Changes locale data, as expected, to use "Ap" in place of "AP" in various formats in the time_format_data[] array. [ChangeLog][QtCore][QLocale] Where CLDR specifies an am/pm indicator, the case of the CLDR-supplied indicator is used, where previously QLocale forced it to upper-case. Change-Id: Iee7d55e6f3c78372659668b9798c8e24a1fa8982 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cope with CLDR's "day period" format specifiersEdward Welbourne5 days1-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The LDML spec includes a 'b' pattern character which is like the 'a' pattern, for AM and PM, but would rather use noon and midnight indicators for those specific times. We don't support those and using am/pm will be right enough of the time to be better than simply discarding this option, if it ever gets used (which it currently isn't), so treat as an alias for 'a'. No locale in CLDR currently uses this. CLDR also has a 'B' specifiers for "flexible day periods", including things like "at night" and "in the day". At present only zh_Hant uses 'B'. As a result, this change only affects zh_Hant's formats for time and datetime, which only zh_Hant_TW uses - zh_Hant_HK overrides them to use am/pm markers and zh_Hant_MO inherits that from zh_Hant_HK. Based on this and user feed-back, I've opted to treat 'B' as another synonym of 'a'. This removes an entry from the time_format_data[] table (it happened to occupy one whole twelve-character row), causing many other locales' offsets into that table to be shifted by 12. Only zh_Hant_TW has an actual change to which entry in the table it uses. Added a test-case. [ChangeLog][QtCore][QLocale] CLDR's 'B' (flexible day period, e.g. "at night" &c.) field, not currently supported, is now handled as a synonym for the AM/PM field 'a', instead of leaving the B as literal text. Only affects zh_TW at present. Fixes: QTBUG-123872 Change-Id: I6ba008c0a048190bf7af8c7df7629a885b05804f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_QWidget::showAndMoveChild() remove setActiveWindow()Frédéric Lefebvre5 days1-1/+0
| | | | | | | | | | | | 2f6fe3a26843ff68c5d3f9af0a2fc3cce6caac22 has made calls to QApplicationPrivate::setActiveWindow() redundant. Remove redundant calls. Task-number: QTBUG-121488 Change-Id: I7bd841574c07d73416f9f63d564fe31a8475fa9e Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* tst_QWidget::showMinimizedKeepsFocus() remove setActiveWindow()Frédéric Lefebvre5 days1-5/+0
| | | | | | | | | | | | | 2f6fe3a26843ff68c5d3f9af0a2fc3cce6caac22 has made calls to QApplicationPrivate::setActiveWindow() redundant. Remove redundant calls from testing deletion of the focusWidget, testing reparenting of the focus widget, testing setEnabled(false) and testing clearFocus sections. Task-number: QTBUG-121488 Change-Id: I7e46ddb31bd7dbc0492d057d8d84846db8c873aa Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* tst_QWidget::explicitTabOrderWithSpinBox_QTBUG81097 remove setActiveWinFrédéric Lefebvre5 days1-1/+0
| | | | | | | | | | | 2f6fe3a26843ff68c5d3f9af0a2fc3cce6caac22 has made calls to QApplicationPrivate::setActiveWindow() redundant. Remove redundant calls. Task-number: QTBUG-121488 Change-Id: I5d6871b192b5c4dda00ef912a806e62a529b629e Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* tst_QWidget::appFocusWidgetWhenLosingFocusProxy remove setActiveWindowFrédéric Lefebvre5 days1-1/+0
| | | | | | | | | | | 2f6fe3a26843ff68c5d3f9af0a2fc3cce6caac22 has made calls to QApplicationPrivate::setActiveWindow() redundant. Remove redundant calls. Task-number: QTBUG-121488 Change-Id: I2841522f533c7679cc9c254c5fe7c37f5632fd30 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* tst_QWidget::appFocusWidgetWithFocusProxyLater remove setActiveWindow()Frédéric Lefebvre5 days1-1/+0
| | | | | | | | | | | 2f6fe3a26843ff68c5d3f9af0a2fc3cce6caac22 has made calls to QApplicationPrivate::setActiveWindow() redundant. Remove redundant calls. Task-number: QTBUG-121488 Change-Id: I4a0d026fbe5da014723254bb9eb8d614cf50232f Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* QStringConverterICU: Pass correct pointer to callbackFabian Kosmale5 days1-30/+42
| | | | | | | | | | | | | | | Pass the pointer to the current state, not a pointer to a pointer to it. [ChangeLog][QtCore][QStringConverter] Fixed a bug involving moved QStringEncoder/QStringDecoder objects accessing invalid state. Amends 122270d6bea164e6df4357f4d4d77aacfa430470. Done-with: Marc Mutz <marc.mutz@qt.io> Pick-to: 6.7 6.5 Change-Id: I70d4dc00e3e0db6cad964579662bcf6d185a4c34 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QXmlStreamWriter: fix attempts to write bad QStringsThiago Macieira6 days1-0/+20
| | | | | | | | | | | | | We weren't doing the decoding from UTF-16 to UTF-32, so weren't catching invalid code sequences [ChangeLog][QtCore][QXmlStreamWriter] The class now rejects writing UTF-8 and UTF-16 invalid input (improper code unit sequences). Task-number: QTBUG-122241 Pick-to: 6.5 6.6 6.7 Change-Id: I83dda2d36c904517b3c0fffd17b42d17c637fdc4 Reviewed-by: Mate Barany <mate.barany@qt.io>
* QXmlStreamWriter: decode UTF-8 into code pointsThiago Macieira6 days1-0/+125
| | | | | | | | | | | | | | | | | | | | | We were iterating over code *units* and that yielded wrong results. The one from the bug report was simply caused by the fact that QUtf8StringView::value_type is char, which is signed on x86, so the expression: *it <= u'\x1F' was true for all non-Latin1 content. But in attempting to fix this, I needed to do the proper UTF-8 decoding, as otherwise we wouldn't catch non-Latin1 sequences and such. [ChangeLog][QtCore][QXmlStreamWriter] Fixed a bug that caused the class to fail to write UTF-8 strings with non-US-ASCII content when passed as a QUtf8StringView. Fixes: QTBUG-122241 Pick-to: 6.5 6.6 6.7 Change-Id: I83dda2d36c904517b3c0fffd17b42bbf09a493d0 Reviewed-by: Mate Barany <mate.barany@qt.io>
* QDeadlineTimer: use new comparison helper macrosTatiana Borisova6 days2-0/+32
| | | | | | | | | | | Replace public friend operators operator==() and operator!=() of QDeadlineTimer to friend method comparesEqual(). Replace public friends operator<(),<=(),>(), etc of QDeadlineTimer to friend method compareThreeWay(). Task-number: QTBUG-120304 Change-Id: Ib855ccac9b31b54fe28b822f2985154608fefa27 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Convert Group Box Example to snippets and screenshotsMohammadHossein Qanbari6 days1-1/+0
| | | | | | | | | | | | | Remove the Group Box Example from the repository, eliminating the associated example codes, screenshot, and documentation file. The only relevant portion used in the QGroupBox class has been relocated to the existing snippet file. Additionally, all references to this example across other files have been removed. Fixes: QTBUG-119980 Pick-to: 6.7 6.6 Change-Id: I66f9dd9dab1fe64f2d20424af3acd135201827d2 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* HttpTestServer: pass std::function by value and move into placeMarc Mutz6 days2-5/+3
| | | | | | | | | | | | | | | | Virtually all callers of this function (will) pass rvalues, so take the std::function by value (reaping C++17 guaranteed copy elision) and std::move() into the member variable ("perfect sink"). Like for many owning types, moves are much cheaper than copies for std::function, because the external state is merely tranferred between objects, and not copied. Amends e560adef213301318dcc13d4db155624846e0420. Pick-to: 6.7 Change-Id: I269b54e51ba09ac595ac4e4f255209778819adad Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* tst_QRestAccessManager: fix signature of server handlersMarc Mutz6 days1-6/+6
| | | | | | | | | | | | | HttpTestServer::Handler is declared to take the first argument by reference to const, not by value, so use the same parameter passing for the lambdas passed to setHandler(). Avoids copying the (rather large) argument when invoked through the std::function wrapper, and silences clazy-function-args-by-ref. Pick-to: 6.7 Change-Id: I726d0b98a7fcb3b1b33c5bde203035f593c39bdd Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* tst_QRestAccessManager: leak less on failureMarc Mutz6 days1-7/+8
| | | | | | | | | | | | | | | Move some deleteLater() calls to before the first QCOMPARE/QVERIFY macros, so they get executed even if the macros return on failure. This isn't an all-encompassing solution, but I lack the time to port all this to smart pointers, and this is some improvement. As a drive-by, port QVERIFY(opt.has_value()) to QCOMPARE(opt, nullopt). Task-number: QTBUG-120307 Pick-to: 6.7 Change-Id: Ia5a2cabd273a779938b22badc91b109fcc545203 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* tst_QWidget::focusChainOnHide remove QApplicationPrivate::setActiveWindFrédéric Lefebvre6 days1-2/+0
| | | | | | | | | | | 2f6fe3a26843ff68c5d3f9af0a2fc3cce6caac22 has made calls to QApplicationPrivate::setActiveWindow() redundant. Remove redundant calls. Task-number: QTBUG-121488 Change-Id: I5b429dcaa47cd179785345f9f7a80648574670dd Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Add API to provide user-defined fallback fontsEskil Abrahamsen Blomfeldt6 days1-0/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | When depending on Qt's font merging for providing glyphs for certain languages, there are currently some drawbacks. For one, you will typically get a system font which might not fit together with the main font of the application. In addition, you might get some glyphs from one font and other from another (typically for Chinese where the character sets are so large that fonts will often only implement parts). And finally, you may get the wrong glyphs for writing systems with regional differences, if your application is e.g. written in Japanese and then run on a Chinese system, you might get Chinese versions of characters which are shared between the languages. Without language-based font matching in Qt, there's no silver bullet for fixing this. This patch introduces API which makes it possible for users to provide the solution themselves, either by selecting application-provided fonts as fallbacks for certain scripts or by hardcoding system fonts for a specific language. [ChangeLog][Fonts] Added API to override default fallback font families for specific scripts. Task-number: QTBUG-121131 Change-Id: I23ee17b7dfe1c1e481c87cc67a05a0522841b598 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QItemSelectionRange: use new comparison helper macrosTatiana Borisova6 days1-0/+10
| | | | | | | | | | | | Replace public operators operator==(), operator!=() of QItemSelectionRange class to friend methods comparesEqual(). Use QT_CORE_REMOVED_SINCE and removed_api.cpp to get rid of current comparison methods and replace them with a friend. Task-number: QTBUG-120304 Change-Id: Ideff990c942d5ee1c89a93ac2081cc5d7067b23f Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* wasm: Enable fileselector testEven Oscar Andersen6 days7-1/+6
| | | | | | | Also add test files for emscripten platform to build Change-Id: Ief03e44a4e3f3339a65453469a7ae0a6969f2252 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Support rendering CSS 'border' property for html tableSanthosh Kumar6 days1-0/+68
| | | | | | | | | | | | We supported CSS 'border-width', 'border-style' and 'border-color' for HTML tables since 8a9bec35fb0c60a0e5990c1a12ffe6f39fdbf2d. Now we also support the 'border' property, which is shorthand to set all four borders' width, style and color. Fixes: QTBUG-123167 Pick-to: 6.7 6.6 Change-Id: I5f29b94ab9facf412a9c230d554efb5c69368b6b Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QNativeIpcKey: use new comparison helper macrosTatiana Borisova7 days2-0/+18
| | | | | | | | | | Replace public friend operators operator==(), operator!=() of QNativeIpcKey to friend methods comparesEqual() and Q_DECLARE_EQUALITY_COMPARABLE macro. Task-number: QTBUG-120304 Change-Id: If18d86fb18e44f8d2210cba7ca93e4ac478a2a48 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QKeyCombination: use new comparison helper macrosTatiana Borisova7 days2-40/+29
| | | | | | | | | | Replace public friend operators operator==(), operator!=() of QKeyCombination to friend method comparesEqual() and Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE macro. Task-number: QTBUG-120304 Change-Id: I679f3fa5fcc4c675a763cc5a5fe0e0880439a64f Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* tst_QHttpNetworkConnection: Move to use only one ctorMårten Nordheim7 days1-9/+9
| | | | | | | | | We want to get rid of the other one, it's all internal API anyway. Task-number: QTBUG-102855 Change-Id: I2b621c20f4dd7c8bf5f07db8db908c2b7b86976f Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Add binary compatibility file for 6.7.0Milla Pohjanheimo7 days1-0/+27743
| | | | | | | | | Binary compatibility file added. Task-number: QTBUG-123281 Pick-to: 6.7 Change-Id: I9fa0f828edc810d1523eb75e242590253c7d7d35 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* wasm: introduce QT_BUILD_WASM_BATCHED_TESTSMorten Sørvig7 days2-2/+2
| | | | | | | | | | | | | | | | | | | We are selecting a subset of the tests for batching/CI, however this is done for the WASM configuration which interferes with non-batched tests. - we can only build and run tests which are in the batching subset - we are enabling threading tests which breaks the no-thread configuration. Add QT_BUILD_WASM_BATCHED_TESTS and enable for WASM and batching. There's then no restrictions on which tests can be selected for CI. Change-Id: I59a67b63e80cd00676cb28f916951d2a52b0ee2c Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QTableView: fix infinite loop when resizing rows/columns on model resetVolker Hilsheimer7 days1-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | When a slot is connected to the modelReset signal before the model is set on the view, then such a slot might try to resize the columns or rows to fit the contents before the view had a chance to perform layout work. In that case, the while-loop that calculated the size hint of a rows (or column) by checking the size hint of each cell might not exit, as cached information about visual indexes would be invalid. To prevent this, don't loop over the cells if the actual last row/column of the model (after the reset) is less than the first (cached) visible row/column. Also, make sure we increase the counter for number of rows/columns processed with each iteration. Add a test (that loops infinitely without the fix, resulting in the test being killed by the framework), and make the 'actual' variables constant for clarity. Fixes: QTBUG-124301 Pick-to: 6.7 Change-Id: I0adb2f1e8a1e78760ef7c19e9686c9572eca8be6 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* moc: Treat number + characters as Identifier, not NumberFabian Kosmale7 days1-0/+30
| | | | | | | | | | | | | | | | | While <DIGIT>+<Character> is not a valid identifier by itself in the C++ language, it might become one when using it with the token pasting operator. This risks confusing some number literals with suffix as Identifiers, but those are currently not supported anyway, so this shouldn't break anything that is currently working. Fixes: QTBUG-87219 Fixes: QTBUG-124288 Pick-to: 6.7 Change-Id: If73255cc0e6649bc90c52b1d177aac8ff975ae69 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* tst_QVariant: fix stringification of char16_t and char32_tThiago Macieira8 days1-1/+3
| | | | | | | | | | QVariant::toUInt() cannot convert from those two, so we always ended up with 0, producing lots of duplicated test rows. Pick-to: 6.7 Fixes: QTBUG-124349 Change-Id: Ie28eadac333c4bcd8c08fffd17c5a3e39a2cc3f6 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* tst_QVariant: remove duplicate rows from compareNumericsThiago Macieira8 days1-2/+1
| | | | | | | Task-number: QTBUG-124349 Pick-to: 6.7 Change-Id: Ie28eadac333c4bcd8c08fffd17c5a3d824fe76ec Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* tst_QVariant: fix copy & paste error in double-float comparisonsThiago Macieira8 days1-1/+1
| | | | | | | | | | | We wanted to test the (min,max) of each of the two types, but one of the four combinations wasn't correctly done. Task-number: QTBUG-124349 Pick-to: 6.7 Change-Id: Ie28eadac333c4bcd8c08fffd17c5a3ccb4205139 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* wasm: move wasm tests to own subdirectoriesMorten Sørvig9 days12-40/+106
| | | | | | | | Match the standard one-test-per-directory setup. Change-Id: I0e29e3c5626ef5f739b1680d53a2a74f0c77f9be Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
* tst_moc: handle QFile::open failures from non-test functionsGiuseppe D'Angelo10 days1-5/+11
| | | | | | | | | | | Code that sets a test function up should not be fallible, or should be designed to log the failure. In tst_moc this is not the case -- QFile::open is called from within a nested lambda. If that fails, print the error and return an empty optional. Task-number: QTBUG-123623 Change-Id: I8372a6ac7dc22e68d145fa2215fe04ba682ac81b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_qstandardpaths: check the return value of QFile::openAhmad Samir11 days1-17/+30
| | | | | | | | | If QFile::open() fails in any of the these helper functions, the test should fail. Task-number: QTBUG-123623 Change-Id: I3e4d65eccd3be32eed673d9607ef468ddc0fd6e5 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* wasm: Add auto test for qfileEven Oscar Andersen11 days2-19/+40
| | | | | | | | | | | | | | Problems: * mmap of size 0 works, add test in QFSFileEnginePrivate::map to make sure wasm platform behaves as the other platforms * qwe// is a valid filename on wasm, QSKIP test * applicationFilePath does not exist on wasm. * /dev/zero does not exist on wasm, file bug, skip test * blocking pipes do not exist on wasm, QSKIP test * socketpair does not exist on wasm, QSKIP test Change-Id: I1705c543782cbcb92a7ebed2fc2792613524c686 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* CBOR: fix sorting of UTF16-to-UTF16 stringsThiago Macieira11 days1-30/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This amends commit 394788c68efacdec2676988b4b4ff207b20557f2 (its ChangeLog applies to this commit too). That fixed sorting of UTF8-to- UTF16, but when adding more unit tests, I've discovered that some UTF-16 strings also sorted incorrectly. There were two problems: First, we were assuming that we could rely on the UTF-16 length as a proxy for the UTF-8 one, but that's not true for some cases: * both 1-, 2- and 3-codepoint UTF-8 sequences are 1 codepoint in UTF-16, so some strings would have identical UTF-16 length * 4-codepoint UTF-8 sequences shrink to 2-codepoint UTF-16 ones (2:1) but 3-codepoint UTF-8 sequences shrink to 1 (3:1), so some strings would be longer in UTF-16 but shorter in UTF-8. Second, QtPrivate::compareStrings performs UTF-16 codepoint comparisons not Unicode character ones, so surrogate pairs were sorting before U+E000 to U+FFFF. To fix all of this, we need to decode the UTF-16 string into UTF-32 and calculate the length of that in UTF-8 to be sure we have the sorting order right. Since this is a slight behavior change with a performance penalty, I am choosing to backport only to 6.7. The penalty mostly does not apply to 6.8 due to commit 61556627f25e7c7acbfcc5e54127a392b5239977. Pick-to: 6.7 Change-Id: If1bf59ecbe014b569ba1fffd17c4c4ddcc874aac Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Tests: make some QFile::open calls failGiuseppe D'Angelo11 days7-11/+24
| | | | | | | | | | In some cases calls to QFile::open are made outside of a testfunction (so we can't use QVERIFY), or even in standalone executables that are executed by tests. Make them fail "visibly". Change-Id: Iec4d56f6d874be16aa2e9ad6974eeec2a98caa3f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add CMYK support to QColorSpaceAllan Sandfeld Jensen12 days5-4/+93
| | | | | | | | [ChangeLog][QtGui][QColorSpace] Support for CMYK color spaces has been added. Change-Id: I2c684dbeee8b97fc90ca4e2a892349a7fa465d06 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QCborMap iterators: use new comparison helper macrosTatiana Borisova12 days1-0/+19
| | | | | | | | | | | | | | | | | New comparison macros are used for following classes: - QCborMap::Iterator - QCborMap::ConstIterator Replace public operators operator==(), operator!=(), operator!<(), etc of classes to friend methods comparesEqual(), compareThreeWay(); Use *_helper methods to have an access to protected members of QCborValueConstRef class from friend functions. Task-number: QTBUG-120300 Change-Id: I71b6febaf3f31ea7ba668d91c375b0a7b6827d21 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QJsonObject iterators: use new comparison helper macrosTatiana Borisova12 days1-0/+22
| | | | | | | | | | | | | | | | | New comparison macros are used for following classes: - QJsonObject::iterator - QJsonObject::const_iterator Replace public operators operator==(), operator!=(), operator!<(), etc of classes to friend methods comparesEqual(), compareThreeWay(); Use *_helper methods to have an access to protected members of QCborValueConstRef class from friend functions. Task-number: QTBUG-120300 Change-Id: I308e2c0a549ff186c1d6339b38e989b80dc388a3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Skip tst_qcomparehelpers_cpp23 on Linux armIvan Solovev12 days1-1/+1
| | | | | | | | | Because it causes issues in the CI Pick-to: 6.7 Change-Id: I8cd232abf1c4ee1d9417a8bff9aa3bcf5f893e8f Reviewed-by: Tatiana Borisova <tatiana.borisova@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Android: blacklist tst_QWidget::setParentChangesFocusAssam Boudjelthia12 days1-1/+3
| | | | | | | | | This fails on Android 8, and we want to get Android 8 bump into the CI. Pick-to: 6.7 Task-number: QTBUG-124291 Change-Id: I179880c38d155df82bcb772f546104d956326647 Reviewed-by: Tinja Paavoseppä <tinja.paavoseppa@qt.io>
* Implement QWindowContainer::minimumSizeHint()Jan Arve Sæther12 days1-0/+24
| | | | | | | | | | | | It will return the minimumSize of the underlying QWindow. The container can then be put inside QLayouts without risking to be shrunk to a smaller size than the QWindow::minimumSize. Whenever the QWindow::minimumWidth or QWindow::minimumHeight changes, we call QWindowContainer::updateGeometry(), which will make the layout re-query QWindowContainer::minimumSizeHint() again. Task-number: QTBUG-121798 Change-Id: Ib7ece7d9d75f2e4964ca9042d8d8b95ce3b17739 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* uic: use qOverload for ambiguous slotsAxel Spoerl12 days2-0/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qOverload was used only for ambiguous signals and slots with no arguments. Connections to ambiguous slots made in widget designer's signal/slot editor, lead to an unresolved ambiguity when compiling the generated code in ui_xxx.h. One example is QLabel::setNum(), which can either take a double or an int. Always using qOverload is not an alternative, because signatures are normalised. E.g. const QString & / QString can't be distinguished. Add a map with all ambiguous signals and slots to customwidgetsinfo.cpp. Hardcode the map, because uic lives in QtCore and can't access meta objects of gui/widget classes. Use this map in isAmbiguousSignal() and add isAmbiguousSlot(). Change OverloadUse enum into an enum class in language.cpp. Change enum values to reflect the new condition for slots to use qOverload. Rename existing enum values and remove default argument in language::formatMemberFnPtr() to improve code readability. Apply const T& syntax for all types starting with Q, except QSize and QPoint. Revert 94c16517b3f8f01309a89598e698931ef77d60db, which was a hack forcing for QLCDNumber::display() to a string based connection. Add a new baseline to tst_uic, to test the above. Fixes: QTBUG-93413 Task-number: QTBUG-124241 Pick-to: 6.7 6.6 6.5 6.2 Change-Id: I49ccc1688cfc08970cce3e56adf18e5ac49a77e1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Android: fix 180 degree orientation issueLauri Pohjanheimo12 days1-5/+35
| | | | | | | | | | | | | | | | On android documentation orientation changes are sent via onConfigurationChanged callback. Previous implementation based orientation detection to onSizeChanged callback. That callback is not called when orientation turns 180 degrees. i.e. between landscape and inverted landscape. This fix adds detection to on onConfigurationChanged to catch those cases. Fixes: QTBUG-118887 Fixes: QTBUG-118236 Pick-to: 6.7 6.5 Change-Id: Ie2f81798de97e460de839f7ebfde9a9efa25909f Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* QFileSystemModel: Add role for fileinfoSune Vuorela13 days1-0/+1
| | | | | | | | | | Instead of having users traverse a ProxyModel hierarchy to get to a QFileSystemModel to use the fileInfo(QModelIndex) function, just let it be available with the roles. Change-Id: I285347d1d85b4c6253fcb893737aa629a56e27fd Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>