summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Android: Backslash workarounds for Unix Makefile generatorRay Donnelly2013-04-101-10/+14
| | | | | | | | | | | | | | | If mingw32-make.exe encounters a backslash as the last character on a line it interprets this as signifying line continuation. When building Android Qt on Windows via cmd.exe, this happens as backslashes are used on Windows as directory separators. The workarounds are to make sure that a comment appears directly after the definition of DESTDIR and that a space ends such $(MOVE) command lines. Change-Id: I7f93b655e004edaadac41d0d96bca23e1ba3a85c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* QNetworkConfigurationManager: check whether app is shutting downPeter Hartmann2013-04-101-1/+5
| | | | | | | | | | | | | | | | ... before trying to update the configurations. Before, we would check whether the pointer to the QNetworkConfigurationManagerPrivate instance was 0 and in that case construct it. This would mean that this code path was taken "at app shutdown", i.e. when the qAddPostRoutine had already been called but the other statics were still accessed. Note: This is not thread safe, but neither is the rest of the code; making it thread-safe would require additional changes. Task-number: QTBUG-30585 Change-Id: I8f6cf616e3f3ba1e84b8246589fb7210d2dae57a Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Fix access to invalid memoryKai Koehne2013-04-101-1/+2
| | | | | | | | | QString::toLatin1() creates a temporary QByteArray. Task-number: QTBUG-30578 Change-Id: I17c60bbade1486399f745c7e9878c6467971e6cc Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Doc: Fix minor typoSze Howe Koh2013-04-101-1/+1
| | | | | Change-Id: Id99a1ea0be841cf7cfaf3c671d36dbddc290fcad Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Remove QT_{BEGIN,END}_HEADERS macrosSergio Ahumada2013-04-101-4/+0
| | | | | | | These macros are useless from Qt 5.1 on. Change-Id: I4574e87ef36e7bc67d2f1caa38c685a837708764 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Add keys required for ad-hoc distribution.Morten Johan Sørvig2013-04-091-0/+8
| | | | | Change-Id: I3e52cc0105e8d9d5a38e59b1f6e1071fe302f61c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Mac: Ensure the native filedialog sets file name when savingLiang Qi2013-04-091-2/+2
| | | | | | | | | | | | The name field string was not set in native dialog when one was present. The previous fix is not correct. In the doc of setNameFieldStringValue, it said "The value must not be nil". Task-number: QTBUG-28342 Change-Id: I847fb7472b8fecc0303433d8bf72b6a5bd7da72b Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* OSX window: set QWindow geometry after native window is createdShawn Rutledge2013-04-091-2/+1
| | | | | | | | | | | | | | | Initial window position is at 0,0 by default, then it's corrected in createNSWindow (by calling initialGeometry). After window creation, QNSWindowDelegate will receive the windowDidMove notification and call QCocoaWindow::windowDidMove() which then calls QNSView::updateGeometry(). It will not call QWindowSystemInterface::handleGeometryChange() because the window is still being constructed. So we can fix this by directly setting QWindow::geometry in the QCocoaWindow constructor. Task-number: QTBUG-30382 Change-Id: I3db7a6e83693e5787ae82dcab1767de938d2e5d1 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Mac: Return Qt::Key_F9 for F9, not Qt::Key_F8hjk2013-04-091-1/+1
| | | | | | Task-number: QTBUG-30520 Change-Id: I7006e43ea638796045925e753a2ef8f9d0a066e9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* qmake/nmake: do not remove NDEBUG from DEFINESJoerg Bornemann2013-04-092-6/+1
| | | | | | | | | | | In ebc4fb45 all NDEBUG defines were removed from DEFINES to adjust the nmake generator's behavior to the vcproj generator. Turns out that the vcproj generator did it wrong. The user must be able to specify NDEBUG in DEFINES. Change-Id: Iaaf3915ac79acbbd1e7a3172ad3951d0d686041b Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* doc: Minor changes to qtgui.qdocconfSergio Ahumada2013-04-092-3/+3
| | | | | | | Changing "C++ API" -> "C++ Classes" to match all the other modules. Change-Id: I434cd9c32b1db18395242e73564fe309c8ebb99e Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Use Q_DECLARE_PRIVATE for Oracle and DB2 pluginsAndy Shaw2013-04-094-12/+31
| | | | | | | | | This completes the change started with 0bdc86d9ef7be8e27598d245c6ca8026f08aff12 by providing the implementation for the Oracle and DB2 sqldrivers Change-Id: Ia14415c6d7dea51f1369a81236f79aff892b3af7 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* Verify Xcode installation more thoroughly before relying on itTor Arne Vestbø2013-04-094-4/+32
| | | | | | | | | | | | | | | | We depend on Xcode for building Qt itself and user application on Mac OS. The user may have an Xcode install that is not set up properly, in which case we would fail compilation in mysterious ways. Instead we try to detect misconfigured or missing Xcode installs as early as possible. We try to detect if an Xcode install has not been chosen yet, and if the user has not accepted the Xcode license agreement. We need to do these checks both in configure, as early as possible, and in mkspecs on Mac OS, as we need to error out if the user tries to build an app with the Qt SDK, but with a broken Xcode install. Change-Id: I4e3a11077a61dc5d4ee2c686d01044a9bb2c1c79 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Use absolute paths for Xcode helpers such as xcodebuild/xcrun/xcode-selectTor Arne Vestbø2013-04-093-7/+7
| | | | | | | | | | | We always use the xcodebuild/xcrun/xcode-select binaries in /usr/bin, as these will dispatch to the right binary based on what Xcode version has been chosen using xcode-select -switch. This fixes an issue where a tool was in the path from another Xcode installation. We can rely on the tools as they are present on a clean Mac OS install. Change-Id: I1d3cc1e92604f9be6d6f14639cb6322234edd696 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Doc: Fix minor typoSze Howe Koh2013-04-091-1/+1
| | | | | | | | | QDoc needs correct capitalization to create a link to the class ref Change-Id: If95ab1245fcad6c0f624b88eb4522ba78be7d6a6 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Doc: fix compilability of the exampleThiago Macieira2013-04-091-1/+1
| | | | | | | | QDBusConnection::registerObject takes an object. Task-number: QTBUG-30483 Change-Id: Ibebec48e8c9d3df0d3fa1177c3887ea5c75e8623 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Doc: add row for Qt 5.0 datastream versionThiago Macieira2013-04-091-0/+1
| | | | | | | | | | | We seem to have two tables. That's a bad idea, but they are there. I won't add Qt 5.1 until we're certain that the datastream isn't changing. It's preferable to lack information than to show the wrong value. Change-Id: Ibc7eb95bbbf3b35388f910154372fdd896735430 Reviewed-by: Martin Smith <martin.smith@digia.com>
* Add spaces around the components of a pkg-config Cflags: fieldThiago Macieira2013-04-091-3/+3
| | | | | Change-Id: I91c301adaaf62cf24be0203785282c375c9d01e1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Handle errors when sysrooting tools on MacTor Arne Vestbø2013-04-081-1/+3
| | | | | | | | | | xcrun will spit out errors to stderr and nothing to stdout if it fails to find the tool in question. By checking for an empty return value and skipping the sysrooting we guard against mangling the tool variable. Change-Id: I68f59a6c8116696dd75cceed7b33ac666f3468b2 Reviewed-by: Eike Ziller <eike.ziller@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* qdoc: Removed dead code from qdocMartin Smith2013-04-083-17/+10
| | | | | | | | | | | | | | | | The documentation used to have "Main Classes" list for C++ classes, and qdoc kept track which classes were supposed to be listed as "main" classes. This is no longer used, so this change removes the code that marked a C++ class as a main class and tested whether a class was a main class. This dead code was seen while preparing the way for changing qdoc to output a documentation page for obsolete C++ classes and functions and obsolete QML types and functions. Task-number: QTBUG-30511 Change-Id: Iccc31b46b7c3c144038372cad4771d974f207937 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Android: Split Unix Makefile generator's $(MOVE) commands upRay Donnelly2013-04-081-2/+6
| | | | | | | | Split $(MOVE) commands up into one per file so that cmd.exe's builtin move command can be used. Change-Id: Ife8d7449a2d7718a67082e2d78954964033ce07d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Cocoa: Properly clean window mask dataGabriel de Dietrich2013-04-082-4/+6
| | | | | | | Also, get rid of qt_mac_toCGImage and QPainter warnings. Change-Id: I9e2a0e93d74c318d99651de9222994615e082ac9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: Skip modules that don't build yetTor Arne Vestbø2013-04-081-0/+1
| | | | | | Change-Id: Ic0f39d7fb5a7f435f31dc6897a0a9266d1d7b0ef Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* mkspecs are installed to QT_HOST_DATA instead of QT_INSTALL_ARCHDATA.Volker Krause2013-04-082-7/+7
| | | | | | | These are the same for normal builds, but differ when cross-compiling Qt. Change-Id: I75eccc6f4b67b440a08c4aba41aabb7df686c9f9 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QSQLITE2Driver: use Q_DECLARE_PUBLIC/Q_DECLARE_PRIVATEMark Brand2013-04-082-11/+15
| | | | | | | Follow-up to 0bdc86d9ef7be8 Change-Id: I0a480b5780eb22b1c22e8a47b3a13ab1cd97b934 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Don't bypass overwritten [set]data() methods in the proxy.Volker Krause2013-04-082-4/+28
| | | | | | | | | By calling itemData() of the source model directly, the result cannot contain data provided by the proxy model itself. The base class implementation however will call data() on the proxy instead. Change-Id: Ib0ef5f5621457adbfa4bd896a756dfcb98d0ae54 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* ANGLE: Avoid memory copies on buffers when data is nullAndrew Knight2013-04-083-7/+90
| | | | | | | | With data=0, ANGLE can crash when setting the buffer data. As this should be a legal operation, don't perform a memcpy when data is null. Change-Id: I3fa1260482549b1da50d7a68001a65decb98f258 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* ANGLE DX11: Prevent assert when view is minimized or size goes to 0x0Andrew Knight2013-04-083-1/+69
| | | | | | | | | | | | | This allows the Direct3D 11 version of ANGLE to gracefully allow surfaces with dimensions of 0. This is important because Qt may resize the surface to 0x0 because of window minimization or other user action (window resize). As EGL specifies that empty (0x0) surfaces are valid, this makes sure an assert doesn't occur in the case that a valid surface is resized to an empty one. Change-Id: Ia60c4c694090d03c1da7f43c56e90b925c8eab6d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Upgrade ANGLE to DX11 ProtoAndrew Knight2013-04-08260-16617/+27736
| | | | | | | | | | | | | | | Upgrades ANGLE to dx11proto (dx11-MRT-support tag), which splits out support for DirectX9 & DirectX11. The DX9 codepath is used by default; CONFIG+=angle_d3d11 must be passed to the ANGLE project to build for DX11. Existing patches to ANGLE have been updated (or removed if no longer needed), and a patch has been added to make DX9/DX11 codepaths mutually exclusive. Change-Id: Ibe13befadb94f04883eca449d0ee1f0da955ff92 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Axel Waggershauser <awagger@gmail.com>
* Make QTextCursor accessibility boundary finder availableFrederik Gladhorn2013-04-0812-163/+162
| | | | | | | | | This allows re-using the function in QtQuick. In addition TextBoundaryType is moved to QAccessible and QAccessible2 as namespace ceases to exist. Change-Id: I184bc2c181a22ca51ac4db4e5a080dc26d4acfe0 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* QWizard/Win: Support RTL layout in Aero styleAhmed Saidi2013-04-082-3/+25
| | | | | | | | Task-number: QTBUG-30462 Change-Id: Ie6b3ba4975542a9d92611eb9a8547215e41d3c2c Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Ahmed Saidi <justroftest@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* qdoc: Added missing CPP ignore token, Q_QML_EXPORTMartin Smith2013-04-081-0/+1
| | | | | | | | | This token must be ignored by qdoc's hapless C++ parser. Task-number: QTBUG-29444 Change-Id: I02a0c5926a3fa6284648a632341e38614a237a30 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* Mac: a dialog should have a titlebar by defaultShawn Rutledge2013-04-081-2/+5
| | | | | | | | Change 595deca5 for QTBUG-22316 resulted in having titlebars only on modal dialogs. Change-Id: Ic23c957e0e95cf567d90831e105cc402465df982 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Fix MSVC warning about truncation from 64bit to 32bit int.Friedemann Kleint2013-04-061-1/+1
| | | | | Change-Id: Id3e2f148aa430045d32d61b61eabc3f7197cbbf0 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* QGtkStyle: Try to get the theme name from GtkSettingsDmitry Shachnev2013-04-051-32/+6
| | | | | | | | Note that GtkSettings is already used for retrieving the icon theme name. Change-Id: I935d903c703f7d832b0350d3cfd3a638f22d1391 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Android: Implement debugging without relying on shell run-ashjk2013-04-051-15/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This uses explicit handshakes between the application and the gdbserver start and the host side by using the gdbserver socket and two files ("ping" file in the application dir, "pong" file in /data/local/tmp/qt) The sequence is as follows: host: adb forward debugsocket :5039 host: adb shell rm pong file host: adb shell am start host: loop until ping file appears app start up: launch gdbserver --multi +debug-socket app start up: loop until debug socket appear gdbserver: normal start up including opening debug-socket, not yet attached to any process app start up: touch ping file app start up: loop until pong file appears host: start gdb host: gdb: set up binary, breakpoints, path etc host: gdb: target extended-remote :5039 gdbserver: accepts connection from gdb host: gdb: attach <application-pid> gdbserver: attaches to the application and stops it app start up: stopped now (it is still waiting for the pong anyway) host: gdb: continue gdbserver: resumes application app start up: resumed (still waiting for the pong) host: write pong file app start up: java code continues now, the process is already fully under control of gdbserver. Breakpoints are set etc, we are before main. app start up: native code launches Change-Id: Iaa28b8664dbebc39022d1be7ff5533c52ce39715 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Daniel Teske <daniel.teske@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Update java part for Ministro 9.xBogDan Vatra2013-04-057-36/+63
| | | | | | | Add default source and repository. Change-Id: Idfa7936e8a2879fad9944702c2aa5c6d4638185a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Android: use Fusion style by defaultPaul Olav Tvete2013-04-051-2/+3
| | | | | | | | | | | The Android style is not fully implemented yet, so prefer the Fusion style by default. Task-number: QTBUG-29565 Change-Id: Ida413e6b34a41b618b8e2206688922195ffcc519 Reviewed-by: BogDan Vatra <bogdan@kde.org> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Android: set logicalDpi based on DisplayMetrics.scaledDensityPaul Olav Tvete2013-04-058-9/+38
| | | | | | | | | | | | | | The mathematically correct way would be to set logicalDPi to 160*scaledDensity, but then a 12 pt font would be gigantic. On iOS, we use a factor of 72 to be compatible with the native APIs, but that means that a 12 pt font is very small. A factor of 100 means that desktop apps look reasonable by default. Task-number: QTBUG-29674 Change-Id: I607f110150fb95685a6980b92f6f92f2b489f959 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Don't call virtual methods after the source model is destroyed.Stephen Kelly2013-04-053-1/+38
| | | | | | | | | | | | | Calling clear_mapping causes the persistent indexes to be queried, and mapped using map_to_source, so that they can be restored later. That is not the appropriate response to the source model being deleted because there won't be anything to restore. Simply clear the stored mapping information instead so that the source model actually exists when mapToSource is called by the framework. Change-Id: I99692ee7aa9c6714aec45c68fe4a2d62be189d60 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* EglFS: allow the hook to override logicalDpi()Paul Olav Tvete2013-04-054-0/+18
| | | | | | | | Task-number: QTBUG-29674 Change-Id: Id88a8735ceb7f5bcb63344b3b0653486a6caa70d Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Windows: Ignore mouse events generated by Windows.Friedemann Kleint2013-04-051-1/+5
| | | | | | | | Task-number: QTBUG-29946 Change-Id: Idef0e7cc8bc407377e60e4a9d67c3ba78b347b76 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Mark widget framestrut as dirty when window flags change.Friedemann Kleint2013-04-051-0/+3
| | | | | | | | | | | | | When undocking a dock using the undock button on a main window with native children, the dock widget goes to 0,0 (content position) causing the window frame to be off-screen since the frame is still 0,0. This change causes the frame to be recalculated such that the frame position is 0,0. Task-number: QTBUG-28872 Change-Id: I32896107cd7b982811f45de43dbad82e7407ea7a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* Enable C++11 on OSX when using ClangTor Arne Vestbø2013-04-054-2/+15
| | | | | | | | | | | | | | This means we have to bump the deployment target to Lion (10.7), as the LLVM 'libc++' C++ standard library does not support Snow Leopard (10.6). For iOS the deployment target has to be bumped from 4.3 to 5.0, but we don't enable C++11 by default yet as it's not tested enough on iOS. Users who wish to deploy to 10.6 need to build their own Qt, passing -no-c++11 to configure. Change-Id: I7b5d20ab002db889d1091a4b7ff600f62caa7f06 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Test that the CMake files create appropriate version variables.Stephen Kelly2013-04-053-2/+57
| | | | | | | Change-Id: I1d8061302fbb8494b5ae31e20a644745fe969f10 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Brad King <brad.king@kitware.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QGtkStyle: remove obsolete themeName != "Qt" checksDmitry Shachnev2013-04-051-12/+0
| | | | | Change-Id: Ibb6d952f6abc398ac5deb94d3bdfd8560777aa44 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Don't redundantly define cmake package *_VERSION variablesStephen Kelly2013-04-051-3/+1
| | | | | | | | These variables are set by the ConfigVersion.cmake file already, so no need to maintain them manually in the Config file too. Change-Id: I73d949fb22052f4f6acbc1f70518e73f8fbf7c9c Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Look for cmake package dependents only in the parent directory.Stephen Kelly2013-04-051-1/+1
| | | | | | | | | | Fedora uses configure options to set the install prefix to a location which does not contain the cmake config files. Rather than finding dependencies from the installation prefix, find them in sibling directories instead. Change-Id: I06974e9655d0dda2a18064d0f9a33997cf2cb2d3 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Stabilize tst_qcompleter.Friedemann Kleint2013-04-051-41/+54
| | | | | | | | | | | | - Use qWaitForWindowActive in task178797_activatedOnReturn(). - Remove hardcoded timeouts, use qWaitForWindowActive/Exposed. - Instantiate widgets on stack or use QScopedPointer to ensure cleanup. - Move widgets to a central location, avoiding taskbar areas. Change-Id: I98991b70067dddab9aa69b1681fa80398ec8b1f6 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Windows: Do not use native dialogs for non-modal dialogs.Friedemann Kleint2013-04-051-4/+2
| | | | | | | | | | | | Windows file dialogs are always modal (inheriting IModalWindow). As the QtQuick dialog plugin has a widget-based fallback now, there is no need to use native dialogs for the non-modal case. Task-number: QTBUG-30513 Change-Id: I8b62af86fde34e8c0cf5e917d2e62260e16c82fb Reviewed-by: David Faure (KDE) <faure@kde.org> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>