summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add missing fetchAndXxx methods to atomic classes based on std::atomicThiago Macieira2015-03-0553-19/+215
| | | | | | | | And add tests for the GCC intrinsics and for std::atomic. Task-number: QTBUG-43794 Change-Id: Ic5d393bfd36e48a193fcffff13b9b2dbaee80469 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Adjust the socket address family before bind()/connect()/sendto()Thiago Macieira2015-03-042-3/+36
| | | | | | | | | | | | | | | If our socket is already of a given type (probably due to a previous call to bind()), then constrain the incoming target address to be of the same family. On some OSs, trying to send or connect to an IPv4 address from an IPv6 socket will fail with EINVAL, even if the socket is not in "v6only" mode. bind() can't be called after already being bound, but the function can still be called on a socket created by the user and passed on with setSocketDescriptor(). Change-Id: I209a1f8d0c782c6b6de2b39ea4cfad74d63f3293 Reviewed-by: Richard J. Moore <rich@kde.org>
* Fix bind+connect in both TCP and UDPThiago Macieira2015-03-0410-46/+266
| | | | | | | | | | | | | | | | | This has been known to be broken for a while. Now it works: you can bind and you'll retain the port (and the file descriptor) for the connect call. Incidentally, in fixing the binding for more than one IP for the hostname (with event loop), this commit fixes the setSocketDescriptor XFAIL. [ChangeLog][QtNetwork] Fixed a bug that caused both QTcpSocket and QUdpSocket to close the socket and lose any bound ports before connecting. Now bind()/setSocketDescriptor() followed by connect() will retain the original file descriptor. Task-number: QTBUG-26538 Change-Id: I691caed7e8fd16a9cf687b5995afbf3006bf453a Reviewed-by: Richard J. Moore <rich@kde.org>
* QSslSocket: fix compilation errorNikita Baryshnikov2015-03-043-3/+3
| | | | | | | | invalid conversion from ‘unsigned char**’ to ‘const unsigned char**’ Task-number: QTBUG-44744 Change-Id: I6263db106fe28c6aa04db8ca79421b3a9fc5adc9 Reviewed-by: Richard J. Moore <rich@kde.org>
* XCB: Solve crash when plugging a screen with unshown QWindowThiago Macieira2015-03-041-1/+2
| | | | | | | | | | If a QWindow has never been shown, it has no platformWindow (it's null). So it's a valid condition and we need to be sure that the pointer isn't null before dereferencing it. Task-number: QTBUG-44766 Change-Id: Ia0aac2f09e9245339951ffff13c7eb024d6a0773 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Remove non-templated pixellayout methodsAllan Sandfeld Jensen2015-03-041-182/+38
| | | | | | | | | | | Removes the non-templated pixellayout methods that were used for non-c++11 builds, and instead initialize with the templated ones verbatim. These versions are faster, and using only those removes duplicate code. Change-Id: I91a7d9122d2601ad282287a2f5ed6b88877d52fb Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Make some QAbstractItemModel API invokableStephen Kelly2015-03-042-13/+14
| | | | | | | | | | | | | | | As QAIM and related classes are becoming more useful in the QML environment, it makes sense to make these invokable. Make the access API and the setData method scriptable. Avoid making the structure changing APIs scriptable now to be conservative. Export the ItemDataRole enum through the staticQtMetaObject to make built-in roles available. Change-Id: I47b1682e6fa8ba32c7314c73fc10a7bbaa6d1f98 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> Reviewed-by: Stephen Kelly <steveire@gmail.com>
* Make the QItemSelectionModel::selection a property.Stephen Kelly2015-03-041-1/+2
| | | | | | | | | | | | | | | | | | | | | | | QML code like this should be possible: Text { text: selModel.selection.contains(modelIndex) ? "blue" : "yellow" } If the selection is just a Q_INVOKABLE method, then all consumers need to set up Connections { target: selModel selectionChanged: foo() } That is obviously not the API we want (made more clear by the fact that the signal is already perfectly named) because it is not declarative but it can be. So, make it declarative by making selection a property. Change-Id: Id1a05ae9b91e45e6d462bea4272b8740571e9fc3 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
* Add __APPLE_CC_ to QMAKE_COMPILER_DEFINES for moc.prfTor Arne Vestbø2015-03-041-1/+1
| | | | | | | | | Moc doesn't have the built in defines that clang has, so we need to hard-code some of these so that moc resolves the Q_OS_IOS define in the end, based on qsystemdetection.h and TargetConditionals.h Change-Id: Id9a7f870b940f99f27c55a2a887d0ce93217b821 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Fix leaking ISA extensions in LTCG buildsAllan Sandfeld Jensen2015-03-043-0/+5
| | | | | | | | | | | | | Due to common subexpression elimination instruction set extensions may leak from the objects where they were enabled when doing link-time optimizations. To avoid that this patch disables LTCG/LTO on files built with extra instruction set extensions. Change-Id: Ie34ad900be7fb04a0dc4d3562187ee170c183333 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.4' into 5.5Oswald Buddenhagen2015-03-046-6/+6
|\ | | | | | | Change-Id: I556be99cc7ad3fc6f7177542b7444269616a7478
| * Painting: Avoid endless loop for certain bezier curvesEirik Aavitsland2015-03-041-2/+2
| | | | | | | | | | | | | | | | | | | | If the coordinates were too close (at the limit of the number accuracy), the splitting algorithm in QBezier::shifted() would never finish. Ref. testcase in bugreport. Task-number: QTBUG-44674 Change-Id: I2a575cdc6284504ef5e3eb2b749857576fe433c3 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * tst_QNetworkDiskCache: Stop using actual web serversThiago Macieira2015-03-041-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | www.example.com is a reserved domain (RFC 6761), but IANA is running a web server there. As for www.foo.com, that also exists, is a real website and is often content-filtered in corporations (it triggers a firewall warning for me -- "You attempted to visit a site that is in violation of Intel acceptable use guidelines"). So use a localhost instead, since we don't actually need to connect to the servers to do the work. And since we don't need to connect, I chose port 4 as it's extremely unlikely someone is running an HTTP server there (/etc/services lists it as unassigned). Change-Id: Ia0aac2f09e9245339951ffff13c82439c6d5f945 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Remove unneeded exec permission from icomoon fontsDmitry Shachnev2015-03-024-0/+0
| | | | | | | | | | | | Change-Id: I47f111b4fa1278889689c28da762fabe94b95015 Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Optimize fallback RGB888 to RGB32 conversionAllan Sandfeld Jensen2015-03-034-23/+143
| | | | | | | | | | | | | | | | | | | | | | | | Improves the conversion from RGB888 to RGB32 on platforms without SIMD versions. This includes the fallback used on non-neon ARM devices. Besides image conversion the routine is also used for decoding JPEG. On x86 this version is within 0.7x of the speed of the SSSE3 version. Change-Id: Id131994d7c3c4f879d89e80f9d6c435bb5535ed7 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Document Q_ENUM and Q_FLAGOlivier Goffart2015-03-034-22/+74
| | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore] Q_ENUMS and Q_FLAGS have been deprecated, and replaced by Q_ENUM and Q_FLAG macros. These two new macros automatically register the enum with the Qt metatype system, allowing automatic conversion to or from string in QVariant, or to show the strings by QDebug operators. They also enable the new QMetaEnum::fromType function. Change-Id: I80cccd7ad3fc46b11aee2fe50681a8126debf972 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | QTabletEvent manual test: use built-in QDebug operatorShawn Rutledge2015-03-031-77/+11
| | | | | | | | | | | | | | | | There's no need to decode the event details here anymore, and anyway this had a bug: it always said the device is unknown. Change-Id: If99dddbe2136d95e818f4fe526f62650cbd7c1ca Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* | QEvent types: use Q_ENUM qDebug support instead of custom formattersShawn Rutledge2015-03-032-102/+19
| | | | | | | | | | Change-Id: I10886de57b3ba24dddfcd4b78e1a32c470ac1889 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* | autotests: fix the build in case of QT_NO_WHEELEVENTShawn Rutledge2015-03-037-1/+34
| | | | | | | | | | | | | | Wheel event tests aren't possible if there's no wheel event. Change-Id: Ibe380c01fbf6cebfd2f43c6ecb52863134ea3c01 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* | avoid sending QPinchGestures based on unreasonable pinch deltasShawn Rutledge2015-03-031-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On some devices there can be spurious events indicating that the two touchpoints are very close together, so that the ratio of present line length to previous line length can be very large, and the angle delta can be random. But in the normal scenario, there will be a lot of events, in which the touch point movements are small. So if the line length ratio is unreasonable, it's safe to ignore one event and wait for the next. Task-number: QTBUG-44665 Change-Id: Ibb7fe560b6a3f7db72d73aad3468c61f24a95d13 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | doc: imagegestures example: document the pinch handlerShawn Rutledge2015-03-032-15/+54
| | | | | | | | | | | | | | | | | | | | | | The swipe handler is simple, and also doesn't currently work on every platform. But the pinch handler is the one that needs explanation, because the difference between incremental and absolute values of the rotation and scale properties is tricky. Change-Id: Ie3c7f4941d4a17734c9a920a8dd978f86fb03c4b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Merge remote-tracking branch 'origin/5.4' into 5.5Oswald Buddenhagen2015-03-0231-66/+253
|\| | | | | | | Change-Id: I95b3a87c5068c6b8068b30a35655b4c2419e7f9e
| * Fix drawing of background for multipage QTextTable cellsJoni Poikelin2015-03-022-8/+146
| | | | | | | | | | | | Task-number: QTBUG-31330 Change-Id: I0103919ee2864b7cd8bed41e6d6fe4ac5b84142e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Revert "Update the DNS and name-resolver tests to the official zone"Thiago Macieira2015-03-013-7/+7
| | | | | | | | | | | | | | | | | | | | This reverts commit 24c52bd44b700725d4feec0d2e05a7e382e59c4e and makes the Qt unit tests requiring DNS zones to use the temporary test zone in macieira.org (Thiago's domain). Change-Id: Ia0aac2f09e9245339951ffff13c6d3752c83b773 Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com> Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
| * Register font's english name as alias when populating font databaseLiang Jian2015-02-271-5/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Register font's english name as alias in the callback of EnumFontFamiliesEx() at the time QWindowsFontDatabase::populateFontDatabase() is being called. This will help us to resolve english font family name to its corresponding localized alias once windows font database has been populated. It will also fix an assertion in Chinese Windows. Task-number: QTBUG-44647 Change-Id: I265d93c16a1677a7f31ff56d60c24f6e90666419 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * Replace old qt-project.org wiki with wiki.qt.ioSergio Ahumada2015-02-2713-20/+20
| | | | | | | | | | Change-Id: If6c05a5b1f60e97c64f3d6b64041a84c3af82964 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Delete the file that we will move to not the new file before movingAndy Shaw2015-02-261-1/+1
| | | | | | | | | | | | | | | | | | In the case of Windows Embedded Compact we need to delete the destination file before doing the move if DeleteAndRenameFile has failed since MoveFile will fail if the destination file exists. Change-Id: I29d04c147bf8b6b5de850fd7da7bb3dc6a827f1d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Specific the correct mibEnum value for the 'macintosh' codecAndy Shaw2015-02-261-1/+1
| | | | | | | | | | Change-Id: Ib57dd3c98a2ae3994898d7ea40baa0fed482c99a Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Doc: Update online documentation templateTopi Reinio2015-02-263-9/+26
| | | | | | | | | | | | | | | | | | | | | | - Online CSS tweaks: Max-width, font-sizes, font-weights to improve readability, other minor fixes - Remove duplicate include statement and unnecessary definitions for online template Change-Id: I713bddd0e175235668c4d9790d0df58b4131d19f Reviewed-by: Martin Smith <martin.smith@digia.com>
| * Doc: Update Copyright information in template/footerTopi Reinio2015-02-262-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | This change updates the copyright information as it appears in the footer for both offline and online documentation templates. - Update copyright year to 2015 - Update copyright holder to The Qt Company Ltd Change-Id: I82fef6067dee42ec9db561aef9c3c506beafb3c6 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
| * Fix crash when converting format of QImage created from bufferEirik Aavitsland2015-02-262-1/+14
| | | | | | | | | | | | | | | | | | | | When doing format conversion, the optimized inplace codepath did not check if the image data was readonly, i.e. if the QImage had been created by the constructor taking an existing external buffer. Task-number: QTBUG-44610 Change-Id: I085ff8da427bc4ee392f548dffd2418b63148965 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
| * fix default of SettingsPath when qt.conf is presentOswald Buddenhagen2015-02-251-1/+3
| | | | | | | | | | | | | | | | | | it's documented to fall back to Prefix if qt.conf is present but Settings is not specified. Task-number: QTBUG-44644 Change-Id: I8ef6659cbdad51b2fb3c1075ea6f0af4997117ed Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * configure: add '-psql_config' optionPeter Seiderer2015-02-251-3/+9
| | | | | | | | | | | | | | | | | | | | | | Allow setting of pg_config path for cross compilation where pg_config is not in the command search path (do the same as for mysql_config). This is e.g. used for buildroot (see [1] for details). [1] http://lists.busybox.net/pipermail/buildroot/2015-February/119714.html Change-Id: I11d084496ffbb6f8bc350dbcf2971a5be8e3b346 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * configure: fix gold linker support detectionPeter Korsgaard2015-02-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | While the -fuse-ld=gold flag is related to linking, it is an argument to the compiler driver to tell it what linker to execute, NOT an option to tell the linker to behave differently. So it shouldn't get prefixed with -Wl when passed though the compiler driver. Change-Id: I2b50cb6d2bd8911aa9b305cd8e755d4dfe923041 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * Autotest: fix existence check after c8c68ec.David Faure2015-02-241-6/+3
| | | | | | | | | | | | | | | | | | The files were moved to a qrc resource, so the string is never empty, we need to use QFile::exists to make sure they exist. And the error message was wrong, pointing to current dir. Change-Id: I532bda9f6221fb5c69b779b8b48baac9ede90eba Reviewed-by: Rainer Keller <rainer.keller@theqtcompany.com>
* | Add mfloat-abi to linker flags for ARM devicesSamuli Piippo2015-02-272-0/+3
| | | | | | | | | | | | | | | | | | | | | | Cross compilers from latest yocto (dizzy) are no longer built with default value for mfloat-abi, which means it needs to be given for both compiler and linker to produce correct binaries. Otherwise linker will selected dynamic linker as /lib/ld-linux.so.3, instead of /lib/ld-linux-armhf.so.3 when compiling for hard-float. Change-Id: I2fe116b1a90a0fbd078a4e8757abd4bc64a7b56e Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | xcb: Don't log mouse moves by defaultShawn Rutledge2015-02-271-2/+4
| | | | | | | | | | | | | | | | | | It produces too much log output, so now it must be enabled by both defining Q_XCB_DEBUG and enabling the qt.qpa.input category. Change-Id: Id2eb7545a7cd07dadd70da31a1f17c2999feec0d Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | Prevent static functions of Q[Gui]Application from crashing if there is no ↵Friedemann Kleint2015-02-274-0/+87
| | | | | | | | | | | | | | | | | | | | instance. Add tests. Task-number: QTBUG-44499 Change-Id: I160b089ad3f23ab71a87519e50f8a2ef5d2a4a6f Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Android: Fix compilation for x86Eskil Abrahamsen Blomfeldt2015-02-271-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | Bionic on x86 does not have an implementation of ffs(), for some reason. The declaration is available in strings.h, but causes a linker error. The toolchain has a builtin version though, which can be used instead. Change-Id: Iaf4c27542c1aabe88713842303251db44ae6ba86 Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com> Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove some uses of the private Q_PI constantAllan Sandfeld Jensen2015-02-267-18/+14
| | | | | | | | | | | | | | | | | | The patch removes several uses of the private Q_PI constant and removes the qmath_p.h from the includes. A few places are optimized to multiply with reciprocals instead of dividing by Q_PI. Change-Id: I097af6a929e0609d6935563064e81c856005f4bc Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Use C++ <cmath> instead of <math.h> in math3d autotestsKonstantin Ritt2015-02-263-9/+10
| | | | | | | | | | Change-Id: I2e13ec190ec42ac7732ce9ed3ca5567f637beb1e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Fix QMatrix4x4::lookAt() in case of null directionKonstantin Ritt2015-02-261-1/+5
| | | | | | | | | | | | | | | | If direction is null, any valid orientation fits, so that the resulting matrix must be valid. Change-Id: Ie8060f44801822ee337b25f75fb275bd02223fe8 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Remove unused private definitions and functionAllan Sandfeld Jensen2015-02-261-7/+0
| | | | | | | | | | | | | | | | Remove two definitions and one function not used anywhere in the Qt source code. Change-Id: I275e7c7a2d52dd4ac90cc9e6c782cbdfc14791f3 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | qdoc: Fix generation of Doxygen tag filesTopi Reinio2015-02-261-8/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change addresses two issues that affect generating .tags files in QDoc: - Paths written to the .tags file are now always relative to output subdirectory, i.e. the same folder where the file is created in. - Opening the file for writing no longer fails silently. If the 'tagfile' configuration variable specifies no path, or the path does not exist, the file is written to the output directory by default. Change-Id: I23ac529dbfa67575ae96da1c3123ea487cd664f5 Task-number: QTBUG-44366 (cherry picked from commit 5113fdeb7d50979c6acbe2c9c5b26ad134614873) Reviewed-by: Martin Smith <martin.smith@digia.com>
* | qdoc: Correct parsing of the using clauseMartin Smith2015-02-267-24/+118
| | | | | | | | | | | | | | | | | | | | | | qdoc could only parse the using clause where the 'using' keyword was followed by 'namespace'. Now it can parse using clauses with or without 'namespace'. Change-Id: Ic4aad025c00b3bda2bc1cbd52d0ba8dbbad653e5 Task-number: QTBUG-44553 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Output registered enums in qDebug operator for QFlags.Friedemann Kleint2015-02-263-2/+36
| | | | | | | | | | Change-Id: Ia424df234fbd333782c10f0a4422875bb1bfc1f5 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | OSX: fix leaks due to missing NSAutoreleasePoolErik Verbruggen2015-02-2610-0/+59
| | | | | | | | | | | | | | env OBJC_DEBUG_MISSING_POOLS=YES qtcreator Change-Id: Ibbe5f42af5b94a439be3f0dd0f2b6e34bb1afd3f Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
* | Optimize quaternion to rotation matrix convertionKonstantin Ritt2015-02-262-38/+47
| | | | | | | | | | | | | | | | Rearrange operands to get rid of 50% of multiplications (i.e. `2 * (x * x + z * z)` -> `(x + x) * x + (z + z) * z`). Change-Id: Ib5279425ead999fc571b4964ac1681b6e22f9a7e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | [QQuaternion] Add operator* that rotates a vector with a quaternionKonstantin Ritt2015-02-262-0/+17
| | | | | | | | | | | | | | | | Same as quaternion.rotatedVector(vec). Expression like `vec = quat * vec` quite common in the 3D world. Change-Id: I0edd5a5f80537bd149f03f682b3de15c54463e23 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | [QQuaternion] Fix naming of the new methodsKonstantin Ritt2015-02-263-15/+15
| | | | | | | | | | | | | | | | | | | | | | According to the Qt naming policy, methods that return value(s) via the mutable parameter(s) should have "get" prefix to mention that. [ChangeLog][QtGui][QQuaternion] Added methods to convert a quaternion to/from Euler angles and to/from rotation matrix. Change-Id: I95704e1f4623dc4ca54cd237ea203539fb60d452 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>