summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Drop the unused qcgl_createGlContext functionGiuseppe D'Angelo2013-02-222-11/+0
| | | | | | Change-Id: I09286388e9af7ec472b394be87204746f8ae22b1 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Update qopenglext.h to latest glext.h from Khronos.orgSean Harmer2013-02-221-99/+1016
| | | | | | | | This now includes support for OpenGL 4.3 Change-Id: I964284843dffe806280e7f67cde67f17e84dc6df Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix DEFAULT_LIBDIRS detection on WindowsRay Donnelly2013-02-221-1/+3
| | | | | | | Must use ; as the path delimiter instead of : Change-Id: I549e1652ef5bbae09c8fddec3e83ac9f52cec3a4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Add support for forced VSYNC using the EGLFS platform plugin.Milian Wolff2013-02-223-22/+30
| | | | | | | | | | | | | | | | | | | | | | | | Before a buffer swap the new QEglFSHooks::waitForVSync method is called which looks at QT_QPA_EGLFS_FORCEVSYNC and - if that is set and non-null - calls ioctl with the FBIO_WAITFORVSYNC request on the framebuffer device. This is required on some embedded platforms where the driver does not support VSYNC yet the Kernel provides a generic implementation. I tested this using QML_RENDER_TIMING=1 which proofs that the frame rate for an example of mine drops from >125fps to a straight ~60fps with a few frames that take ~33ms (i.e. 30fps) as expected for VSYNC. To prevent excessive open/close calls on the frame buffer device per frame, the file descriptor is now cached. To keep the QEglFSHooks interface as clean as possible this is done via a global static in qeglfshooks_stub.cpp and initialized and freed in platformInit and platformDestroy. Change-Id: I4d31b227c65ff22aa089db0fbc62c89a59cbb6c7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* OpenGL: Refactor some defines and typedefs to a common locationSean Harmer2013-02-212-21/+17
| | | | | | | | | These will be needed by the upcoming OpenGL enablers so move them out of qopenglfunctions.h to somewhere that any opengl related file can access them. Change-Id: I0c788559397d446ec7210e2ad940da862179710d Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* QPA: Add interface for setting the application state explicitlyRichard Moe Gustavsen2013-02-219-4/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The motivation for this patch is twofold: 1: we need a way (for iOS/Android) to tell the current window to remove focus from the focus object when the user hides the input panel. Otherwise, if the focus object is e.g a line edit, the cursor will continue to blink inside it, which is wrong. As it stands, telling the active window to deactivate (by calling QWindowSystemInterface::handleWindowActivated(0)), will cause the whole application to deactivate if no windows are active, which is not what we want. 2: Qt currently understands just two application states, Activated and Deactivated. On mobile platforms we can have other states as well, like "suspended" on iOS. So controlling the application state should not depend on window activation, but instead be controlled through a separate API by the platform plugin. This patch will add the following function: QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationState newState) that lets us control the application state from the plugin. This also means that we factor out application state handling from window activation, which also gives us a way to remove focus from a window while keeping the application active. To not break existing desktop platforms that relies on application activation being tied to window activation, we need to make this API opt-in by using a platform integration capability hint. This is not optimal, but found necessary after investigating several other solutions. Which states (other that active/inactive) it makes sense to add to Qt::ApplicationState will be a topic for later patches. Change-Id: Ic6fdd3b66867abb67da43eba04ec86f06d82ff94 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix QMetaType of const referencesOlivier Goffart2013-02-213-0/+35
| | | | | | | | | | | | | | This fixes QMetaType detection of const reference arguments in signals while connecting using the new syntax and Qt::QueuedConnection const references should have the same QMetaType as non references. That means we need to remove the const reference while getting the QMetaType. Change-Id: I9b2688da7fb9ae985aec0d8fa62a1165357ffe71 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Giuseppe D'Angelo2013-02-2138-201/+282
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-2038-201/+282
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/unix/separate_debug_info.prf src/gui/kernel/qwindow_p.h src/plugins/platforms/cocoa/qcocoacursor.mm tests/auto/tools/moc/tst_moc.cpp Change-Id: Ieb57834c00f961a747ffe51e6eb9fc9612cebccf
| | * Clean up the cached cursors inside the destructor of QCocoaCursorAndy Shaw2013-02-202-0/+5
| | | | | | | | | | | | | | | Change-Id: I4e1222832efa29680b4e658a5c9109641599a2b9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| | * Fix the default handling of cursor shape when there is no standard oneAndy Shaw2013-02-201-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | When the cursor specified is a bitmap one we cannot cache it based on the shape as the pixmap set on the cursor may be different. Therefore we should always create a new cursor in this instance. Change-Id: I2c201590ff632490d76c1b423908ae32aa584eb6 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| | * Fix QDockWidget being unable to dock when initially floating.Friedemann Kleint2013-02-201-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When setFloating(true) is called before show, frame strut events are not enabled for the native window (since there is none yet) in QDockWidgetPrivate::setWindowState(). In that case, do it in the show event handling. Task-number: QTBUG-29012 Change-Id: I93b679f20200c149d608a1bcc65b4936a035c6a0 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| | * Document the qintptr for public usageLaszlo Papp2013-02-201-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QAbstractSocket API has been already using this as a return type. Hence, this has already been exposed to the public API users, anyhow. http://qt-project.org/doc/qt-5.0/qtnetwork/qabstractsocket.html#socketDescriptor A minor mistake has also been fixed in this commit at the quintptr section. Change-Id: I8143b3050428548ff6baee2e3a0bce4058ea8701 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Don't enable HIDPI when rendering directly to PDF on MacAndy Shaw2013-02-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When rendering to PDF using the PDF paint engine on Mac it would consider it to be rendering as HIDPI when ScreenResolution was used. This would mean nothing was being rendered at all in the PDF as a result. Task-number: QTBUG-28709 Change-Id: Ieb97ca9d0b47f6b96debbcf5e05e96c39292e412 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| | * Fix focus handling of native child widgets in xcb.Gunnar Sletta2013-02-195-3/+44
| | | | | | | | | | | | | | | | | | Change-Id: If4d596195624011142bff6853849a23064e478df Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> (cherry picked from commit fc663b5f9aae16fe6a03160e3eb148a5f742ac58)
| | * QStackedLayout: Fix crash when focus widget is destroyed in hide()Jan Arve Saether2013-02-192-12/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We also have to make sure that when moving back to a page that has a focusWidget(), the focus should go to the focusWidget() Task-number: QTBUG-18242 Change-Id: Ibfa7d6361c1a456480b2f1584a88ef4c4f405709 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| | * Clean whitespaceJan Arve Saether2013-02-191-5/+5
| | | | | | | | | | | | | | | Change-Id: Iec1950a0f4053cd71633162f0cb50efc9d4d493f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| | * moc: Error out when detecting unterminated macro usageTor Arne Vestbø2013-02-193-0/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | Exhausting the symbol list while looking for the final right parenthesis means it is missing. Task-number: QTBUG-29308 Change-Id: Iccf5897b0f5eb719699fd12d6c8e4a16ff189d9b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| | * QNX: Don't crash with 0 by 0 sized windowsSergio Martins2013-02-191-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the rare event of an invalid sized window, the application crashes because libscreen doesn't like creating empty buffers. Not creating the buffers at all would also be a solution, if we didn't have QPainter crashes due do null paint devices. Change-Id: I561d0082576b6226dd52129f9640952ba46273c8 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| | * undef B0 to build on PPC (conflict with definition in termios.h)Shawn Rutledge2013-02-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the same fix that was already done in qprinter.h /usr/include/bits/termios.h:122:#define B0 0000000 /* hang up */ so the compiler sees B0 as a numeric constant Task-number: QTBUG-29704 Change-Id: I2df5e1783f3142558cbc1606e0c61fcf636f2de8 Reviewed-by: David Faure (KDE) <faure@kde.org>
| | * Doc: Removed reference to deprecated \badcode command.Jerome Pasion2013-02-194-75/+15
| | | | | | | | | | | | | | | | | | | | | | | | -QDoc doesn't differentiate between \badcode and \code. They both look the same in the output. Change-Id: Ifabd51b7e433a1c30cf30c267d3ce63dded1bd43 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
| | * Cocoa: Add QMdiSubWindow size grip back.Morten Johan Sørvig2013-02-192-26/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change all Q_WS_MAC -> Q_OS_MAC in qmdisubwindow.cpp Remove QEXPECT_FAIL from tst_qmdisubwindow.cpp. Task-number: QTBUG-29434, QTBUG-25297 Change-Id: I299b87ab994e2d5ba93d5bbae48de0df1ac1c9d6 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| | * QColorDialog/QFontDialog: Fix setOption().Friedemann Kleint2013-02-182-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Call setOptions() such that the option takes effect. Task-number: QTBUG-28817 Change-Id: Ibef834efc988d3ba49e88ea88ef475b1fd7fd98f Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
| | * QNX: Print the buffer size before crashing, for debug purposes.Sergio Martins2013-02-181-0/+1
| | | | | | | | | | | | | | | Change-Id: I2d423ee3717bb09b7bb2c63f645e5315be1fa611 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| | * add QT_CONFIG's static/shared to CONFIG on startupOswald Buddenhagen2013-02-186-17/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | ... instead of as a fallback in default_post. it was this way in qt4, and it requires less code to be written in the end. we are already doing it for debug/release as well. Change-Id: I6e02849d61d14a18375cf64a5990768931ebac48 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| | * take advantage of new safety regarding build config resolutionOswald Buddenhagen2013-02-185-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | all tests that happen after default_post loads resolve_config can rely on debug vs. release, static vs. shared, and staticlib vs. dll being properly "de-conflicted". Change-Id: Ie0b4defcd6024bd1c25f53ba7e03621052d96492 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| | * refactor build config resolutionOswald Buddenhagen2013-02-1811-49/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the current approach of having "free-flying" prf files for such a core issue is rather insane. this was noticed early on, as evidenced by the forcible loading of debug/release/debug_and_release in default_post. however, things remained a mess, in particular static vs. shared. consequently, the commit merges all related feature files. the actual config resolution is put in a separate feature file, so it can be loaded by resolve_target if that happens to be loaded early on. Change-Id: Ie30e7c63cabe9409a3263ca1650e323a870926f2 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| | * Blackberry: Specify QMAKE_LFLAGS_RPATHLINK for BB10 platformTobias Koenig2013-02-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | The linker from the BBNDK needs -rpath-link to resolve transitive dependencies, like on Linux. Change-Id: I85726841ea15070e8661b9bdbffaf950fdd247e9 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| | * Doc: Fixed value descriptions for enum QAbstractSocket::SocketError.Marcel Krems2013-02-181-4/+4
| | | | | | | | | | | | | | | Change-Id: I7ef5ff53ac838a7793852c1eadd9610e630cae43 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | | Check for network module when building according examplesOliver Wolff2013-02-213-2/+6
| | | | | | | | | | | | | | | | | | Change-Id: Id17ba13988e37fa583948f4861b44bb1f05bf375 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | | Reintroduce use of CTFontCopyDefaultCascadeListForLanguages on Mac OSTor Arne Vestbø2013-02-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we always build against an SDK, we can be sure that the function declaration for CTFontCopyDefaultCascadeListForLanguages is available in the CoreText CTFont.h header. Change-Id: I304a701548833e5c7774b4fd2e72eb8c541dd103 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | | Relax unix compile.test to check the expected file existsRay Donnelly2013-02-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When cross compiling between two systems that use different program file formats (such as PECOFF vs ELF) -x cannot be relied upon, so -f should be used instead. Change-Id: I4c80646b2b1fbdd6072589d4d9e852adda83424a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | | syncqt: Use /usr/bin/env perl not /usr/bin/perlRay Donnelly2013-02-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This is because on some systems, /usr/bin/perl is too old to run syncqt. MSYS is one such system. Change-Id: I3e1aa2db557cc3919618350775e7218ae05aa93f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | | Allow QHostInfo::lookupHost() with no receiver to warm the DNS cache.Richard Moore2013-02-201-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | This change lets you call QHostInfo::lookupHost() with a null receiver in order to warm up the DNS cache. This allows you to try to get the DNS request in flight early. Change-Id: Icfdd28146479aa534ae9ceb472f75e08aaa39cd2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QGtk2XxxDialogHelper: cleanup unnecessary mutable keywordsJ-P Nurmi2013-02-201-3/+3
| | | | | | | | | | | | | | | Change-Id: Ic0b72661e561e20d50de7aca6d8a681975100b56 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Gtk Style: Workaround to get combo box item style from QtQuick ControlsGabriel de Dietrich2013-02-201-1/+2
| | | | | | | | | | | | | | | Change-Id: I0f39269d08d58e0ee1f5b09b90e11ab1030a3932 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* | | Fix path separators in archives created by QZipWriterPavel Mogylevskiy2013-02-201-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was not possible to extract data from the archive on OSX which was created on Windows platform because of wrong separators. Archive was created on Windows via QZipWriter and opened on OSX with QZipReader. It consisted of a lots directories and subdirectories with files. The solution is to use '/' separator for internal representation. Change-Id: Ic0837ca184bb6188129d53b587a5df2ec61e4e05 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | | Activate window before replay mouse press eventjian liang2013-02-201-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Activate the window of the widget under mouse pointer before replay mouse press event. Change-Id: I9e699374accf108aa49b2a3c73d5e76631100dfd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | | Check for printsupport module when building according exampleOliver Wolff2013-02-201-0/+1
|/ / | | | | | | | | | | Change-Id: Ie98418c0640e2fe7cb829988f9194cb620b71629 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | QProgressBar: Use localized numbers and percent sign.Friedemann Kleint2013-02-203-10/+75
| | | | | | | | | | | | | | | | Task-number: QTBUG-28751 Change-Id: I56aca3e0ee9c579297110c69d2d832c7a57f1ae7 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Karim Pinter <karim.pinter@digia.com>
* | Fix QTBUG-18934 by checking return value of qt_safe_pipeSimeon Bird2013-02-201-9/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QProcess->start() is called, Qt creates a pipe to the process to get its exit value and output. It does this with qt_create_pipe, which calls qt_safe_pipe. qt_safe_pipe, on failure, returns 1. qt_create_pipe then sets errno and returns void. The calling function, QProcessPrivate::startProcess, does not check errno, and thus continues to fork the process, assuming the pipe has been created successfully. The child process then has no way to pass its exit value to the calling process, since the communication pipes it would normally use do not exist, and thus when it exits it becomes a zombie. As a bonus, if waitForFinished is called on a broken process, a crash results because it is trying to wait on a pipe which does not exist. The fix makes qt_create_pipe return an integer, and QProcess::startProcess check the return value, set processError and not create the child process. Task-Number: QTBUG-18934 Change-Id: I2e1effdd0617be5b8c5492bcbcf5f2b1584b2241 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Always build against an SDK on Mac OSTor Arne Vestbø2013-02-201-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Building against the local /System can cause build issues when for example the headers have not been updated to reflect the system version. The system headers are updated as part of installing the command line tools from within Xcode, not as part of the system update process, so we might think we are on 10.8, but the system headers will not reflect that, and we get build breaks. It's preferable to always build against an SDK, so that we have a known state for the OS X libraries and headers. We choose the latests SDK by default, as recommended by Apple. Change-Id: I79028217ff3a9cbe45aa4cb05ed6dd90388dee50 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | Don't run qmake test that requires macx makespec on non Mac OS platformsTor Arne Vestbø2013-02-201-5/+4
| | | | | | | | | | | | | | And update test to use the clang makespec now that it's the default. Change-Id: Ifdd34c4220ad76f60b91fd6ef39d189f0f6525f9 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Add an encrypted() signal to QNetworkAccessManager and QNetworkReply.Richard Moore2013-02-1916-0/+126
| | | | | | | | | | | | | | | | | | | | | | Add an encrypted signal to QNAM and QNetworkReply to allow applications to perform additional checks on the certificate chain beyond those done as part of the standard SSL validation. This allows things like certificate change notification to be implemented for QNAM as they can be for QSSLSocket currently. Change-Id: I693e3e6fec8b7040379b7e7f1f819550e6b2617f Reviewed-by: Peter Hartmann <phartmann@rim.com>
* | Add support for intermediate certificates to server sockets.Richard Moore2013-02-1910-6/+227
| | | | | | | | | | | | | | | | | | | | Add intermediate certificates to our server sockets, and to our client certs. Change-Id: Ib5aa575473f9e84f337bebe35099506dd7d7e2ba Task-Number: QTBUG-19825 Task-Number: QTBUG-13281 Reviewed-by: Peter Hartmann <phartmann@rim.com>
* | Store the local certificate in a QList.Richard Moore2013-02-195-11/+47
| | | | | | | | | | | | | | | | | | Instead of storing a single QSslCertificate for a the local cert, store a list of them. This will allow us to handle server sockets that use a certificate that is not issued directly from the CA root in future. Change-Id: I9a36b9a99daa9c0bdd17f61b4ce1a7da746f2e96 Reviewed-by: Peter Hartmann <phartmann@rim.com>
* | Check for network module when building according benchmarksOliver Wolff2013-02-192-2/+2
| | | | | | | | | | Change-Id: I5e4cb3ef6fdb5de772d13029c11170d0f0eb3ee5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Removed unneeded printsupport dependency from qpainter autotestOliver Wolff2013-02-192-4/+0
| | | | | | | | | | Change-Id: I906726a3d77572b9e054adbc68c4755dd663ad87 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Check for printsupport module when building according auto testsOliver Wolff2013-02-191-1/+2
| | | | | | | | | | Change-Id: I9bade7b31c75331190960cb14dee6840e3582c50 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Check for network module when building according auto testsOliver Wolff2013-02-197-2/+28
| | | | | | | | | | Change-Id: I68013bf8e07be8d202b3253f997d4f4db05335a4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>