summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* doc: clangqdoc must always see GL typedefsMartin Smith2017-12-083-8/+28
| | | | | | | | | | | | | | | | | | | | | | | | | QT_NO_OPENGL must not be defined when running clangqdoc because there are opengl elements that must be documented. That means clang will see uses of GLxxx, which might not be included on some platforms. For example, clang must parse the declaration for class QOpenGLFramebufferObject, which uses GLuint, GLenum, and GLbitfield, because there is documentation to be published for that class in qopenglframebufferobject.cpp. This change uses Q_CLANG_QDOC to first undef the needed GLxxx types and then provide suitable typedefs for them. This technique is also used in qglshader.h. This works for macOS, but is it the right way to solve the problem? This change also removes some \overload commands, because they shouldn't be used on constructors. And some \fn commands that are made unnecessary by upgrading to clang. Change-Id: I4ac658e951b3f2011698005f0238d4dea85fc403 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Fix persistence of custom colors palette in QColorDialogSerge Lysenko2017-12-082-4/+13
| | | | | | | | | QColorDialog does not save custom colors after application relaunching, if those colors were changed with drag'n'drop Task-number: QTBUG-64500 Change-Id: I8ba6e1ef4e078f7b93463e7b20c9e21659d4777e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Update usage of QFontMetrics::width() to new APIEskil Abrahamsen Blomfeldt2017-12-0833-63/+63
| | | | | | | | | | | | | | QFontMetrics(F)::width() has been deprecated and is replaced by horizontalAdvance(). This updates all usage of it in tests and documentation. It is worth noting that many or most of the usages of QFontMetrics::width() probably intended to use boundingRect().width(), but since it currently works, I have not looked into that, just replaced the function name mechanically. Change-Id: Iec382e5bad0b50f37a6cfff841bfb46ed4d4555f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Android: port away from QRegion::rects()Marc Mutz2017-12-081-2/+3
| | | | | | | | | | | | | Use being()/end() instead. The region of whose rects() we iterate here is modified in the loop body, so take a copy of the rectangles. Since QVector is still missing a range constructor, use std::vector. This does not cause extra copies, since the QVector inside QRegion would detach anyway, when the QRegion is modified inside the loop. Change-Id: Ib973e825b55d9c9568936cb80180858163d87379 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Rename headers in platformsupport/windowsuiautomationAndre de la Rocha2017-12-0812-20/+20
| | | | | | | Private headers must end with _p.h. Change-Id: Ia63339322a38fedea93d93728ef5c32fba95d76f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* doc: Fix all qdoc errors in QtConcurrentMartin Smith2017-12-0815-139/+129
| | | | | | | | | | | | | These errors resulted from the improved parsing provided by clang, which required rethinking which elements of the QtConcurrent API should be visible to clangqdoc. The basic problem is that clang must see declarations for all types used by a type, or else it either gets lost and fails to parse a type correctly, or it simply refuses to include the type in its AST. Change-Id: Iaa699c287e67d1288fcb2d83a9dbbaf07521d0cc Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: Fix qdoc errors for \fn commands in QtConcurrentMartin Smith2017-12-087-26/+202
| | | | | | | | | | | | | This change updates the \fn commands in the QtConcurrent module, which makes extensive use of templates. Some of the update \fn commands are very long as a result. A few cases of the tag trick were used to fix qdoc errors for some complicated template function signatures that were marked \internal anyway. Change-Id: I8546b89030c51bb9dddf38fa10bc0248d901aa51 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Add template text to \fn commands in QScopedPointerMartin Smith2017-12-081-22/+26
| | | | | | | | | The \fn commands were not recognized by clang-qdoc because the template stuff was missing from the \fn commands. This update adds the correct template text and parameters. Change-Id: If45465880933174f1481a8be292474be191cfd45 Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: Add template text to \fn commands in qglobal.cppMartin Smith2017-12-082-85/+84
| | | | | | | | | | | | | | This update corrects many qdoc warnings in qglobal.cpp caused by incomplete \fn commands. It also corrects many undocumented parameter errors caused by clang's requirement that the formal parameter names be the same in both the declaration in the include file and the \fn command. Some formal parameter names were changed in the declarations in the header file. Change-Id: I4cd38f30461c585b97ec11923cdbc81a41fe00b8 Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: Change invokeMethod() comments to work with clangMartin Smith2017-12-083-39/+14
| | | | | | | | | | | | | | | | | | | | | There were four dummy declarations for struct QMetaObject that were needed by old qdoc to allow documentation of some very complicated function signatures that old qdoc could not parse. clangqdoc can now parse these signatures, but, unfortunately, old qdoc is still used to parse \fn commands in .cpp and .qdoc files, so the dummy declarations are still needed in struct QMetaObject. However, clangqdoc now sees that two of the four dummy declarations are actually duplicates of the other two, and then old qdoc complains when it can't find all four of the function nodes, when it parses the four \fn commands. This update removes the duplicate dummy declarations and the two redundant \fn comments. The remaining two \fn comments are updated accordingly. This change also moves a couple of qdoc comments so they are located with the function definitions that they are documenting. Change-Id: I85e2492ba0380b01c3700b3dc7db0913d6429701 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Deduplicate a common check for legacy codesEdward Welbourne2017-12-081-25/+26
| | | | | | | | | | | | All of QLocalePrivate::codeToLanguage()'s legacy codes were two-letter, so duplicated a "third letter is 0" check; pulling it out in front of them all will get any three-letter code more promptly to the final fall-back, while saving the two-letter codes repetition of the check. Change-Id: I8ee81a526adaa7b24c11c1de7a1750d87deb5fb3 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Fix documentation for function objects with map/reduceVille Voutilainen2017-12-084-3/+41
| | | | | | | | | | | | | | The documentation claims that function objects just work with map-reduce. They work for the map function, but not for the reduce function. Making them work for the reduce function was deemed too complex for questionable benefit, so this patch explains the situation and provides a work-around. Task-number: QTBUG-22710 Change-Id: I7f706468e36031bc261234310d331001b96e5137 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Nico Vertriest <nico.vertriest@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Improve QTabletEvent::rotation documentationShawn Rutledge2017-12-071-6/+9
| | | | | | | | | - There was a typo - It has not been limited to the 4D mouse for some time now - The Apple Pencil now supports rotation too Change-Id: I96e20a56491fbcb80e19dc39d0b48b543217aa24 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QRegion: deprecate rects()Marc Mutz2017-12-072-16/+38
| | | | | | | | | | | | | | | | | It was superseded by begin()/end() in Qt 5.8. The eventual removal of rects() will allow greater flexibility in the implementation's choice of data structure (std::vector, e.g., or QVarLengthArray). Remove all traces of rects() from the documentation. This means we need to copy information previously contained in the rects() docs to functions which previously just referred to rects(), in particular the begin()/end() familiy of functions. Change-Id: I90809809783252f7c552f24b4841f1e965580284 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add command line switch to help outputJan Murawski2017-12-071-0/+1
| | | | | | | | | Add the command line switch added in change 184c5470f534119b27c1a4caec29d699aba9c234 on qtdeclarative to the help output of the qmltestrunner application. Change-Id: I9f42719500e0039afa6a5b0f1f365611855229b3 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* QVector: drop QRegion friendship: it's not neededMarc Mutz2017-12-061-4/+0
| | | | | | | | I don't know when it ceased to be needed, but QRegion no longer does anything fancy with QVector. Change-Id: I1bdfefc84724c379fab76dada35575666144df12 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QAlphaPaintEngine: port away from QRegion::rects()Marc Mutz2017-12-061-6/+3
| | | | | | | | | | | | | | | | | Use begin()/end() instead. The old code extracted the rects from the region, then checked for a 'complex' region (by comparing the number of rectangles against 10), and replacing the region with the bounding rect if it was too complex. It then went on to adjust the rectangle list it had gotten from the original region to match the new. Simply delay getting the rectangles until after we have modified the region. Since there are many member function calls in-between, take a copy of the region to iterate over later, rather than relying on the region to be left untouched by all the code in-between. Change-Id: I49ddf4d545520ab435ab6b89eec3d24cf371823e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* xcb: port away from last QRegion::rects()Marc Mutz2017-12-061-5/+4
| | | | | | | | | | | Use begin()/end() instead. In QXcbShmImage::flushPixmap(), instead of gettings different rects(), depending on a bool parameter, just call yourself again with the modified QRegion, which we can then just iterate over. Change-Id: I6d4f7c6e4e5d2a24520716847ca9331bf39337c8 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* xcb: share code for QRegion -> xcb_rectangle_t[] conversionMarc Mutz2017-12-063-14/+13
| | | | | | | | | | ... between QXcbWindow and QxcbShmImage. Replaces one QRegion::rects() call (to be deprecated), fixes potential overflows that QXcbShmImage did not handle, but QXcbWindow did, and saves ~1KiB of text size. Change-Id: I55d37021164feefe0cb3e60bd6d22b1976a6467b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QtGui: port away from QRegion::rects()Marc Mutz2017-12-063-30/+30
| | | | | | | | | | | | Use begin()/end()/rectCount() instead, which don't require QRegionPrivate ::vectorize() calls. In QPaintEngineEx::clip(), the rectCount() == 1 case called clip(QRect), but forgot to return, causing another clip(QVectorPath) call with the same arguments. Fixed. Change-Id: Ife33112fc8006ed4bdff6409e2b8465ce7acb9d1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* xcb: use a more efficient unique_ptr instantiationMarc Mutz2017-12-061-6/+8
| | | | | | | | | | Wrap std::free() in a function object, to avoid having to carry around state (the function pointer) inside unique_ptr objects. This shrinks unique_ptrs back to sizeof(void*). Change-Id: I32a711192c5485dc04e3b36a1ddabf02d1e9d4f9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* doc: Add missing template parameters to \fn commandsMartin Smith2017-12-062-151/+151
| | | | | | | | | This update corrects many qdoc warnings in qsharedpointer.cpp and qshareddata.cpp caused by incomplete \fn commands. Template stuff was added to the \fn commands. Change-Id: Ic10bcf04477d5f3d5380aeb1e58050a88f03005a Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Ensure clangqdoc sees declarationsMartin Smith2017-12-066-10/+17
| | | | | | | | | This update corrects several uses of #ifdef macros that needed updating because qdoc now uses clang to parse header files. Change-Id: I285efa4629a1a5d5bcbfaf701eeafbd0e9f1e43e Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Remove QPageSetupWidget::selectPrinterAlbert Astals Cid2017-12-063-14/+4
| | | | | | | t's only ever called after setPrinter so merge the code Change-Id: I4b5d593edbe62b64354e81c19112fa87b0555fdc Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Remove QPrintPropertiesDialog::selectPrinterAlbert Astals Cid2017-12-061-15/+15
| | | | | | | It is only ever called after the constructor, so merge the code Change-Id: I5c75a2cd367af401b41920f51754a64dc6c6eb40 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Remove QCupsJobWidget::setPrinterAlbert Astals Cid2017-12-063-11/+5
| | | | | | | It is only ever called after the constructor so merge the code Change-Id: I381165ad90c85342e5db3c16327d729388b71fb2 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Remove QPrintPropertiesDialog::applyPrinterPropertiesAlbert Astals Cid2017-12-061-15/+6
| | | | | | | It's only ever called after the constructor so merge its code to the constructor Change-Id: Icca88764f725b9aeaa08ee7387da8885be247fba Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Remove QUnixPrintWidgetPrivate::applyPrinterPropertiesAlbert Astals Cid2017-12-061-45/+35
| | | | | | | | | And move it's code to the only place it is called, the QUnixPrintWidget constructor, that means we can remove the if that checks if propertiesDialog is not null since at that stage we know it is null Change-Id: I81cdaa0505fa6fe64a45c7d1f5c3e277400cbbf7 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Remove QPrintDialogPrivate::applyPrinterProperties, no one calls itAlbert Astals Cid2017-12-061-8/+0
| | | | | Change-Id: Ic140f62e5cb63c6a4b7f4fa10ca243d8bb055c4e Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* xcb: remove redundant QT_XCB_DEBUG_XINPUT* envvarsGatis Paeglis2017-12-061-6/+0
| | | | | | | | | | | | | In Qt 5.4 these envvars were replaced with categorized logging 59ba84d31cf17d86e615e2958fece6f6e0bbefe2. This is not a public API, the log output is useful mostly for developers and it can still be used via QT_LOGGING_RULES, so there is no good reason to keep the old envvars around. By using QT_LOGGING_RULES, we can access even more xinput2 logs than is available via QT_XCB_DEBUG_XINPUT*. Change-Id: I2b12b8696043bc8bf8310f49f0cdc2ba1b8708ba Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* doc: Add class qualifiers to parameter typesMartin Smith2017-12-068-24/+46
| | | | | | | | This change supplies several missing class qualifiers for parameter types and function return types. Change-Id: I569026e4da0948902fcc13557003d3748b85dd82 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Document remaining anonymous enumsMartin Smith2017-12-065-0/+35
| | | | | | | | This change adds qdoc comments for the remaining nameless enum types. Change-Id: I4da8b67883c8020323437cf74c938d3655d8c384 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Add missing template text to \fn commandsMartin Smith2017-12-062-92/+92
| | | | | | | | | | | | | | | | | | | | | | This update corrects about 200 qdoc warnings caused by incomplete \fn commands for member functions of template classes. It can be used as an example of how to fix \fn commands that suddenly cause qdoc warnings now that qdoc uses clang to parse the \fn commands. For example, with the old qdoc, we had this \fn command, which the old qdoc handled correctly: \fn QAtomicInteger::operator T() const For the new clang-based qdoc, this \fn command must be written this way: \fn template <typename T> QAtomicInteger<T>::operator T() const However, the documentation generated by the clang-based qdoc looks the same as it did in the old qdoc. Change-Id: I7803b3b7ec7c6b8b3cc1be789bc36921438f527e Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* styles: port away from QRegion::rects()Marc Mutz2017-12-061-3/+1
| | | | | | | | | | | Use begin()/end() instead. Drop the special handling of rectCount() == 1, since with begin()/end(), we no longer take the hit of creating a QVector just to be able to return it from rects(). Change-Id: I19ebc38267951c80bc71aa9d2b5df7403d710064 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* platform plugins: port away from QRegion::rects()Marc Mutz2017-12-066-20/+17
| | | | | | | Use begin()/end()/rectCount() instead. Change-Id: I5c642c4a2c64da65d3f37159396c86073818ca95 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QtTestLib: port away from QRegion::rects()Marc Mutz2017-12-061-3/+3
| | | | | | | | Use begin()/rectCount() instead. Change-Id: I08cef424bf24ecf3c058e9b87411f2a5775ffb33 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* doc: Fix qdoc errors in qfsfilengine.cppMartin Smith2017-12-051-4/+8
| | | | | | | | | | A few parameter types in \fn commands were not qualified with their class name. They had to be qualified because they were in a base class of the class being documented. Change-Id: Ic0b43be689d17a0a539ee977c0db6e20eb05d5fe Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* minimal QPA: Make font DB creation more flexibleGabriel de Dietrich2017-12-043-7/+30
| | | | | | | | | | | | Prioritize CoreText over Fontconfig since the former is the native one on macOS, and any other native font DB on its respective platform. We introduce a new 'fontconfig' option to allow using Fontconfig instead. This works similarly to 'freetype' overriding the default font engine on Windows. A propos of which, 'freetype' now does the same on macOS. Change-Id: Ic8168820d1d01fddc2f26e046abb65b8ab765f89 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* doc: Fix all qdoc errors in qnumeric_p.hMartin Smith2017-12-041-1/+2
| | | | | | | | | | These errors resulted from clang parsing function declarations for functions that were not meant to be documented. Here they are hidden from clang with #ifndef Q_CLANG_QDOC Change-Id: I256b49830b63188bf0a685cb393d469f2f2ca315 Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: Add missing template textMartin Smith2017-12-041-1/+3
| | | | | | | | | | | | There are two fake classes in qendian.h that exist only documenting a lot of operator functions, but now that clang is being used to parse all C++ code, when a class is a template class, clangqdoc must see its template stuff to recognize template type T, for example. Hence, this update adds template<typename T> to some fake class declarations used only for documentation purposes. ie, inside #ifdef Q_CLANG_QDOC. Change-Id: I1988b77cd7f3bb97067e7107dd00de34770e9fed Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Fix qdoc errors for \fn commands in endian functionsMartin Smith2017-12-041-42/+42
| | | | | | | | | | This change updates the \fn commands in the endian functions, which are template-based. clangqdoc now parses these \fn commands and expects to see all the template stuff in the signatures. Change-Id: I94c1aba8d710c97b8d41184d64b5341c88ece297 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Add template text to \fn commands for QGlobalStaticMartin Smith2017-12-041-6/+6
| | | | | | | | | The \fn commands were not recognized by clang-qdoc because the template stuff was missing from the \fn commands. This update adds the correct template text and parameters. Change-Id: I920d9cc4bef710f276267a34b6b9d49f7412adb0 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Support ForwardKeyEvent signal in ibus input contextPeng Wu2017-12-042-0/+38
| | | | | | | | | | | For ibus-hangul, it needs ForwardKeyEvent signal to fix the commit issue. [ChangeLog][plugins][ibus] Support ForwardKeyEvent signal Change-Id: If41e75bed9ec4e3126db05c8ece4a51d2bc3c3fd Reviewed-by: Takao Fujiwara <takao.fujiwara1@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove two obsolete qdoc commentsMartin Smith2017-12-031-37/+0
| | | | | | | | | | | | | | | The macros Q_GLOBAL_STATIC(Type, VariableName) and Q_GLOBAL_STATIC_WITH_ARGS(Type, VariableName, Arguments) were documented in qglobal.cpp, but both qdoc comments were marked \internal. More recent documentation for the macros also exists in qglobalstatic.qdoc, and the qdoc comments there are not marked \internal. clang-qdoc reports errors indicating that both macros havew been documented in two places. This update removes the older comments that are marked \internal. Change-Id: I1c319b831d705d86eb4142b9963dbf56edc72772 Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: Fix qdoc errors for \fn commands in QGenericMatrixMartin Smith2017-12-031-29/+29
| | | | | | | | | This change updates the \fn commands in QGenericMatrix clangqdoc now parses these \fn commands and expects to see all the template stuff in the signatures. Change-Id: Icf815606f98271aae1959adc633e918e7f241aa0 Reviewed-by: Martin Smith <martin.smith@qt.io>
* QProcess/Unix: do not toggle a state of the write notifier twiceAlex Trotsenko2017-12-021-5/+4
| | | | | | | | | | | | | | | _q_canWrite() unconditionally disabled the write notifier before the writing, and might have enabled it again afterwards. This caused unnecessary processing in the event dispatcher and could result in extra system calls. Actually setting the state at the moment when the write buffer size is determined is enough. Change-Id: I81f9ec27d95a5a9bdb83cc6a842b6ae95f002b96 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* doc: clangqdoc needs to see all GLxxx typedefsMartin Smith2017-12-021-0/+6
| | | | | | | | Clang needs to see declarations for GLclampf, GLSizei, and GLboolean. Change-Id: Id1c1310e4877b32bb8fc2e6d4f743999842b3f06 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Add default openGL typedefs for clangqdocMartin Smith2017-12-022-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | When Q_CLANG_QDOC is defined, ensure that the following openGL types are defined: typedef int GLint; typedef int GLsizei; typedef unsigned int GLuint; typedef unsigned int GLenum; typedef unsigned int GLbitfield; typedef float GLfloat; typedef float GLclampf; typedef bool GLboolean; typedef void GLvoid; typedef char GLchar; Running clangqdoc with these on macOS fixed over 500 qdoc errors! There were also some functions that declared the parameter list as void. It was also shown as void in the \fn command for each function in the .cpp file, which is wrong. When the function is declared in the header as int func(void), it should just be \fn int classname::func() in the .cpp file. Change-Id: I6489d499f0830e5ba97c085ed5dadfad5affecb7 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Fix three "Cannot tie" errorsMartin Smith2017-12-024-4/+4
| | | | | | | | | | Two of the three functions were for functions that should not be documented. The third was a function protected by #ifndef Q_OS_DARWIN, which required a test of Q_CLANG_QDOC in the header and cpp files. Change-Id: Id2ab3e4f2ea896dc628a622de2e80a19c18eb9fe Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Fix some ref qualifier documentation errorsMartin Smith2017-12-021-3/+8
| | | | | | | | | | Some member functions of QImage were upgraded to use ref qualifiers, but the documentation wasn't updated correctly to account for this. This change update the documentation for those member functions to show the ref qualifiers in the documentation. Change-Id: I0ff4011e9d0251062d5616d69e9dda6bdbc1c136 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>