summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
* Distinguish between 'mac' and 'macx' qmake scopesTor Arne Vestbø2013-03-052-2/+2
| | | | | | | | | | | | | | The former applies both on Mac OS X and iOS, but 'macx' is specific to Mac OS X. ios.conf and macx.conf now share most of their settings in the common mac.conf. We set the default QMAKE_MAC_SDK before loading mac.conf, so that any overrides in the device config will apply afterwards. This means configure's mkspec parsing will be able to read the QMAKE_MAC_SDK. Change-Id: I0c7e26a6a0103e19b23ef152aa9e4ab461cee632 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Introducing the Qt Android portPaul Olav Tvete2013-03-056-11/+2024
| | | | | | | | | | | | | | | | | | | | | Based on the Necessitas project by Bogdan Vatra. Contributors to the Qt5 project: BogDan Vatra <bogdan@kde.org> Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> hjk <hjk121@nokiamail.com> Oswald Buddenhagen <oswald.buddenhagen@digia.com> Paul Olav Tvete <paul.tvete@digia.com> Robin Burchell <robin+qt@viroteck.net> Samuel Rødal <samuel.rodal@digia.com> Yoann Lopes <yoann.lopes@digia.com> The full history of the Qt5 port can be found in refs/old-heads/android, SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Add QProxyStyle(QString key) constructor for convenienceJ-P Nurmi2013-03-042-5/+25
| | | | | | | | | | | | | | | The QStyle implementations are becoming private, so the following slightly verbose pattern seems to be now repeated a lot: new QProxyStyle(QStyleFactory::create("windows")) This change adds an alternative, more convenient constructor for this particular use case: new QProxyStyle("windows") Change-Id: I97ded597a0fd3225a6354ebea0abb367237430af Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Fusion style: Remove unnecessary widget castGabriel de Dietrich2013-03-041-6/+4
| | | | | Change-Id: I8d7fd79b396525ee00fb0ba95faf0c95b5d2899a Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Merge "Merge branch 'ios' into dev" into refs/staging/devTor Arne Vestbø2013-02-283-4/+4
|\
| * QFusionStyle: Fix crash on iOSRichard Moe Gustavsen2013-02-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | First of all, the ifdef section was meant for osx, and not ios. Second, a platform theme does not necessarily need to override the palette function, which will return 0 by default. Change-Id: I5a28f4ee1020c9253d0803c9d962c6a058e5358c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * iOS: Don't reference QMacStyle from QStyleOption as we don't build itRichard Moe Gustavsen2013-02-261-1/+1
| | | | | | | | | | | | | | | | QMacStyle is not buildt as a part of iOS. So make sure we dont reference it from QStyleOption Change-Id: I98e779c576d0607402e45a19b457144a6bdfc73b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: fix build issue, dont link against cocoaRichard Moe Gustavsen2013-02-261-1/+1
| | | | | | | | | | | | | | | | | | Make sure the libraries dont depend on Cocoa. This will be picked up by libtool, and make all apps and examples link against cocoa too (which will ofcourse fail) Change-Id: I5654bb08c4ed376fc7ee74da422d903270a8af38 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* | Update the display to reflect changes by input methodPaul Olav Tvete2013-02-271-1/+2
| | | | | | | | | | | | | | Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Change-Id: If3804f2a514ba4635f841de6377f2b328a4e928a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | Enablers for input methods on AndroidPaul Olav Tvete2013-02-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Adding QInputMethod::inputItemRectangle()/setInputItemRectangle(). Known bugs: inputItemRectangle() not implemented for graphics view items; inputItemTransform() implementation was already missing. Change-Id: I72b1d43350e93858a2b374de3f2199500a96dc79 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: BogDan Vatra <bogdan@kde.org> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Add multi-line input method hintPaul Olav Tvete2013-02-271-1/+1
| | | | | | | | | | | | | | | | Enabler for input on Android. Change-Id: I44670b95b35f773814125c5d35c67e9713567813 Reviewed-by: BogDan Vatra <bogdan@kde.org> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | Fix some warnings that have crept up since I last fixed warningsThiago Macieira2013-02-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | qgtkstyle.cpp:3177:103: error: suggest parentheses around ‘&&’ within ‘||’ [-Werror=parentheses] qcups.cpp:517:66: error: ‘QString::QString(const char*)’ is deprecated itemviews.cpp:795:13: error: unused parameter ‘actionName’ [-Werror=unused-parameter] qeglconvenience.cpp:268:9: error: ‘cfg’ may be used uninitialized in this function [-Werror=maybe-uninitialized] Change-Id: I9b8a175ff1c2ddc443363e08b92e09cf7c2f91cf Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: John Layt <jlayt@kde.org> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QGraphicsView - emit signal when rubber band changes.Thorbjørn Lund Martsum2013-02-263-3/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | The rubberBandRect function is nice to have, but this patch makes it easier to track the rubber band by emiting a signal on change. That makes it easier (and less clumsy/hacky) to show information related to the rubber band. Change-Id: If65eb85d743a1804be3fdb823a821423411e9745 Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | QGraphicsView - add function to get RubberBand rectThorbjørn Lund Martsum2013-02-262-1/+23
|/ | | | | | | | | | | | | | In many situations it is handy to know the rubberband rect. There are many situations where we want to show something related to the rubberband. Regardless how that is done the rubberband area is needed. (Not having this is a flaw that can force people to do make a customized rubberband just to get this information) Change-Id: Ia854db4c0022b6a97b150af2b4bb78fd5e974991 Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Giuseppe D'Angelo2013-02-215-34/+48
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-205-34/+48
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| | * 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>
| | * Fix focus handling of native child widgets in xcb.Gunnar Sletta2013-02-191-1/+17
| | | | | | | | | | | | | | | | | | 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-191-12/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| | * Doc: Removed reference to deprecated \badcode command.Jerome Pasion2013-02-191-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | -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-191-14/+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>
* | | 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>
* | | 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>
* | QProgressBar: Use localized numbers and percent sign.Friedemann Kleint2013-02-202-10/+39
| | | | | | | | | | | | | | | | Task-number: QTBUG-28751 Change-Id: I56aca3e0ee9c579297110c69d2d832c7a57f1ae7 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Karim Pinter <karim.pinter@digia.com>
* | Doc: Fix some typosTakumi ASAKI2013-02-192-3/+3
| | | | | | | | | | Change-Id: I7f3a8cd27f1d1cb944599cff40024f3521a3ec34 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-1810-13/+36
|\| | | | | | | | | | | | | Conflicts: src/widgets/styles/qmacstyle_mac.mm Change-Id: If8326db9e7da3cbf45dbf7475fdff9915c7723b1
| * Remove QGraphicsProxyWidget crash in QWidget::hasFocus().Andreas Aardal Hanssen2013-02-181-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A QGraphicsProxyWidget embeds a focusable widget (e.g., QComboBox). When deleting QGraphicsProxyWidget, the QWidget will be deleted. The QWidget clears focus, and QWidget::hasFocus() is nice enough to check if its embedder QGraphicsProxyWidget has focus - because if it does, it wants to clear focus from that item too. QGraphicsItem's destructor already calls clearFocus() however, so this call is unnecessary; we can simply stop clearing the QWidget's focus in its destructor if the widget is embedded. QWidget::hasFocus checks QGraphicsItem::hasFocus (on the proxy widget that is being deleted), which checks its d_ptr, which is gone. It's generally unfavorable for an object deleting a child to have the child go back and poke at the parent object, which is in many ways what's happening here. Task-number: QTBUG-29684 Change-Id: I1e52bf28f47b2824752de28dff2d0de13733ee48 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * Fix crash in somewhat faulty QGraphicsProxyWidget unit test.Andreas Aardal Hanssen2013-02-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The crash is deep inside QGraphicsSceneIndex, which calls boundingRect() on the item that is being destroyed. The vtable is busted, resulting in a pure virtual function call. There's a more proper fix for this lying around somewhere but in this particular case we can get the test to not crash by guarding based on whether the item has a cursor set. This also happens to speed up QGraphicsItem destruction a bit so I figured it's a win-win situation to fix it. This case will still crash if the item actually had a cursor set but that makes the case even more narrow. Generally speaking, creating objects partially on the stack and partially on the heap, mixing parent/child relationships and then deleting one of the heap objects is quite sketchy and I doubt it happens much outside of this unit test. Change-Id: I25393d2cafb1256269ab6681519bd554cc380bfd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * Track last visited directory for native file dialogs as well.Friedemann Kleint2013-02-153-0/+9
| | | | | | | | | | | | | | | | Task-number: QTBUG-28855 Change-Id: Ia7af8540d2a453dfeabd700f44c282c48a239834 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| * Don't generate documentation for classes which are not availableAndy Shaw2013-02-151-0/+9
| | | | | | | | | | | | | | | | | | The Mac specific classes in QtWidgets are currently excluded and aren't available for use in Qt 5.0.x. In Qt 5.1 they will be available via QtMacExtras, when the widgets.pri is changed then this can be removed. Change-Id: I04fbb5204cbd5658efaf24171c5f8dac10fbfd35 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| * Fixed mouse double click events not bubbling up to parent widgets.Samuel Rødal2013-02-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The bug was caused by changes b371f3f943703840d0dfbe30505018bcca06e260 and 3bb902495291c50a2f06e8e03a62a647db3e5cd4, which removed the event forwarding that QWidget::mouseDoubleClickEvent() used to do without making sure to call ignore() on the event like QWidget::mousePressEvent() does. Task-number: QTBUG-29680 Change-Id: I98af8052ad3dd1dea15d07a710aa9212ef5e4a68 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * Mac: Fix transient scroll bar appearance.Christoph Schleifenbaum2013-02-131-7/+7
| | | | | | | | | | | | | | | | | | | | Transient scroll bars should never be used outside of scroll areas, since they would be unusable. Task-Number: QTBUG-29389 Change-Id: Ie52d2093a4ab66085300a19ca9a1b32f13a29e79 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| * QSystemTrayIcon: fix the activation signalJ-P Nurmi2013-02-131-1/+1
| | | | | | | | | | | | | | | | | | QObject::connect: No such slot QSystemTrayIcon ::emitActivated(QPlatformSystemTrayIcon::ActivationReason) Change-Id: I64dda8fb863de10d8b1d1cda1b8e6a513238b245 Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * Fixed QT_NO_ACCESSIBILITY build.Bjoern Breitmeyer2013-02-132-10/+4
| | | | | | | | | | Change-Id: I14229753fc2e3b54da8a285ae9d27201b73e24be Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Remove ifdefs for supporting Mac OS <= 10.5Tor Arne Vestbø2013-02-182-5/+1
| | | | | | | | | | | | | | | | Qt5 requires Mac OS 10.6, so we can remove checks such as if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 Change-Id: Iea21727a277291148704ecf9677ed0b68c24920f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Giuseppe D'Angelo2013-02-1720-49/+402
|\ \ | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-1420-49/+402
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/concurrent/doc/qtconcurrent.qdocconf src/corelib/doc/qtcore.qdocconf src/corelib/global/qglobal.h src/dbus/doc/qtdbus.qdocconf src/dbus/qdbusmessage.h src/gui/doc/qtgui.qdocconf src/gui/image/qimagereader.cpp src/network/doc/qtnetwork.qdocconf src/opengl/doc/qtopengl.qdocconf src/opengl/qgl.h src/plugins/platforms/windows/qwindowswindow.cpp src/printsupport/doc/qtprintsupport.qdocconf src/sql/doc/qtsql.qdocconf src/testlib/doc/qttestlib.qdocconf src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf src/widgets/doc/qtwidgets.qdocconf src/xml/doc/qtxml.qdocconf Change-Id: Ie9a1fa2cc44bec22a0b942e817a1095ca3414629
| | * Don't calculate the install prefix again in the extra cmake files.Stephen Kelly2013-02-131-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | The parent file has already set a variable for it. Change-Id: I90ddda355a580f44ea7e1e44cc7df717fa0a8b7b Reviewed-by: Alexander Neundorf <neundorf@kde.org> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
| | * When expanding up the tree, there is no need to expand above root.Stephen Kelly2013-02-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The index set by setRootIndex is the root of the visible part of the model. Expanding more than that is not needed. Change-Id: I0015e313ef046ff63c67338c4f00c37e1aa71ca7 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
| | * QScroller was introduced in Qt 5.0, not 4.8Laszlo Papp2013-02-051-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-29365 Change-Id: I11804bf51f1537dcd7f40d7ec02022d8fb76c1e8 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * Added missing null pointer check in QMacStyleJens Bache-Wiig2013-02-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | QMacStyle::subElementRect could crash if SE_LineEditContents was used without providing a widget pointer. Task-number: QTBUG-27033 Change-Id: I15ef07ae1310be4257a8480d392f98dbf02168d3 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| | * fix doc page urlsOswald Buddenhagen2013-02-041-1/+1
| | | | | | | | | | | | | | | | | | | | | they are versioned nowadays Change-Id: I839db633e9d7d63c9d445f8e914b529bd7ce60a2 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * Merge "Merge branch 'release' into stable" into refs/staging/stableSergio Ahumada2013-02-018-13/+356
| | |\
| | | * Merge branch 'release' into stableSergio Ahumada2013-01-318-13/+356
| | | |\ | | | | | | | | | | | | | | | Change-Id: If3aa1b7ed75082eff6e9761ad82c83691135ed60
| | | | * Fix some more old references and links to NokiaSergio Ahumada2013-01-284-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-28156 Change-Id: I9ba0d6f1e92103219bec1e61e716b6b2f269a8ad Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | | * Doc: corrected path used for snippets.Nico Vertriest2013-01-251-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added "../../../" to snippet command in gestures.qdoc Task-number: QTBUG-29101 Change-Id: Ie1d58355f43bcd939f6a178c64ab008b288af747 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | | * Doc: added snippet file macmainwindow.mmNico Vertriest2013-01-252-1/+348
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Corrected path for snippet command Now refers to doc\snippets Removed trailing space Moved macmaindow.mm to src/widgets/doc/snippets Task-number: QTBUG-29101 Change-Id: If60c31909b2f5efad10ac8b735164a80522dcf62 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | | * Doc: deleted short paragraph referring to non-existing snippetNico Vertriest2013-01-251-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reference to section 1, which does not exist. Task-number: QTBUG-29101 Change-Id: Ifd5ac58080033ea1d3f0a587f48f9510f24e75b1 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * | | substitute fixed version numbers in qdocconf files with variablesOswald Buddenhagen2013-02-011-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ie57765c10a8e90d6fc74ee5a8fd84bfc7cd8bcf2 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>