summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* add/remove window only when the window is shown/hiddenBogDan Vatra2013-11-071-3/+5
| | | | | | | Task-number: QTBUG-34469 Change-Id: Id77cf738f96bb94582833f6734a2a491b01e1666 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Windows: Do not set transient parent on popups.Friedemann Kleint2013-11-071-0/+2
| | | | | | | | | Analoguous to Window creation code. Task-number: QTBUG-34503 Change-Id: I3cf7d58999bff5b106ca9d2e2c6f550e35f9db9a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add a warning message when a WM_DESTROY not triggered by Qt is received.Friedemann Kleint2013-11-072-2/+9
| | | | | | | Task-number: QTBUG-34503 Change-Id: I7a1e06b34deaf8e595f4986114701480bdcf219c Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Revert "Add tracing to logging framework"Kai Koehne2013-11-0710-643/+9
| | | | | | | | | | | | | | | | | | | The tracing API still misses some real-world exposure. Let's re-do this in dev to have more time. This reverts parts of following commits: 466e0dff4bb686e51d0ab3f905631fcb7dd8bfef 7a47aebe9ed41d6cd9c9bcd45758d4d553668e99 a652bab6a7ebf78b029fea95c2801deb6f4f524a 8f0654ceb878b6c8a08c7f5b790027c26e007c13 4162522edd9d31bd2798ab37f083adff818d886e 32f27b4367c4e042a3f0cda671579494e31c1d69 9ff81bdc1ab4e3d14914192cd63ae625a507fe90 Change-Id: If97340c37b8b3363f597683336a8390d5ff386f1 Reviewed-by: hjk <hjk121@nokiamail.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* qdoc: Don't include internal QML typesMartin Smith2013-11-073-3/+5
| | | | | | | | | | | | | QML types marked \internal were appearing in the "All QML Types" list. These links were dead because the pages for these internal types were not being created, which was correct. Now these internal QML types no longer appear in the list. Task-number: QTBUG-34506 Change-Id: I1d005459e84ed9a2afae94b797b9d39aa3e517f3 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* qdoc: Fix output file name generation for examplesTopi Reinio2013-11-071-1/+5
| | | | | | | | | | | | | | | | When generating output file names for examples, qdoc prepends a module-specific prefix. Unless already defined, it defaults to the project name defined in .qdocconf file. This leads to wrong prefix being used in some cases - specifically, on pages in qtdoc module listing examples in other modules. This change takes the modulename prefix from the node, and only uses the project name as a fallback. Task-number: QTBUG-34581 Change-Id: Ia0a940cbc05ed819ff36c328cf9c1e30e2c65b5e Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* QNX: Fixed "normalPosition" of touch eventsBernd Weimer2013-11-071-2/+4
| | | | | | | | | | | Pixel positions have to be set in relation to screen size in pixels, not the physical size to calculate the normal position in the range 0..1. Change-Id: I6880fb64b7c3049d657fd081b564b945399b5865 Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Add missing Q_INIT_RESOURCETor Arne Vestbø2013-11-073-0/+18
| | | | | | | | | | | The library needs to do Q_INIT_RESOURCE for all resources it uses internally, otherwise static linking will fail, and the user has no idea how to rectify it as the name of the missing resource is not known. The Q_INIT_RESOURCE needs to happen outside of any namespace, hence the use of static initResources() functions. Change-Id: I8f7d36b440b05809d97dd489cf8789f345633cec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Android: allow installing apps to SD card by defaultPaul Olav Tvete2013-11-071-1/+1
| | | | | | | Task-number: QTBUG-34423 Change-Id: I3b2c8a12b113a35f8b8454191d8ba8832d9fd995 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* QUrlTwoFlag: add two missing constexprMarc Mutz2013-11-071-2/+2
| | | | | | | | | The other member functions that can be constexpr already are, only these were missing. Change-Id: I717c74b210b45cfb8af9168d61e27e3ff2f6a9c9 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Q(UrlTwo)Flags: avoid undefined behaviorMarc Mutz2013-11-072-21/+21
| | | | | | | | | | | | | | Loading an enum with a value that isn't in the enum is undefined, according to Clang's usan. So when doing logical operations on QFlags<E>, don't go through the QFlags(E) constructor, but via QFlags(QFlag) (=int) instead. Apply the same change to QUrlTwoFlags. Change-Id: I5f27e22c4d831482fcbba88b97cb124fb005e3fd Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* iOS: set active window upon calls to requestActiveWindowRichard Moe Gustavsen2013-11-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | We did not do this from before. Instead we would activate the window when it's view became first responder. And this would happen when the input panel was told to open. That behavior is a fragile, since other layers higher up (qml) would not open the input panel unless the window was active, which also makes sense. A classic chicken and egg problem. So to play more along with how Qt is expected to work, we change behavior to instead activate the window directly when requested to do so (which also includes when the user touches the window directly). This will also work better for "keyboard" events like Key_VolumeUp, once implemented. The down side is that Qt will give focus to widgets/items (and as such, open the keyboard) whenever you touch the window. But that is easier to fix, and will be dealt with in later patches. Change-Id: I9bbeb0205e7ea3c5079100c07e40ddb1c60b476b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Doc: Fix cross-module linksSze Howe Koh2013-11-062-5/+2
| | | | | | | | | | - Remove Active Qt -- it's not really plugin-related - Add QDoc dependencies - NOTE: Can't add Qt QML because QDoc would get confused between the C++ and QML "Qt" namespaces. Change-Id: I15a76dbd5235f13598a3802a815f7f49b80eac8a Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* EglFS: make sure resize events are deliveredPaul Olav Tvete2013-11-065-16/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | Make sure that resize events are delivered when the platform plugin overrides the geometry set in setGeometry(). This fixes a race condition where a widget was resized to its sizeHint() while the window was maximized, and the content was shown scaled on the screen. The problem is that the widget gets the wrong size from QWidget::setWindowState() (which calls adjustSize() in order to support normalGeometry). This size is used to resize the backingStore. When the QWindow is resized, it calls QEglFSWindow::setGeometry() which corrects the size to screen()->availableGeometry(), and triggers a GeometryChangeEvent since the size was corrected. This ends up in QGuiApplicationPrivate::processGeometryChangeEvent() which will not send a resize event, since the size has not changed (it is always availableGeometry()). Therefore the widget is never resized, and the backingStore remains the wrong size. Task-number: QTBUG-34421 Change-Id: Iee49c53cc529de36010db2695d838d8c2284edd4 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Android: Fix registerClipboardManager semaphore initializationBogDan Vatra2013-11-061-1/+1
| | | | | | | Task-number: QTBUG-34582 Change-Id: Idc6c821f768f90adf13af2070affe2ccf89a1450 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Android: Catch any startActivity exceptionsBogDan Vatra2013-11-061-3/+7
| | | | | | | Task-number: QTBUG-34600 Change-Id: I7147f0e6b7788df9e706e70758300d4d786032fc Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* QMetaType: Fix conversion between module types.Stephen Kelly2013-11-061-1/+2
| | | | | Change-Id: I7215b4599c3f0459139b32b6571f0a9e60182ee9 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Android: Fix menu on API-11+BogDan Vatra2013-11-065-17/+92
| | | | | | | | | | | On API-11+ if there is no hardware menu button show the action bar. Fix menu when using the opengl android plugin. Task-number: QTBUG-32002 Change-Id: I45bd49107621e4cab85eb6411897229e20bb8281 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: BogDan Vatra <bogdan@kde.org>
* iOS: Remove unused QIOSWindow methods for getting effective width/heightTor Arne Vestbø2013-11-062-12/+0
| | | | | Change-Id: Ifdfd5881822bf56f2c8ab0742a0e257e2bd61533 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Clarify Q_INIT_RESOURCE in relation to namespacesTor Arne Vestbø2013-11-061-0/+4
| | | | | | | | | | The constructor functions generated by rcc are put in the global namespace. As there is no way to forward-declare a function in the global namespace from within another namespace, Q_INIT_RESOURCE must always be called from the global namespace. Change-Id: I8b8b9451271cf2f9147164696a6df7615678ab03 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Don't hardcode devicePixelRatio to 1.Morten Johan Sørvig2013-11-061-1/+6
| | | | | | | | | | | | | This code path can and will be hit during app startup, and can result in low-resolution images being used on high-dpi systems. Use qApp->devicePixelRatio() instead, which is more likely to be correct. Change-Id: Ic881cfedd8e962037d2d4af4a1242f590d56c194 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Revert "Use Qt's own glyph cache with the freetype engine."Gunnar Sletta2013-11-061-1/+2
| | | | | | | | | | | This reverts commit 8c58640fdfe5d182cd8ab9ad0598c54c0487eb7c. The intent was to reduce the maintenance of parallel code paths, but this had a negative impact on performance so we need to enable it again. Change-Id: Ic58f7781ff076055e7c48f20fc0e7a8a2c9e51a4 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Android: prevent main activity to be recreated.BogDan Vatra2013-11-061-1/+1
| | | | | | | | Add more config changes needed for API 13+ API 13+ is mandatory to build any Qt for Android application. Change-Id: I595f7174dd2fc8a0865772f9780ce606e1f1fcf1 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Doc: Updated url variable in qdocconf files.Jerome Pasion2013-11-0610-10/+10
| | | | | | | | | | | | | | In 5.2, the HTML output is in a flatter structure and when they are hosted in qt-project.org/doc, the documentation will be found at http://qt-project.org/doc/qt-$QT_VER The url variable is used by projects outside of Qt 5 which need to link to Qt 5 documentation, such as Qt Creator. Task-number: QTBUG-34584 Change-Id: Ifa55fcd9e402b0e184a41e316340e46aeb7101de Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* Make OpenGL texture glyph cache use the right freetype glyphsGunnar Sletta2013-11-061-1/+11
| | | | | | | | | The freetype font engine would fall back to rasterizing glyphs via QPainterPath in QFontEngine::alphaMapForGlyph() which has a rather unfortunate implementation. Change-Id: Ic0b4095b6f17ab33f0602139f0a8fb441dfba0ee Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* QGlobal: static_assert that sizeof(int) == 4 and UCHAR_MAX == 255Marc Mutz2013-11-061-0/+8
| | | | | | | | | According to Thiago, Qt assumes this in a lot of places, so make it explicit. Change-Id: I3f4a55699379fd9fe4d792061c80b3b589c10c53 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Force length fo licensee literals to be computed at runtimeKai Koehne2013-11-061-2/+2
| | | | | | | | | | Prevent compilers from computing strlen() at compile time by passing a volatile pointer. Task-number: QTBUG-34261 Change-Id: I5e5e80181024d57496907918d2a43d7c83841082 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Add a little more information about current dirsThiago Macieira2013-11-061-2/+5
| | | | | | Task-number: QTBUG-34300 Change-Id: Ib71d6ace77b525942ca40645299cdfd87b753d70 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Remove two unused functions from QAccessibleTabBarFrederik Gladhorn2013-11-062-38/+0
| | | | | Change-Id: Ib3296a11b1bb9656f2b0c14106ea09f529311ccf Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Disable threaded rendering for Intel HD 3000 cards.Gunnar Sletta2013-11-061-4/+18
| | | | | | Task-number: QTBUG-34492 Change-Id: I1848cde3fb9517679fd54a7170ed5bee40880edc Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Revert "Ensure CSS rules are inherited from the parent tags"Andy Shaw2013-11-051-5/+1
| | | | | | | | | | | Since the original change caused a problem with the CSS rules being always inherited where in some cases this should not be happening. This reverts commit 6f6546613774a48fe12f13f796ed7115dfe49a27. Change-Id: I6e9cf163d752b1869b5e967a7ab59963d655ba87 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add missing \since 5.1 for QVector::takeFirst() and ::takeLast()Pekka Vuorela2013-11-051-0/+2
| | | | | Change-Id: Ic2d7e82187a17e21c2ed0e81318294730c3a0930 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* QStandardPaths: add GenericConfigLocationDavid Faure2013-11-057-6/+20
| | | | | | | | | | | | | | | | This is what ConfigLocation was meant to be. A directory shared by all applications. Unfortunately when I wrote the fallback on Windows, I picked DataLocation (which is app-specific) instead of GenericDataLocation (which is shared between apps). This makes it impossible to have config files shared between apps, e.g. for libraries. It also makes ConfigLocation quite inconsistent (on Windows one cannot use it to load another app's config file, while it works everywhere else). All this is fixed by GenericConfigLocation, which is shared between apps. Change-Id: I23a755131061d4fea01e13dd1038fbd8ef333a5d Reviewed-by: Alex Richardson <arichardson.kde@googlemail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add better version checks for accessibilityFrederik Gladhorn2013-11-052-16/+33
| | | | | | | | | | | We would spam the debug output on devices with api < 16 with some warnings that the super class a11y delegate could not be found and others. Instead check the runtime version before trying to load the JNI code and only load the delegate if api is new enough. Change-Id: I52286cb99924b034b9b58c53566f15030939b0c9 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Support native event filters for screen eventsJan Arne Petersen2013-11-051-1/+5
| | | | | | | | | Change-Id: If0af4544191c513e64f582cece4a453c1ab5c8e7 Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Fabian Bumberger <fbumberger@rim.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Declare Cocoa conversion funcs in objc-mode only.Morten Johan Sørvig2013-11-052-2/+10
| | | | | | | | | | | | | | | | | In practice, there are several ways to forward-declare objective-c classes. Qt uses "struct objc_object", other projects may use a plain "class". Mismatched forward declarations will lead to compile errors, and this is a form of header pollution. dd5e40d9 added a workaround where Q_FORWARD_DECLARE_OBJC_CLASS can be predefined in order to sync up the declarations. Make forward declaration clashes less likely by forward-declaring in objc-mode only. Change-Id: I9f7a399d64dc88bfe05d5385b3d46b5302112aef Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Cocoa (OpenGL): If no view is attached, makeCurrent() should return falseGabriel de Dietrich2013-11-051-0/+2
| | | | | Change-Id: Ie2869fae1549c3b0a8ef78702410e6ca0c980737 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: Don't hide views when reparentingGabriel de Dietrich2013-11-051-0/+3
| | | | | | | | | Commit a2bdda8e3ba32 was meant for creation only. We should not hide views on our own, particularly when Qt had not asked for that. Task-number: QTBUG-33581 Change-Id: Ib35fc78a27be1498f80aabd385e7a2185475b949 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Improve documentation of QImageIOPluginAlex Merry2013-11-051-13/+27
| | | | | | | | | | Expanded the documentation to describe what the code in QImageReader and QImageWriter actually expects from these plugins. Change-Id: I04bb0cbf56d57a56ed246e723e533d73440a4d3a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* Fix placeholder text in QTextBrowserJ-P Nurmi2013-11-051-7/+8
| | | | | | Task-number: QTBUG-34051 Change-Id: Ief55cda861ef293a5fdeb2e5fa287b835c729894 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Disallow deep or widely nested entity references.Mitch Curtis2013-11-051-0/+53
| | | | | | | | | Nested references with a depth of 2 or greater will fail. References that partially expand to greater than 1024 characters will also fail. Change-Id: Id4e49d6f7cf51e3a247efdb4c6c7c9bd9b223f6e Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove Q_INIT_RESOURCE_EXTERNTor Arne Vestbø2013-11-053-7/+0
| | | | | | | | | | | It's not providing any convenience over using Q_INIT_RESOURCE, which does its own extern, were never documented, and was added back in 2010 without any commit message justifying its existence. Change-Id: I1ca9a042d3f4fca34007d28b140661c50064f11b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qdoc: Eliminate qobject_cast() collisionMartin Smith2013-11-051-0/+2
| | | | | | | | | | | | | | | | | | Two template functions for qboject_cast() are defined in qwidget.h that confuse qdoc because qdoc doesn't handle template functions correctly. In this case, the documentation for all qobject_cast() functions appears in qobject.cpp where it is declared to be related to QObject. This fix surrounds the template functions in qwidget.h with #ifndef Q_QDOC ... #endif, since qdoc doesn't need to see them. This fix unmasks a linking bug QTBUG-34564, which will be fixed separately. Task-number: QTBUG-34505 Change-Id: I97fd32cc563bfa4a232819c097f41be56adf0114 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Clean up QWindowsSessionManager.Friedemann Kleint2013-11-053-45/+10
| | | | | | | Fix spelling error in method name and inline simple functions. Change-Id: I7f2a67fb1951b58874b09002ee57e15e75561727 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* iOS: Enable threaded OpenGL.Maciej Kujalowicz2013-11-053-1/+21
| | | | | | | | | | This change activates ThreadedOpenGL and ThreadedPixmaps capabilities in the iOS integration. QIOSContext is expanded with a support for a shared context. Change-Id: I56615c870a24e17850ad2748421c54e015de3ab2 Reviewed-by: Ian Dean <ian@mediator-software.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Clarify use of Q_INIT_RESOURCETor Arne Vestbø2013-11-053-10/+43
| | | | | | | | | | | | | | | | | | | The Q_INIT_RESOURCE macro is needed if a library itself uses resources, in which case the Q_INIT_RESOURCE can and should happen in the library (like we do for eg. widget styles), or if a library exposes resources that are supposed to be used by the library clients, in which case the macro needs to be put in the application code. The distinction between the two, and the fact that resources built as part of the main executable do not need the explicit initialization, were not all that clear. This was evident by the lack of Q_INIT_RESOURCE in our own Qt libraries, and the various Q_INIT_RESOURCE calls in our examples where they are not needed. Change-Id: I40258458e9fdf9ee5502c212971fb3d90b4fc388 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Process screen events in the main threadJan Arne Petersen2013-11-054-9/+98
| | | | | | | | | | | Screen events are still read in the screen event thread but are processed in the main thread to make it possible to support QAbstractNativeEventFilter for screen events later. Implementation is similar to the xcb platform plugin. Change-Id: I7bade3e13e51c6d70bb608727a93bbd3aabc5d47 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Disable clear button in read-only QLineEdit.Friedemann Kleint2013-11-053-0/+13
| | | | | | Task-number: QTBUG-34315 Change-Id: I6c318879aee907c080e871a541da4ba5eadd71ed Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QLineEdit: Fix potential crash when removing the clear button.Friedemann Kleint2013-11-053-5/+4
| | | | | | | | Remove it from the side actions list. Task-number: QTBUG-34315 Change-Id: I70063351193b504f8656e903896d155ac74f73a6 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* BlackBerry: Prevent superfluous removal of socket notifiersBernd Weimer2013-11-051-12/+11
| | | | | | | | | | | | File descriptors have always been removed from bps before adding them, which lead to an annoying warning. "QEventDispatcherUNIX::registerSocketNotifier()" needs to be called after "ioEvents()" to prevent this. Task-number: QTBUG-34536 Change-Id: If074ff7a6638fe234abc100c81d094e182de7537 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>