summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-1511-80/+88
|\ | | | | | | Change-Id: I8b5a10d897a926078895ae41f48cdbd2474902b8
| * Manual tablet test: Draw crosshairs when tablet pen is closeFriedemann Kleint2018-03-141-16/+44
| | | | | | | | | | | | | | | | Crosshairs provide better visual feedback for coordinate conversions. Change-Id: I20f67733d7a5e6b1455507a39a8b9535202a92c4 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Revert "Set sharedPainter correctly for QGraphicsEffect"Laszlo Agocs2018-03-141-21/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 7257862fb2edfab0219d6cd45c83677049404f7d. It has been reported that this patch causes widgets with certain effects become invisible. Task-number: QTBUG-60231 Task-number: QTBUG-66803 Task-number: QTBUG-66387 Change-Id: I9c3c4cf2f17ac639d1aee5489b665aa1e165af16 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Item views: Fix 5.11 API review findingsFriedemann Kleint2018-03-141-3/+3
| | | | | | | | | | | | | | | | | | Rename getter QHeaderView::firstSectionMovable() to QHeaderView::isFirstSectionMovable(), turn into a property and fix \since. Change-Id: Ica2ca43d22f3fd78ff63178ba75014807fc9b823 Reviewed-by: David Faure <david.faure@kdab.com>
| * Expand Config to Configuration in method namesEdward Welbourne2018-03-131-2/+2
| | | | | | | | | | | | | | | | Commit f55c73ede28d4455f555a28e401407326ac9b954 added various backendConfig methods; API review for 5.11 pointed out that Config should not be abbreviated. Change-Id: I3b294b44a030b2a6e4cdd034fa27583c228dfe42 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| * Don't skip tests in tst_QTouchEvent on WaylandJohan Klokkhammer Helsing2018-03-131-21/+0
| | | | | | | | | | | | | | | | They seem to be running just fine Task-number: QTBUG-66849 Change-Id: Ia48d47c0fff173eb1d6eba38bdba752a91bd2b56 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Make sure QDir::absoluteFilePath("/dir") includes a drive on MSEdward Welbourne2018-03-121-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDir::isAbsolutePath(name) thinks any path starting with a slash is absolute; however, to return a valid absolute path, we need to put a drive prefix onto such a name. So use QFileSystemEntry::isAbsolute() for that check (it believes in the need for a drive, or UNC prefix) and handle the absolute-but-for-drive case when it arises. Add a regression test and make related changes to existing tests. Task-number: QTBUG-50839 Change-Id: Id5d2b2586bb1423fa2d9375a298a4bb5241cffe0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * testlib: Silence all Qt logging in selftestsTor Arne Vestbø2018-03-122-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise random debug messages from Qt might mess up the expected vs actual results. The setting of QT_LOGGING_RULES in initTestcase has been removed, as the selftest overrides that for each invocation of a subtests, via the processEnvironment() function. Task-number: QTQAINFRA-1631 Change-Id: I855d31274f8261f8b125df23409353f7101be0e4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Skip failing tests in tst_QPixmap on WaylandJohan Klokkhammer Helsing2018-03-121-0/+14
| | | | | | | | | | | | Task-number: QTBUG-66846 Change-Id: I61bd3e59e51fd1d988a30b6454a6a90650a3069b Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
| * tst_QInputMethod check WindowActivation capability instead of platformJohan Klokkhammer Helsing2018-03-121-4/+4
| | | | | | | | | | | | Task-number: QTBUG-66849 Change-Id: I72a8751f1fc0df7ff5a371c854cb975b3cee8fd2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * tst_QGuiApplication check WindowActivate capability instead of platformJohan Klokkhammer Helsing2018-03-121-4/+7
| | | | | | | | | | | | Task-number: QTBUG-66849 Change-Id: I31dfe6d38435b043eb21d2de02d44551649444c9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | testlib: Add Test Anything Protocol (TAP) reporterTor Arne Vestbø2018-03-1438-2/+3971
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Test Anything Protocol (TAP), was originally Perl's simple text-based interface between testing modules and test harnesses, but has since been adopted by a large number of producers and consumers in many different languages, which allows colorizing and summarizing test results. The format is very simple: TAP version 13 ok 1 - test description not ok 2 - test description --- message: 'Failure message' severity: fail expected: 123 actual: 456 ... ok 3 - test description # SKIP 1..3 The specification [1] is very brief, so the implementation has been based on how typical consumers behave, especially when it comes to the undefined diagnostics block. [1] http://testanything.org/tap-version-13-specification.html Change-Id: I616e802ea380165c678510e940ddc6607d39c92d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Make testlib selftests pass for shadow-buildsTor Arne Vestbø2018-03-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Using QFileInfo to check if the file exists based on the filename alone ignores the fact that all the expected files are embedded as QRC resources. The expectedResult() function already does a similar check, so we can use that directly instead of checking twice if the file exists. Task-number: QTBUG-66981 Change-Id: I0beb8d3503ed49682ae7d7e2a5172922fab5420d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | QSFPM: Faster row removesTim Angus2018-03-131-39/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the source model of a QSortFilterProxyModel has rows removed, a mapping is performed in order to figure out which corresponding rows in the sorted and filtered view of the model are affected. In doing so it constructs a vector of removal intervals which are subsequently used to emit rowsRemoved signals. In the case where many rows are removed (e.g. all of them), many removal intervals are identified that are often adjacent and could be simplified, which is what this patch does. i.e. instead of emitting 3 rowsRemoved for 0-3, 4-6, 7-12, now a single rowsRemoved is emitted for 0-12. Change-Id: Ia503091cc4928378c88257cd8b431582e9ff454e Reviewed-by: David Faure <david.faure@kdab.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-121-3/+3
|\| | | | | | | Change-Id: Ic193ccc3e9e3a86e15a002d599c13f35940e1eab
| * Fix 5.11 API review findings in QtNetworkFriedemann Kleint2018-03-101-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Rename QNetworkInterface::maxTransmissionUnit() to QNetworkInterface::maximumTransmissionUnit() Change-Id: I24a80b1317363e8d5da5f251ec908da9a51a6b0a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-105-3/+57
|\| | | | | | | Change-Id: Ia2441257c23169f8ca6a3933b2371255e1ba64e6
| * add missing tests of rvalue overloads for QVarLengthArray and QVectorv5.11.0-beta2Eric Lemanissier2018-03-102-2/+25
| | | | | | | | | | | | | | they were missing in dd58ddd5d97f0663d5fafb7e81bff4fc7db13ba7 Change-Id: I52a2f855ead7716f8fe887524b27d4bd258f43d3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Allow use of template class instances inheriting from a Q_GADGET in QmlNils Jeisecke2018-03-101-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Q_GADGET macro cannot be used in templates. It can however be useful to derive a template class from a Q_GADGET enabled base class to benefit from type safety features in C++ (e.g. the class could represent an id or handle for some C++ type). For proper wrapping of a QVariant with a gadget value in a QJSValue, the QMetaType::IsGadget flag must be set for the registered template instance type - which does not happen prior to the fix because IsGadgetHelper requires qt_check_for_QGADGET_macro to be defined in the registered class but not in an ancestor class - in other words: The class must declare Q_GADGET. To overcome this, IsGadgetHelper/IsPointerToGadgetHelper can now differentiate between a Q_GADGET flagged class (allowing automatic registration) and a derived class, e.g. a template class (forcing Q_DECLARE_METATYPE to be used explicitly). [ChangeLog][QtCore][QMetaObject] It is now possible to use template class instances inheriting from a Q_GADGET in Qml Task-number: QTBUG-66744 Change-Id: I7632ad45cff79fa422b3f852ca0b963f35fab155 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * set attribute specifier before namespace nameAlexander Shevchenko2018-03-091-1/+1
| | | | | | | | | | | | | | | | That is correct C++. GCC (and apparently Clang) accept it after the name for compatibility with the old __attribute__ syntax. Change-Id: Ie7f3adaaed83198ca1c61bc0efdf51634e457b07 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Fix QLabel crash if buddy's lifetime is too shortSergio Martins2018-03-081-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If buddy is deleted then QLabel will still try to deliver the shortcut event to it, in QLabel::event(), and cras. Besides connecting to destroyed() which alone fixes the crash, also hardened it and guarded against dereferencing null buddy, in the unlikely event of someone adding features to QLabel. The second part is suitable for backporting to the LTS branches. Task-Id: QTBUG-66841 Change-Id: Ib6a36a9f99cee31afe1f88eb77f5b6cafb8b1086 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | testlib selftest: Resolve expected files at qmake timeTor Arne Vestbø2018-03-092-221/+3
| | | | | | | | | | | | | | Instead of keeping a static list in a qrc file. Change-Id: I7783db5cad5929cc3f449889e1cbcbb87f7f2637 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Adjust tst_QTimeZone's Q_OS_WIN #if-ery now that ICU is the defaultEdward Welbourne2018-03-092-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | Various tests were adapted to Q_OS_WIN to take account of the deficiencies in its TZ APIs; which are now bypassed when ICU is configured, as we use it instead. Replace some #if-ery on a local define with QT_CONFIG(icu) and QMAKE_USE_PRIVATE += icu here, to match in corelib/tools/tools.pri Task-number: QTBUG-66367 Change-Id: Ia93abdeb7d12046310f0bb4a78c2669f8eecbbc2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-0810-122/+164
|\| | | | | | | Change-Id: Idf471ca5c6cf211813466b539ce45bdc1ae9b97c
| * Make a benchmark out of tst_QObjectPerformance::emitToManyReceiversKari Oikarinen2018-03-075-120/+24
| | | | | | | | | | | | | | | | | | | | | | The test has been flaky on top of QEMU. The test is clearly a sort of manually rolled benchmark, not a regular autotest. Remove the test and replace it with a benchmark in QObjectBenchmark. Task-number: QTBUG-66823 Task-number: QTBUG-66216 Change-Id: I7a48293023f32141eed6fea50fbb63af18933a8f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * QStandardItem: add more sanity checks on insertRow(s)/Column(s)Christian Ehrlicher2018-03-071-1/+12
| | | | | | | | | | | | | | | | | | | | When QStandardItem::insertRows/Columns is called with an empty list or an insert count of 0, do not assert but return false. Task-number: QTBUG-66491 Change-Id: I328598e08584fb9b0a35075458bfeb31c57ebfee Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| * QTabWidget: Do not add tabbar size during sizeHint() when it is hiddenChristian Ehrlicher2018-03-071-0/+29
| | | | | | | | | | | | | | | | | | | | | | Since Qt 5.4 the QTabBar can be automatically hidden when it has less then 2 tabs. Therefore the sizeHint should not consider the tabbars size when the tabbar is hidden. Task-number: QTBUG-64715 Change-Id: I2f248f88d9070de5354f7344c7628a78442ab499 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| * SQL/Postgres: Fix support for nan, inf and -infChristian Ehrlicher2018-03-071-0/+42
| | | | | | | | | | | | | | | | | | | | | | Postgresql needs a special value for nan and +/- inf. This was considered during insert but not during select. Also remove some pre-c++11 inf/nan - handling and replace it with Qt equivalents. Change-Id: I044ca58e9cf673f4b100b05a0d8e25c8a9c29ec5 Reviewed-by: Robert Szefner <robertsz27@interia.pl> Reviewed-by: Andy Shaw <andy.shaw@qt.io>
| * Blacklist tst_QWindow::modalWithChildWindow on openSUSEKari Oikarinen2018-03-071-0/+2
| | | | | | | | | | | | | | Task-number: QTBUG-66851 Task-number: QTBUG-66216 Change-Id: Iea3d7823ccef718b52d097298250efddc981f3bb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * QObjectBenchmark: Don't try to set read-only propertiesKari Oikarinen2018-03-071-1/+2
| | | | | | | | | | | | | | Avoid lots of warnings about not being able to set "modal". Change-Id: I396718f14a55203f9989c03e20efc647c64795a9 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * QHeaderView: fix inconsistent saved state, ignored during restoreDavid Faure2018-03-071-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The code that updates a section size must also update length, otherwise saveState can end up saving inconsistent state, and restoreState() goes to an early-return, not doing anything. The actual bug was fixed meanwhile because _q_sectionsChanged is called again, which recalculates length. I still see this only as a safety measure, every other code path that changes section sizes updates length right away. Change-Id: I6cc16261692d93b3640afafef600a5bdff8dca0c Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* | Remove tests from BLACKLIST for macOSMorten Johan Sørvig2018-03-081-29/+0
| | | | | | | | | | | | | | | | | | | | Whitelist tests that pass locally and that have been blacklisted since the BLACKLIST was introduced in 2015 (in commit a8dda3b8). Change-Id: I777b490313ebaa6c8c8daee168487d350179a5e6 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* | tst_qstorageinfo: Don't add extra newlines when printing volumesTor Arne Vestbø2018-03-071-1/+1
| | | | | | | | | | | | | | The printVolumes function already adds line endings. Change-Id: Id2553f881ccc0ab3c8b8fc77d3096dd5d968abda Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | tst_qsettings: Check case sensitivity of actual settings fileTor Arne Vestbø2018-03-071-1/+1
| | | | | | | | | | | | | | | | Instead of the current working directory, which doesn't necessarily match the location of the settings file. Change-Id: Idffe2e87190cc9b6027fbba3b84e9dbf72ccf2f6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge remote-tracking branch 'origin/5.11' into dev" into ↵Qt Forward Merge Bot2018-03-076-14/+30
|\ \ | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-076-14/+30
| |\| | | | | | | | | | Change-Id: I110feec4750bd304975bab4f3f33d3a61a4e08bd
| | * Check for WindowActivation capability instead of platformJohan Klokkhammer Helsing2018-03-061-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before running tests that depend on QWindow::requestActivate Gets rid of several Wayland platform checks in tst_QWindow. Change-Id: I7a5e029044a968dfcf87ecbb5105c01d52852d35 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
| | * Make platform checks for Wayland more readableJohan Klokkhammer Helsing2018-03-061-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | And make it easier to fix if platformName == wayland-egl etc. Change-Id: Ia2d62ba003796e08f3e8a5bbfd0c3fd9d185e4e0 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Skip failing tests in tst_QWindow on WaylandJohan Klokkhammer Helsing2018-03-061-0/+6
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-66824 Change-Id: I33b826c2a373b264cc9b66444c52070eac1cdd5c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * uic: Add the include for QIcon conditionallyJarek Kobus2018-03-065-0/+5
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-66753 Change-Id: I31bd821396b59c8e83e19e02634cf1440a271215 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | implement non-member operator+ for iteratorsEric Lemanissier2018-03-062-0/+8
|/ / | | | | | | | | | | | | | | | | all of these iterator classes already have a member operator+, which allows iter+int. This commits addes non-member operator+, which allows int+iter, and forwards to the member QList and QArrayData iterators now satisfy RandomAccessIterator concept Change-Id: I25c1dd8cea299e735d5a5e288dbe23dc1d7a1933 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-054-4/+6
|\| | | | | | | Change-Id: Ifce6ddeb4dab8c672732ec6aa6c19a6c4bce447e
| * Make tst_QWindow::generatedMouseMove pass on WaylandJohan Klokkhammer Helsing2018-03-051-1/+1
| | | | | | | | | | | | | | | | By using qWaitForWindowExposed instead of qWaitForWindowActivated. Task-number: QTBUG-66824 Change-Id: Idf604157070731d9c92ccf64d8349c8571960b7c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Don't skip tst_QWindow::windowModality_QTBUG27039 on WaylandJohan Klokkhammer Helsing2018-03-051-3/+0
| | | | | | | | | | | | | | | | The test actually passes, so there's no need to skip it. Task-number: QTBUG-66824 Change-Id: Id091776ff7ca7637fdcf0e0ced833982b5788d92 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Blacklist tst_QWindow::modalWindowEnterEventOnHide_QTBUG35109 on windows ciLiang Qi2018-03-051-0/+1
| | | | | | | | | | | | | | Task-number: QTBUG-66756 Change-Id: I5a00625b73085a9ac2471b03bcc21db4b9a98962 Reviewed-by: Kari Oikarinen <kari.oikarinen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Blacklist tst_QGraphicsView::itemsInRect_cosmeticAdjust on UbuntuKari Oikarinen2018-03-051-0/+3
| | | | | | | | | | | | | | | | | | Has been flaky in CI. Task-number: QTBUG-66815 Task-number: QTBUG-66216 Change-Id: I2c3eb42507eae618486aa402474b4b3f85ff310e Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
| * moc: Don't error our when parsing "using namespace __identifier(...)"Andy Shaw2018-03-051-0/+1
| | | | | | | | | | | | | | | | | | | | This follows on from a2322519929bd36a90422dccc0310b8230729197 which covered a similar instance of this. As with that change, we should not abort the compilation, just ignore it. Task-number: QTBUG-63772 Change-Id: Ide958080a90f43ed19edd8a320e7d45de1c96821 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-03-0210-139/+96
|\| | | | | | | Change-Id: I967eca8f34584fca3a1e5696978e70f620582a2a
| * QLocale: Update the system private on QLocale default constructor if neededAlbert Astals Cid2018-03-021-0/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When first starting an Android app we have invocation order issue, to load the platform plugin we create the default QLocale (needed by the resource locator code to see if :/qt/etc/qt.conf exists) so when the android platform plugin loads and creates its own QSystemLocale, the QLocale defaultLocalePrivate is already created and pointing to globalLocaleData which means that systemData won't be called and thus the code that triggers the call to QLocalePrivate::updateSystemPrivate won't be called when calling QLocale(). I thought of two ways of fixing this, one was calling QLocalePrivate::updateSystemPrivatea() from the QAndroidSystemLocale constructor, but giving the responsibility to not break things to the plugin seems a little fragile, so making the check on QLocale() seems better. Without this patch an Android app doing QApplication app(argc, argv); qDebug() << QLocale().name(); qDebug() << QLocale().name(); qDebug() << QLocale::system().name(); qDebug() << QLocale().name(); would print "" "" "ca_ES" "ca_ES" now it correctly prints "ca_ES" the four times. Task-number: QTBUG-41385 Change-Id: I2cf419f59aa008fa3aca11295fe7d42c40bcc32e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| * Blacklist tst_QWindow::testInputEvents on WindowsKari Oikarinen2018-03-021-0/+2
| | | | | | | | | | | | | | | | | | | | Multiple recent failures on Windows 10. Task-number: QTBUG-66798 Task-number: QTBUG-66216 Change-Id: I9d23d0381dbe62eb5469863f14e1a05548ce7dfa Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>