summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Android: extract complete actionBarStyleJ-P Nurmi2014-06-051-1/+36
| | | | | | Task-number: QTBUG-39215 Change-Id: I67d89ac28b73bc52cd2ed952cfc8db21437d6e3b Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Assign a parent to QConnmanServiceInterface instancesJakub Adam2014-06-051-1/+1
| | | | | | | Makes sure they are properly deleted. Change-Id: I60a64c43456308ad9b6d8d0e3e8cbef8c2afb43e Reviewed-by: Aaron McCarthy <mccarthy.aaron@gmail.com>
* Mac Style: Don't crash when rendering PE_IndicatorBranch without widgetGabriel de Dietrich2014-06-051-1/+2
| | | | | Change-Id: I45784af3738807ab6753b67a5b103a65d4e28084 Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
* Android: extract switchStyleJ-P Nurmi2014-06-041-2/+46
| | | | | | Task-number: QTBUG-39215 Change-Id: I53c435b80ea2603eb942eac3307654dd0fc0ae12 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Android: extract styles for ToolBar & ToolButtonJ-P Nurmi2014-06-041-0/+4
| | | | | | Task-number: QTBUG-39215 Change-Id: I1d424436e50f96385b5581444b260c3e27e7291e Reviewed-by: BogDan Vatra <bogdan@kde.org>
* QSaveFile: error out in open when the file is a directoryOlivier Goffart2014-06-041-0/+6
| | | | | Change-Id: Ifb1697fedf6dd28fe317282c8b4824f34ec61981 Reviewed-by: David Faure <david.faure@kdab.com>
* Fix internationalization of "txt File" in QFileDialogLasse Liehu2014-06-031-2/+4
| | | | | | | | Some languages (for example Finnish) need to customize punctuation and capitalization in this case. Change-Id: I9720626263f061adc7972bff18bcb59f2f2b382f Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Windows: Emit screen changed signal of top level windows.Friedemann Kleint2014-06-033-23/+60
| | | | | | | | | | | | Detect screen changes within virtual desktop in handleGeometryChange(). Move away windows from screens being destroyed. Task-number: QTBUG-36659 Change-Id: I5bf4842cc21873a93bce0f70929308f11bd4d2fd Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Update for the newest Darwin-family operating systems.Jake Petroules2014-06-033-1/+22
| | | | | Change-Id: Ieca4b3841d0d652b5e9b819209f883773c2e7c74 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* RCC: Avoid some needless to/fromLatin1 cyclehjk2014-06-031-10/+11
| | | | | Change-Id: I70f330ee5ce083fb90f0c6d70e5b99063bc6e974 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Android: Introduce SimpleJsonWriterBogDan Vatra2014-06-031-38/+100
| | | | | | | It speeds up the extraction and it reduces memory consumption. Change-Id: I188f7efbb826343e5bd75f63ace36522f0d7a24d Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Android: add support for extracting AnimationDrawableJ-P Nurmi2014-06-031-0/+26
| | | | | | | | Required for implementing indeterminate ProgressBar Task-number: QTBUG-39215 Change-Id: I128eaf2879dd493da86541767a870ea786a5ddf9 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Remove tracking of the current fboLaszlo Agocs2014-06-023-31/+20
| | | | | | | | | | | | | | | | | When binding an FBO directly via glBindFramebuffer, the QOpenGLContext's internal current_fbo, that is maintained by QOpenGLFramebufferObject, becomes out of sync. This will lead to QOpenGLFramebufferObjects thinking they are still bound. Such state tracking should be avoided since it is becoming increasingly difficult to keep it consistent between the various OpenGL API wrappers and will never be robust enough when the application changes the state by directly calling OpenGL functions. current_fbo is now removed in QtGui. QtOpenGL is not touched. Change-Id: Id809aab1306c9486d1e2ba3bb5aa93593659e920 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* qdoc: Give documenter more control of linkingMartin Smith2014-06-0121-609/+816
| | | | | | | | | | | | | | | | | | | | | | | | | | This update is preparation for implementing the actual task described in the bug. To implement it required converting the QML type node and the QML basic type node to be first order tree nodes instead of subtypes of the documentation node. This cleans up a lot of messy logic in some places. It was also necessary to split the getLink() function in the html output generator into two functions, one still called getLink(), which handles the \l command, and one called qetAutoLink() which is called for generating auto links. This should make qdoc run faster. The basic infrastructure was also added for parsing the string in the square brackets for the \l command. There will be a further update to complete this task. Note that some autolinks might not be generated due to this change. I haven't seen any yet, but I believe there will be some. This can be fixed later, if it is a problem. Task-number: QTBUG-39221 Change-Id: I8135229984398408205ba901b9ef95ceac74683c Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Accessibility: Fix select state usageFrederik Gladhorn2014-05-313-4/+3
| | | | | | | | | | The selectable/selected states refer to items in a list and similar, do not interpret them as text selection states. Without this change NVDA for example announces text edits as selected which makes no sense and which it doesn't do for native text items. Change-Id: Ib1d109523bd4cc2b9b40ace8a8c3d7d3a7f9f25c Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Do not always fallback to bitmap printing when printing alpha.Jan Arve Saether2014-05-313-17/+35
| | | | | | | | | | | | | | | | The previous code resulted in that all regions that had some alpha blending content had to be rasterized as bitmaps. With this patch, we only need to fallback to proper alpha blending if there is a background content to blend against. If there is no background content we simly assume that the background is white (which happen to be the most common paper color). It will then be treated as a solid background. Task-number: QTBUG-33548 Change-Id: I9d2c9be95a701704cdb3724480421db49b4cdd98 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* QSaveFile: follow symbolic linksOlivier Goffart2014-05-302-3/+16
| | | | | | | | | [ChangeLog][QtCore][QSaveFile] Now follows symbolic links while writing to a link instead of replacing the link with the contents. Change-Id: I5afd519cb9f96ae68fa4c23c33a18de75671a301 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: David Faure <david.faure@kdab.com>
* Accessibility: Fix rect for QComboBox and QRadioButtonFrederik Gladhorn2014-05-304-0/+23
| | | | | | | | | This is especially relevant on mobile devices where screen readers often send mouse clicks to the middle of the object. Task-number: QTBUG-39100 Change-Id: I5972f21dd12434601d86136215ab9b61248c9691 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Dummy window for creating GLX context should be override redirectMartin Gräßlin2014-05-301-1/+2
| | | | | | | | | | | | | | | Without having the dummy window being override redirect Qt might confuse window managers. Window managers might react on the create notify event, but there is no reason to do anything with the window as it is most likely already destroyed at the time the window manager receives the create notify event. By marking the window as override redirect we indicate to the window manager that they can ignore it. Change-Id: I35259436da4548f4190b92de412fb0de1d2e8077 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Make QWeakPointer's ctor constexprGiuseppe D'Angelo2014-05-291-1/+1
| | | | | Change-Id: Ia23406ee80e83071a129606b76f78e2b6d0cf32e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QTimer: add convenience singleShot methods for functorsDario Freddi2014-05-282-4/+245
| | | | | | | | | | | | | | | | | | | | | This brings QTimer::singleShot on par with QObject::connect in terms of the new Qt5 syntax. With this patch, it is now possible to connect singleShot to a member pointer, a static function pointer and a functor (with or without a context object). The short code path for 0 msec is not yet implemented - it will require further modifications to QMetaObject before it will be. An additional SFINAE on the new singleShot overloads had to be implemented to prevent tricking the compiler into believing const char * might be a function pointer. [ChangeLog][QtCore][QTimer] Implemented new style connect syntax, including functors, in QTimer::singleShot Task-number: QTBUG-26406 Change-Id: I31b2fa2c8369648030ec80b12e3ae10b92eb28b4 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Android: extract View_scrollbarDefaultDelayBeforeFadeJ-P Nurmi2014-05-271-0/+3
| | | | | | Task-number: QTBUG-39215 Change-Id: I8cc6e16a7155710ad322dc884ccbb194ca7d5b67 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Add support for single-file multi-target intrinsics in QtThiago Macieira2014-05-272-19/+105
| | | | | | | | | | | | | | | | | | | | | | | GCC 4.9 now allows us to #include any and all intrinsics headers, not just the one for which we're compiling code, a behavior that ICC and MSVC have had for some time. With that, we're able to have the functions for different targets in the same source file. See the GCC manual: http://gcc.gnu.org/onlinedocs/gcc/Function-Multiversioning.html This functionality is notified by the QT_COMPILER_SUPPORTS_HERE(XXX) macro, which indicates that all the intrinsics from QT_COMPILER_SUPPORTS_xxx are available and enabled. To complement, a QT_COMPILER_SUPPORTS(XXX) macro is also added. Unlike ICC and MSVC, GCC requires a special function attribute, which will also cause code optimization. That's the QT_FUNCTION_TARGET macro. Note: because of the absence of the target attribute, ICC and MSVC will not generate instructions with the VEX prefix unless they only exist with the VEX prefix or if -mavx / -arch:AVX are enabled. Change-Id: I0c1880c20324bd8e0fc68a863e36d1fa7755dff0 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
* Android: extract scrollViewStyleJ-P Nurmi2014-05-261-0/+19
| | | | | | | Task-number: QTBUG-39215 Change-Id: I8d4155aa4db5d807d1846c5741c01693af24f846 Reviewed-by: BogDan Vatra <bogdan@kde.org> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Use accurate title/status bar gradient colors on OS X.Jake Petroules2014-05-261-11/+31
| | | | | | | QMacStyle now uses proper system colors when drawing status bars. Change-Id: I618e485a2a68a484f7c8cb5635cd2bf529126c02 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Android: ensure unique IDs when extracting style data for layersJ-P Nurmi2014-05-261-2/+5
| | | | | | | | | | Indeterminate progress drawables can consist of multiple layers that don't necessarily have an ID. Ensure that the extracted file names contains unique IDs to avoid extracted layers overwriting each other. Task-number: QTBUG-35081 Change-Id: I3dc48bf363510ded9b955aa51fa479c607541169 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Android: extract SeekBar_thumbOffsetJ-P Nurmi2014-05-261-0/+6
| | | | | | Task-number: QTBUG-39215 Change-Id: I2a7b878b1a86280c92a445826f196de3245fd4e2 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Android: extract progressBarStyle(Small|Large)J-P Nurmi2014-05-261-0/+3
| | | | | | | | The indeterminate drawable is used for QtQuick Controls BusyIndicator Task-number: QTBUG-35081 Change-Id: Iecdc6e80444b5134ec1fa61916c7ac1612cd275f Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Android: add support for extracting RotateDrawableJ-P Nurmi2014-05-261-0/+38
| | | | | | | | The rotation attributes are required for implementing BusyIndicator. Task-number: QTBUG-39215 Change-Id: Ief51bf921f61b3b030f26d377b4bfd13913af6c1 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Fix support for depth/stencil textures in QOpenGLTextureGiuseppe D'Angelo2014-05-262-8/+248
| | | | | | | | | | | | | | | When allocating (mutable) storage for a texture, OpenGL mandates that the client-side format and pixel type "match" the internal format. That needs to happen even if we are not actually uploading anything (because we're passing NULL as the data parameter and no PBO is bound). This means that we need to pick a compatible format/type and not just pass GL_RGBA / GL_UNSIGNED_INT. In turn, it implies adding new enum values to the various format/type enums. Change-Id: If40c63b1d44764b3be131dd1b41d13983a19ae45 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Introduce QOpenGLTexture::target()Giuseppe D'Angelo2014-05-242-0/+13
| | | | | | | | | | To extract the target of a given texture object. Somehow this accessor was missing. Change-Id: Ie43366bed3627a20204600e68e426b55abf37af6 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Guarantee QTextEngine::findItem() returns -1 for invalid strPosKonstantin Ritt2014-05-232-2/+7
| | | | | | | | ...and check the returned value where it may cause undefined behavior (i.e. negative amount of items or iteration from -1 to n). Change-Id: Ib7bd9ab178526df45b792ad48b91ebbab6be861a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Load winsys and gl dynamically in the windows pluginLaszlo Agocs2014-05-2219-279/+1871
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The dynamic builds (-opengl dynamic) are now functional on Windows. In such a build no components in Qt link to any OpenGL libraries directly and qmake will not automatically add any such libraries to the applications' makefiles. Instead, the libraries are chosen and loaded during runtime and applications are expected to use QOpenGLFunctions instead of direct OpenGLfunction calls. Set the environment variable QT_OPENGL to desktop or angle to skip testing and force the given implementation. The application attributes (AA_UseOpenGLES and such) are also taken into account. The testing logic is same as before: We try to load opengl32 and resolve a shader related function. If this fails, ANGLE is chosen. This allows utilizing full desktop OpenGL on systems that have proper drivers, while a transparent fallback to ANGLE will be done automatically for systems that don't. The latter includes also remote desktop connections. Software rendering via Mesa llvmpipe is supported too. The fallback is automatic on systems where the desktop test fails and ANGLE fails to load or initialize (e.g. due to missing libs like d3dcompiler), as long as a suitable patched build of Mesa is available. [ChangeLog][QtGui] Dynamic OpenGL implementation loading is now supported on Windows. This requires Qt to be configured with -opengl dynamic. Task-number: QTBUG-36483 Change-Id: Ie8bb25a6d55b3a1609b00150aeccd909aec27313 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Android: Extract data for native style on startupBogDan Vatra2014-05-227-4/+1625
| | | | | | | | | | | | | | | | | When Ministro is not in use, we need to extract style information on startup in order for the native Android style to work. The code to extract data from the device is contributed from the Ministro project. [ChangeLog][Android] Enable using native style also when Ministro deployment mechanism is not in use. Task-number: QTBUG-36019 Change-Id: I2afef5219b4e8fbb2f3e387cbc5e570da1f41011 Reviewed-by: BogDan Vatra <bogdan@kde.org> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Fix a crash when using QtQuickControls with core profileBerthold Krevert2014-05-221-4/+25
| | | | | | | | | | QOpenGLContext::versionFunctions returns 0, if a QOpenGLFunctions object for a legacy OpenGL version is requested while using the core profile. This leads to a crash QOpenGLContextPrivate::maxTextureSize() Change-Id: I32845643094336cebcc666806a411524fe3e869b Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Simon Hausmann2014-05-2256-263/+597
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-05-2256-263/+597
| |\ | | | | | | | | | Change-Id: Ia36e93771066d8abcf8123dbe2362c5c9d9260fc
| | * Trigger repaint of window when toggling unified toolbar on or off.Jake Petroules2014-05-222-0/+4
| | | | | | | | | | | | | | | Change-Id: I5204e5c65ae3cf84459cc62f587ecccd855e02f8 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| | * Mark the missing QDnsLookup constructor as \internalAndy Shaw2014-05-211-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | Implementation will be added for Qt 5.4.0 as it cannot be done sooner. Change-Id: I4d2626416fae99339988cd994653ce7ec753f081 Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Fix for bindvalue(int) memory allocation problemKarim Pinter2014-05-211-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSqlResult::bindValue(int index, ...) is increasing the memory usage when called multiple times for same index Task-number: QTBUG-33169 Change-Id: I4f26125f6bb994bb430dc054df5761b6ddf03075 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Mark Brand <mabrand@mabrand.nl>
| | * Fix broken QPlainTextDocumentLayout after removing charsAxel Rasmussen2014-05-211-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes an issue where, if characters were removed from several blocks in a single edit, the document layout would end up being corrupted since the document layout manager wouldn't re-layout the proper number of text blocks. Task-number: QTBUG-30051 Change-Id: Idf3a6f567120e6a5dbebf1f65f685d374219328a Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
| | * Cocoa: Do not process ampersands in menus twice.Christoph Schleifenbaum2014-05-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When syncing between QAction and native NSMenuItems, the ampersands (mnemonics) were removed twice. This lead to double ampersands being removed instead of replace with single ones. Task-number: QTBUG-37933 Change-Id: If1d9cd247b467472647b22b38460b44b03f13d82 Reviewed-by: Liang Qi <liang.qi@digia.com>
| | * Android: Fix crash caused by unintentionally modification of env data.Christian Strømme2014-05-211-9/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The data given to putenv(3) becomes a part of the environment, as described in SUSv2, so If the data is unintentionally modified or deleted the consequence can be fatal. In previous versions of Android, the putenv(3) implementation made a copy of the data, so this bug has gone unnoticed. Task-number: QTBUG-39042 Change-Id: I20559c848fded10eeae54c4700ba0f4669fe49fc Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
| | * iOS: don't report negative selection ranges for backspaceRichard Moe Gustavsen2014-05-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt sometimes report that the selection anchor is placed before the cursor when querying it for current selection. We need to accomodate for this when reporting current selection back to iOS, since it expects the range to always be positive. When pressing backspace, iOS will select the letter that should be deleted, and then call "deleteBackwards". If holding down backspace for a while, it will start selecting whole words instead. Since we reported negative ranges during this process, it caused artifacts and stray letters to be drawn. Task-number: QTBUG-39073 Change-Id: Ida9518307adce915adf49160b541a2f88637a0da Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| | * Disable hash seeding for bootstrapped toolsThiago Macieira2014-05-213-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Any bootstrapped tool is a development tool, by definition. So the effects of seeding the hash with a random number can cause the same source input to produce different binary results, which can throw some caching tools into disarray (like the Open Build System). There should be minimal fall out from the reduced protection against DoS. Since those are only development tools, "specially crafted" input implies the developer is DoS'ing him/herself. Note: the change to qhash.cpp applies to moc and rcc, which are always bootstrapped. Change-Id: I061ab52036e40627c0703f1bf881455cbf848f43 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>
| | * QDoc: Stop copying title string unnecessarilySze Howe Koh2014-05-201-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | "htmlTitle" never diverges from "fullTitle". Change-Id: Id1ce9005311bd86aa9803836168a2bebae6db65d Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * Make the use of -ffunction-sections more generic in QtThiago Macieira2014-05-191-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move it from bootstrap.pro into qt_module.prf so it will apply to any other bootstrapped libraries, like libQmlDevTools. Variable called "SPLIT_SECTIONS" because -fdata-sections could be added in the future, if it proves to be a benefit. Change-Id: I3fbb004f111620a84e58e9112e9bce3afd95631e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| | * Fix minor coding style issues in new code in QtCoreThiago Macieira2014-05-194-15/+16
| | | | | | | | | | | | | | | | | | | | | Change-Id: I444daf8e81257f55746f9d32fbcb60a2e1b69444 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Avoid accessing the internals of the SSL_CIPHER struct.Richard J. Moore2014-05-193-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid accessing the internals of the SSL_CIPHER struct since this has changed size etc. over time leading to binary incompatibilities. Task-number: QTBUG-32423 Task-number: QTBUG-23363 Change-Id: I8cb399484e3a62be7d511f4b8b22c876825c87d4 Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Daniel Molkentin <daniel@molkentin.de>
| | * Windows QPA: Remove dependency on swprintf_s() pulled in via ↵Friedemann Kleint2014-05-191-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | _com_error::ErrorMessage(). Task-number: QTBUG-35617 Change-Id: I0ad926ac564612ebd0eb38f16b3e69cbcd48e62f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>