summaryrefslogtreecommitdiffstats
path: root/src/webenginequick
Commit message (Collapse)AuthorAgeFilesLines
* Keep page's zoom level on loading new urlsKirill Burtsev2022-05-152-6/+13
| | | | | | | | | | | | Ammends d236c5a8a3. Zoom level was set as a temporal one, which is invalidated each time when a renderer process or widget are changed (on new navigation, for example), so it needs to be reapplied. Pick-to: 6.3 6.2 5.15 Fixes: QTBUG-101030 Change-Id: Iecff9686fbe2b79e99b46f67cab92f66127be085 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Add NavigateOnDrop settingsAllan Sandfeld Jensen2022-05-132-2/+28
| | | | | | | | | | Some applications want this to avoid users navigating away from their app content. [ChangeLog][Settings] NavigateOnDropEnabled added, enabled by default. Change-Id: I2cc370f60ef42c708042cbc2503207f8254cf932 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Fix touch input for html's popup in quick implKirill Burtsev2022-05-121-6/+8
| | | | | | | | | | | | | | Ammends 292f573f4e. Now that touch events are forwarded to popup delegate also instead of synthesized mouse events, the bug with touch event being ignored became present. Also extend testing of touch events for html popups. Task-number: QTBUG-79254 Fixes: QTBUG-103217 Pick-to: 6.2 6.3 Change-Id: I097a6617493355c7603fef8eb41025e299a6e809 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Cleanup custom touch handles implementationMichal Klocek2022-05-108-150/+62
| | | | | | | | Do not introduce extra class nor dummy QML element. Fix docs. Change-Id: I9848f6865cd585779d89fe387ad97c27e7450eb9 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Add QtQuick dependency to QtWebEngineMarco Bubke2022-05-091-0/+2
| | | | | | | | | | QQuickItem is referenced as prototype but there is no dependency declared to QtQuick where it is defined. Pick-to: 6.3 6.2 Change-Id: Ib024123b032fdadf3fe24a5a420b2c122d6594b7 Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Use qualified imports to avoid prototype loopsMarco Bubke2022-05-093-7/+6
| | | | | | | | | | In the designer model we don't use import order to simplify the meta type system. There are only very few places where we get a prototype chain loop. In most cases qualified imports are used. Pick-to: 6.3 6.2 Change-Id: If4baac38cabb7773f58c0d326806fd6fd5612a99 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Quick: Add support for replacing touch handles with delegatesBalazs Egedi2022-05-0410-23/+304
| | | | | | Task-number: QTBUG-85043 Change-Id: I1c87aff352e07eb309d5ba8747b9e50a191d478e Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Clean up documentationAllan Sandfeld Jensen2022-05-031-1/+1
| | | | | | | | Make naming consistent, and fix a few links Pick-to: 6.3 Change-Id: I5b42ba92f8747d6bd86b1e84f74f6b15c80f444c Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Introduce http status code domain for loading infoKirill Burtsev2022-04-181-0/+2
| | | | | | | | | | | | | | | | Fix inconsistency in reporting load info error category for http status codes, which across versions was reported either as internal error category or just no error domain. Add new separate domain for http status codes. [ChangeLog][QWebEngineLoadingInfo] Added HttpStatusCodeDomain for http status code range of errors Fixes: QTBUG-94963 Change-Id: I9fd496248c6fa33c424d758e9a0be99758aaf061 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Benjamin Terrier <b.terrier@gmail.com> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Fix a few code checker warningsAllan Sandfeld Jensen2022-03-301-1/+1
| | | | | Change-Id: I0eb2cb362759e9a02a61993574906fc1e4b8ffeb Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Adaptations for Chrome 98Allan Sandfeld Jensen2022-03-292-0/+6
| | | | | Change-Id: I607604f85a111a69da77ca949dddf3399b9721b3 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Fix transitive includesShawn Rutledge2022-03-211-1/+2
| | | | | Change-Id: I6c7dfe29305548c3d68f8d26f46c9bea277d101d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add userScript docs for qml landMichal Klocek2022-03-105-3/+238
| | | | | | | | | | | | | | WebEngineScript docs were missing after moving classes to core. Moreover we changed WebEngineScript to be a qml value type and we introduced WebEngineScriptCollection to mirror C++ class. Add the documentation for WebEngineScript, WebEngineScriptCollection and WebEngine.script() method. Task-number: QTBUG-100404 Pick-to: 6.2 6.3 Change-Id: Ifed1bd1fa398a8634df0dc1bd44111e1a09ded04 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Add QML test for basic profiles and fix the docs accordinglyKirill Burtsev2022-02-171-10/+11
| | | | | | | | | Amends d0ff107c00. Ensure default values for profile settings match the docs. Also fix doc's issues after off-the-record toggle to off by default. Pick-to: 6.2 6.3 Change-Id: I558a77dbec82d7f2b335b1a2ceca74ab66a1a6e9 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Adapt to moving of type registrations into the Qt namespaceUlf Hermann2022-02-101-2/+2
| | | | | Change-Id: I46259b81a75d050e6fb3554ee2b13e76bb90cd3b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix crash on WebEngine(View|Profile).userScripts.collection getKirill Burtsev2022-02-1010-21/+179
| | | | | | | | | | | | | | | To create a javascript list on 'collection' method qml engine is needed for a qml scope, but it's only available for objects, which are created by the QML Engine itself. The only object in hierarchy of classes is an actual WebEngineView, so get it from there on collection init. Also implement delayed initialization of scripts collection for the usage of default profile through WebEngine singleton, and for the reason that it's not really needed until really asked by user code. Pick-to: 6.2 6.3 Fixes: QTBUG-96597 Change-Id: I61e76652a5d0fd5609070fd541816503908f2dc8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix accumulation of compositor-observer bindings for skia-on-glKirill Burtsev2022-02-041-1/+0
| | | | | | | | | | | | | One of Compositor's derived classes, DisplaySkiaOutputDevice, was missing call to 'unbind' from its observer, leading to not releasing binding from global cache on destroy. Since unbind is done on destroy, remove all explicit calls to unbind from derived classes, and just do them in their base implementations. Ammends b117909825. Pick-to: 6.2 6.3 Change-Id: I75c909eaa22ca1946ad67aa5093a8ee268c3562b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Guard against favicon provider being removed before ViewKirill Burtsev2022-01-281-1/+1
| | | | | | | | | | | Avoid using dangling pointer on view's destruction in case favicon provider was removed first by QML engine. Just use a QPointer since it's not used for anything much else internally in a WebEngineView. Pick-to: 6.2 6.3 Fixes: QTBUG-100032 Change-Id: I0560798a02bed02b0aabee61e1b0ae41a6e87d8a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* webenginequick: Avoid deprecated QQmlListReference ctorFabian Kosmale2022-01-262-3/+4
| | | | | | | | | This doesn't modify the signature of appendExtraItems (which no longer requires the engine pointer) to keep the change minimal. Pick-to: 6.3 Change-Id: I2a649cd8d8e68c4c6e1a607d881f9180ac931032 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* FIXUP: Add onTouchSelectionMenuRequested QML handlerBalazs Egedi2021-12-233-3/+21
| | | | | | | | Fixed CodeChecker warnings, added missing documentation. Pick-to: 6.3 Change-Id: I723ea2b0952ded52f513a3cd53ac443b727f1e58 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Update documentationAllan Sandfeld Jensen2021-12-071-4/+0
| | | | | | | | | The signal is updated much faster for paused media now. Pick-to: 6.2 5.15 Fixes: QTBUG-98918 Change-Id: Ifa3b54e212436a7c93e101dc244d7edcbf473b63 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Do not access accessibility from qt post routinesMichal Klocek2021-11-161-1/+5
| | | | | | | | | | | | | | | | | | | It seems accessing accessibility from qt post routines ends badly since caches are gone already. Add closingDown() function to web context, which is similar to QCoreApplication::closingDown(), however return true on post routine. Guard delete accessibility calls. Note the widget part is not necessary, but added for completeness, since only qml can release profiles due to garbage collection. Fixes: QTBUG-90904 Pick-to: 6.2 6.2.2 5.15 Change-Id: Ic0e7115cd17eb58f3d58f70fefbc197dfb7a6493 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* FaviconImageResponseRunnable: fix -Werror=deprecatedMarc Mutz2021-11-161-2/+2
| | | | | | | | | | C++20 deprecates [=]'s implicit capture of this, but the replacement [=, this] isn't available in C++17. So, need to bite the bullet and list every captured variable manually. Pick-to: 6.2 Change-Id: I47c62f9bf93e5d7b6c64cdbdac73bdcc9ecab8b5 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Fix qdoc warnings and enable zero warning limitVenugopal Shivashankar2021-11-151-4/+4
| | | | | Change-Id: Ifa2914e7bca9c224670a1891785d0ba8262cd61b Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Clean up build optionsMichal Klocek2021-10-282-5/+1
| | | | | | | | | | | | | | We can configure webenigne repository with FEATURE_qtpdf_build and FEATURE_qtwebegine_build so make them public. The handling is still affected by QTBUG-96936,however private vs public features will most likely get better handling soon. Fix build summary to better reflect build options. Pick-to: 6.2 Change-Id: Ic6ef54a68b68d0f05c520a058665e6294efbe041 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add onTouchSelectionMenuRequested QML handlerBalazs Egedi2021-10-267-0/+440
| | | | | | Task-number: QTBUG-85043 Change-Id: Iecd2f5ae20fcf031937a1d44cc154f2e2a3ff52f Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Remove the rest of qmake based configurationMichal Klocek2021-10-144-144/+0
| | | | | | | | | | The only not cover part in cmake port are: * ios builds for qtpdf * qt static dependecies for qpdf Pick-to: 6.2 Change-Id: Iefe624c35d847b4a9c3cd970192487340b1657f9 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Change protected members to private in UIDelegatesManagerBalazs Egedi2021-09-301-1/+1
| | | | | | | | | There is no derived class from UIDelegatesManager any more. Pick-to: 6.2 Task-number: QTBUG-93666 Change-Id: I7316e7e37f1f5f5a40d0f2ea71344f093ab5ad1b Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Fix "We mean it." warningsPeter Varga2021-09-231-0/+11
| | | | | | Pick-to: 6.2 Change-Id: I70a491617faff31901162cb382b388a7594816fa Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Rename Quick examples' folder from webengine to webenginequickBalazs Egedi2021-09-133-4/+4
| | | | | | | | Fix webengine directory path in project files and comments Pick-to: 6.2 6.2.0 Change-Id: I06ed9ee41111e7135fa9feb152ad2a5eb2262b76 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix drag and drop againAllan Sandfeld Jensen2021-09-101-4/+4
| | | | | | | | | | Return the right QObjects Fixes: QTBUG-96308 Change-Id: If04be10fe19db6b8c0552c7df588961c711c1250 Reviewed-by: Michael Brüning <michael.bruning@qt.io> (cherry picked from commit e85e4ab275fb0a0c072f19ed3d5c5b5b46de8321) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix handling of new window requestKirill Burtsev2021-09-052-13/+9
| | | | | | | | | | | | | | | | | | | | Fixes heap-use-after-free for WebContentsAdapter, which is replaced in the case, when new window set to be opened and adopted by the same page, which triggered this request: for example, when 'this' is returned by 'createWindow' override. Achieve this by scheduling 'deleteLater' on an old adapter. This was already implemented that way for internal 'adoptWebContents', but was overlooked for page's 'createWindow' API. So just unify handling logic. Also, adapt 'customUserAgentInNewTab' test, since adopting existing WebContents from different profile is not supposed to work, and now enforced by the check in 'adoptWebContents'. Unfortunately, test should also be blacklisted, since it's appeared that custom user agent is still not reliably set for newly created window. Task-number: QTBUG-76249 Fixes: QTBUG-94772 Pick-to: 6.2 Change-Id: Ic9dff33eae99cc242a294d45a92be96306cef93d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Enable no opengl buildsMichal Klocek2021-09-041-0/+4
| | | | | | | | | | | | | By mistake opengl was marked as required library, but should be just optional. Fix compilation issues. This should enable build on yet another coin node. Pick-to: 6.2 Change-Id: Id87404928e6b042d902fcfe0a7fed99a6806456f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Rewrite gn-cmake integrationMichal Klocek2021-08-292-11/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous gn-cmake integration was driven towards having the complete cmake build tree which included gn build artifacts. These were marked as IMPORTED in cmake build files, this way cmake "knew" all object files and static libs coming from gn. To achieve that we needed to run the cmake configure twice. First to feed gn with the build information from cmake and then the second run to import all the build information to cmake based on gn run. As a side effect of this the first run cmake was creating incomplete targets, so we could use generator expressions to gather all the data needed for gn run. The second run of cmake was able to create fully initialized targets. We used 'external project' to run cmake the second time. This approach worked well when doing "module" builds and having two targets, one in the main project and one in external was not an issue. Moreover, this approach could be integrated nicely since CI does only "module" builds. Unfortunately "top level" builds are implemented to import all qt targets into one build tree. This created issue for qtwebengine since fully initialized targets were 'hidden' by 'external project' and including half baked (dummy) targets from the main project resulted in bunch of issues related to the dependency tracking and build race conditions. Also using 'external project' complicated installation rules and in the end installation worked differently than in other modules. With current approach we use response files, so we hide all build artifacts coming from gn and feed cmake with those response files. This way we run the cmake configure once and we create all the targets once. Using rsp files hacks linker options in cmake, so this approach is sub-optimal, however allows to have working "top level" builds. It is worth mentioning here that the final module linking has to take place with cmake's part of build since doing one static lib in gn is not possible due to the toolchain limitation (msvc is not able to process static libs over 4Gb and has no support for thin archives, so only a shared lib is doable at time of writing) Following changes are made: * remove 'external project' for qtwebengine target, we keep it however for ninja ,gn and a host project * call gn from cmake in a scripting mode during build and not configure run, this way BUILD.gn is assembled as a build step so after generator expressions are executed * BUILD.gn is assembled now from 4 files: - root template BUILD.root.gn.in - compiler data gn_config_c.cmake, gn_config_cxx.cmake - sources data gn_cofnig_target.cmake * since we use gn wrapper script use gn.args file to pass arguments instead of a command line, so this file can be now easily modified when running gn and ninja 'manually' * since a script mode does not support handling of properties with TARGET as such, use the DIRECTORY scope in some of our functions which handle GN_TARGET * use qt_build_repo() in main CMakeFile and remove all coin and top level build hacks * remove 'external project' for examples and tests, this is no longer required as all qt targets are not hidden by external project * remove leftovers from gn feedback call used for GN_TARGET * improve installation rules, WebEgineCore target is not by default installed during build, therefore we need to copy resources and translations to root so tests and examples still can be built without a module being installed first * adjust GN lookup paths, we look for gn in main configure and during scripting mode when gn is executed Fixes: QTBUG-94349 Fixes: QTBUG-94709 Fixes: QTBUG-94922 Fixes: QTBUG-94997 Fixes: QTBUG-95051 Fixes: QTBUG-95152 Fixes: QTBUG-95158 Fixes: QTBUG-95972 Task-number: QTBUG-95231 Task-number: QTBUG-95590 Pick-to: 6.2 Change-Id: I5e7a34287ee59d904103fe310fc7c6a36a8dfbc9 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Restore enums for QQuickWebEngineView from old-new API classesKirill Burtsev2021-08-262-2/+51
| | | | | | | | | Restore SC, but at least deprecate these enums in view Pick-to: 6.2 Change-Id: Ic2a263b0ec175c56b8bf450fae9576bfefca2928 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Enable touch events in webenginequick by defaultBalazs Egedi2021-08-261-0/+1
| | | | | | | Task-number: QTBUG-95924 Pick-to: 6.2 Change-Id: If6905e8c98c0468c74bb96f9a22267cb9ce4ed16 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add missing touch-related delegates to CMakeBalazs Egedi2021-08-261-0/+2
| | | | | | | Task-number: QTBUG-93666 Pick-to: 6.2 Change-Id: Id959077f4aeb8f6e4d619d88a683b8f5f7447775 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Fix remaining documentation warningsTopi Reinio2021-08-261-6/+5
| | | | | | | | | | | * WebEngineCertificateError::ignoreCertificateError() was renamed to acceptCertificate(). * Use correct \instantiates class for WebEngineNewWindowRequest. Pick-to: 6.2 Task-number: QTBUG-95860 Change-Id: I42cc4a8939625b432cb4c6f68b26423b6dc3fa7d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix rendering and crash with popupsAllan Sandfeld Jensen2021-08-201-4/+4
| | | | | | | | | | Were not rendering right after the "Move scenegraph handling out of core" change. Pick-to: 6.2 Task-number: QTBUG-95924 Change-Id: I30e206084573a64aeb8a93ca54b46f8a23aa81b3 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Move the rest of the super module documentation to core moduleAllan Sandfeld Jensen2021-08-199-1829/+0
| | | | | | | | Previously parts were moved, but these were left behind in the quick module. Pick-to: 6.2 Change-Id: Icef469e14d073170ec5b2296048874d2b7439385 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Rename quick's 'newViewRequested' to 'newWindowRequested'Kirill Burtsev2021-08-187-38/+38
| | | | | | | | Match new api within the page API. Pick-to: 6.2 Change-Id: Ib2af2f5270f368813cecab8f1c6b7366d3b7172f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Document changes in qt6Allan Sandfeld Jensen2021-08-181-0/+6
| | | | | | | | Pick-to: 6.2 Fixes: QTBUG-94933 Change-Id: I8777b8136afad0e93c0762433471476840802ba6 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
* Hide unneeded Quick C++ APIsKirill Burtsev2021-08-176-7/+7
| | | | | | | | They are not supposed to be a part of public Quick API Pick-to: 6.2 Change-Id: Ib04ea022192d0eec559c28a48bc87fabda932564 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Update documentation notes for build with WebEngine modulesKirill Burtsev2021-08-174-16/+30
| | | | | | | | | | Add cmake usage snippets for module's libraries. Remove quick version from code snippets. Fix minor documentation warnings. Fixes: QTBUG-94937 Pick-to: 6.2 Change-Id: I2e5c8616ceeab495f604e135bb2aa2261c50c68d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Reintroduce File Picker controlBalazs Egedi2021-08-091-11/+5
| | | | | | | | | | - Using FileDialog from QuickDialogs2 - Enabled the UIDelegates test Task-number: QTBUG-93666 Pick-to: 6.2 Change-Id: I8438a2498e864bc93abf26f2527d7883ac26ca9b Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Implement QML Color DialogBalazs Egedi2021-08-041-12/+274
| | | | | | | | | | Quick Controls 2 does not contain Color Dialog, the Labs version does not run on every OS. Task-number: QTBUG-93666 Pick-to: 6.2 Change-Id: Idfb1fd017a7f7b74c4ad135575a9727607dacac4 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* WebEngineNavigationRequest: add accept/reject and deprecate setActionKirill Burtsev2021-07-212-6/+7
| | | | | | | | | | | | Match naming with others and use accept/reject methods to handle request. Also, allow to use request object after call scope in QML. [ChangeLog][QWebEngineQuick][WebEngineNavigationRequest] setAction(action) is deprecated in favor of new accept/reject methods Pick-to: 6.2 Change-Id: I83252370e2e83017008f6951f98b7ecad119e232 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Get rid of Quick's TestSupport APIPeter Varga2021-07-2012-451/+5
| | | | | | | | | | | - Moved TestInputContext and TestInputEvent APIs to tst_qmltests. - Removed loadVisuallyCommitted and use Item.grabToImage to check if page is rendered. - Removed windowCloseRejected signal and use a hidden callback instead. Pick-to: 6.2 Change-Id: Ica6e4c6017426e0171d738a6a59afa557c786698 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Clean up quick APIPeter Varga2021-07-1926-169/+152
| | | | | | Pick-to: 6.2 Change-Id: I9407d407b203b8e2bb13768e5a899624ea47282a Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Merge UI2DelegatesManager into UIDelegatesManagerBalazs Egedi2021-07-184-111/+5
| | | | | | | | | | Drop Quick Controls 1 support. Task-number: QTBUG-93666 Pick-to: 6.2 Change-Id: I68580ef4649141d3d1507fd207088794e7764d2a Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Michal Klocek <michal.klocek@qt.io>