aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| | * | Doc: Clarify object ownership of QObject* returned by QmlComponent::createKai Koehne2013-06-071-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Link to relevant section in QQmlEngine::ObjectOwnership. It's a big gotcha that a QObject * returned by a Qt method won't be deleted eventually, by default. Change-Id: I2367b7ae2673adc7fa181b759c79683091020462 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | * | add missing dependency check to widgets pluginXingtao Zhang2013-06-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QtQuick widgets plugin depends on both QtWidgets and QtQuick module, if do not check 'quick', there will be an error: "Project ERROR: Unknown module(s) in QT: quick" when running make if failed to check for QtQuick module due to no opengl/es1/es2 found during config test. Change-Id: I39d78b9cd9aa9c7f0acf79fdcfc06749ffc10e31 Reviewed-by: Liang Qi <liang.qi@digia.com>
| * | | Add QQuickTextEdit::append()J-P Nurmi2013-06-123-0/+194
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it possible to append text more efficiently than appending to the text -property, and also avoids weird rich text formatting issues with the latter approach. Task-number: QTBUG-31575 Change-Id: Id621773588b94e36f8f0b9eb6b22590e9db62811 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
| * | | fix Folderlistmodel "showDotAndDotDot" didn't show "."Tasuku Suzuki2013-06-105-14/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-29858 Change-Id: Ia736776e2587601a80d0aef22bb5cfce74040d39 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| * | | Add QQuickTextEdit::hoveredLinkJ-P Nurmi2013-06-079-7/+124
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I9d75a97c86e047742514f942cdb91c70f1d7a9a2 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| * | | Fix setRequestHeader to only append to headers added by user.Jonas Gastal2013-06-071-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This causes no behavior change. The reason for this patch is due to a planned change in QNetworkRequest that causes default headers to be added on creation. Change-Id: Ic233a12eb0aa35475300d65738ee26872349518b Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
| * | | Make TestHTTPServer header comparison order independent.Jonas Gastal2013-06-072-22/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The order of headers in an HTTP request is irrelevant and program behavior should not depend on it. Change-Id: I77e1b6265ceed8a38f04e425ba8e6eb70b5227f1 Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
| * | | Fix compilation of QML benchmarksPeter Varga2013-06-0610-27/+24
| | | | | | | | | | | | | | | | | | | | Change-Id: I2d612108ec8d69a0a9318cd26f6adcbb74f34138 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * | | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2013-06-0545-112/+415
| |\ \ \ | | | | | | | | | | | | | | | refs/staging/dev
| | * | | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-0445-112/+415
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Ib8b5509c48a686f6e916708d83914e13e4f67e9c
| | | * | Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-05-3141-103/+381
| | | |\| | | | | | | | | | | | | | | | Change-Id: Ie4ce4c3e64f093eec26754e06199d350a46ae2a2
| | | | * Doc: Fix the positioning topic pageCaroline Chao2013-05-302-14/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mention both Positioners and Qt Quick Layouts. Also add qtquickdialogs to qtquick.qdocconf. Change-Id: I19bc09a0a81be7c748af83ddf38f1111f0ecc81a Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | | * Added QQuickWindow::setDefaultAlphaBuffer()Shawn Rutledge2013-05-305-2/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All QQuickWindows will render using the same OpenGL context, so for a window to support transparency, the OpenGL context needs to be created with support for transparency from the very start. Therefore the application needs to call setDefaultAlphaBuffer() before creating windows. There are some relevant comments in QTBUG-20768 although the bug itself is not the same use case (it was already OK as long as the first window had a translucent color, because of setAlphaBufferSize in QQuickWindow::setColor()). Change-Id: I92e111c1a62c0d510821b646fd334e52254f8f57 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
| | | | * Fix various bugs in calqlatrShawn Rutledge2013-05-305-10/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's still not a great example but at least it's somewhat usable now. - added files to .pro so you see them all in Creator - keypad is fixed size and the "tape" takes up the rest, so you can resize the window to be able to see long numbers - you can flick the ListView (MouseArea not on top of the whole thing!) - ListView scrolls to the bottom when you add numbers past the point that scrolling is necessary to see them - Clear, sqrt and +/- keys are functional Task-number: QTBUG-26556 Change-Id: I485e4123ad6c24ca64bad3efc3acfc14587268d8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | | | * window example: show only the splash screen until the timeoutShawn Rutledge2013-05-302-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The window takes time to resize itself; we can avoid letting the user see that by delaying visibility of the main window. Change-Id: I81d656102b384a66b5539cbd879aadb85261ba33 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| | | | * Doc fixes to the Positioners/Layouts documentationJan Arve Saether2013-05-304-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add references to Qt Quick Layouts * Don't lie about that Positioners can resize the items * Rename title from "Item Layouts" to "Item Positioners" to avoid confusion with Qt Quick Layouts Change-Id: I43e3ad6e6d9e4b08a1233868c75f0efcab43f8c3 Reviewed-by: Caroline Chao <caroline.chao@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | | * Doc: Added Qt 5.1 details in Qt QML's release notes.Jerome Pasion2013-05-301-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ie5a4199563b22c21d7be009aeb85206670b84642 Reviewed-by: Martin Smith <martin.smith@digia.com>
| | | | * Doc: Fix links for ListModel and ListElement typesTopi Reinio2013-05-292-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Link to documentation under QtQml module. Change-Id: Id65d237558c235dcdda8ab206eddef23c2886a29 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | | * Doc: Fix various problems in Qt Quick Dialogs documentationTopi Reinio2013-05-292-20/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change fixes the following things in .qdocconf: - CamelCase for project name (required for generating valid tags in example manifest file). - Proper selector for QML Types topic - Fix exampledirs to not pull in all the Qt Quick examples - Add examplesinstallpath to make Qt Creator see the examples Also fixes the paths in example docs according to changed exampledirs. Change-Id: If18f7b5a3160d85814d508e1cbfb7bdb1a002c54 Reviewed-by: Caroline Chao <caroline.chao@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | | | * Doc: Excluded Dialogs directory from Qt Quick doc build.Jerome Pasion2013-05-291-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt Quick Dialogs is separate and should be excluded from the Qt Quick doc build. Task-number: QTBUG-30180 Change-Id: I6e63efc071d8d2e5673745f0dcd97d5b5f562d25 Reviewed-by: Alan Alpert <aalpert@blackberry.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
| | | | * Make sure tryCompare value argument is not undefinedAlbert Astals Cid2013-05-292-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It happens often that people convert a compare(foo.bar, 3) to a tryCompare(foo.bar, 3) and unfortunately that succeeds but doesn't do what they expected This makes tryCompare fail if no third argument is given Task-number: QTBUG-31427 Change-Id: I0c9618dae9aad4be55aa35c3e2dcf3535728beaa Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | | | * Animations: Avoid accessing invalid memory if stop() triggers deletionKai Koehne2013-05-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Return immediately if calling stop() results in the current object being deleted. Task-number: QTBUG-31247 Change-Id: I684a858bfb4cc53f415daa8cc1c4df96067daa1c Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | | | * Dialogs: Create directory structure for documentationCaroline Chao2013-05-2815-45/+201
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I5245a6931606673733130b1f168fddafe8def695 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | | * Do not draw negative-size ShaderEffect(Source) items.Gunnar Sletta2013-05-282-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were a bit inconsistent here. A negative size Image element would not render at all, a negative size ShaderEffect would render mirrored and a negative size ShaderEffectSource would trigger an assert. Be consistent and not draw any of them. DropShadow from QtGraphicalEffects uses both a ShaderEffectSource and a ShaderEffect together, so keeping the behavior in ShaderEffect would make it render incorrectly. Task-number: QTBUG-31383 Change-Id: Ied5568d7edbc2aed96b00adfdc6aae09b6f2a7d9 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
| | | | * Accessibility: Fix crash when accessing accessible children.Frederik Gladhorn2013-05-281-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The window would create new child interfaces every time it's children are queried. Instead properly use the crash. Task-number: QTBUG-31417 Change-Id: Ifc7bbdbdb9a506fe04a348fba643f1d52a6157e7 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| | | * | Fix assert when calculating the implicit width of truncated lines.Andrew den Exter2013-05-313-1/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Guard against reading past the end of the final line. Task-number: QTBUG-31471 Change-Id: I489f742936ee16f12ad9762b7c0891bfa9377e21 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| | | * | Do not use QApp::arguments() to select antialiasing mode.Gunnar Sletta2013-05-311-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This selection typically interfers with an application's command line arguments. Creator's qml2puppet needs to set this mode to avoid getting subpixel antialiased text from DesignerSupport. Change-Id: Iabf2bece211b897c58e2933d5502fdcf7c360c55 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
| | | * | Change wording in QML Tutorial.Mitch Curtis2013-05-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-25595 Change-Id: I38b227ac2652d2b04d3d1e00f397d189a9de4bed Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | | * | Bump MODULE_VERSION to 5.1.1Sergio Ahumada2013-05-291-1/+1
| | | |/ | | | | | | | | | | | | | | | | Change-Id: I650117a0e0d35be84dd96dc2886cce157b7c921c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * | / Don't remove milliseconds now that toString() includes them.Mitch Curtis2013-06-051-2/+0
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes a test failure introduced by 15da0a5af20fe6771bcb94ef8d46edbd5c8fb64c. tst_QJSEngine::dateConversionJSQt and tst_QJSEngine::dateConversionQtJS removed milliseconds from the JS-converted datetime, as QTime::toString() previously did not include them. Now it does, so we can remove this code. Change-Id: I48604a2eb4ed854665c9c9a24ba7b03657fea116 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
| * | Add --noinstantiate to qmlplugindumpAlan Alpert2013-05-291-38/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This flag allows you to run qmlplugindump on plugins which cannot safely create objects, such as plugins with unusual requirements or missing essential dependencies. Change-Id: Ifcc542b8dec5358fc8a76d78a2a272c9cbf5d78a Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
| * | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-05-28379-6663/+5352
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/doc/src/appdevguide/porting.qdoc sync.profile Change-Id: Iec5516c596c3eca60a3e6ceb1d45f2a7a1595c12
| | * Package dialogs examples into a single executableShawn Rutledge2013-05-2812-41/+305
| | | | | | | | | | | | | | | | | | | | | Introduced tabs and added the C++ boilerplate launcher. Change-Id: Ibb49a182e3928aba5dced097d5307eb7d1f4b42d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
| | * window and Screen example: new properties; splash screenShawn Rutledge2013-05-2820-304/+549
| | | | | | | | | | | | | | | | | | | | | | | | | | | Demonstrates the new properties, how to make a splash screen, and how to make a standalone app with an icon. Combined the Screen info into this example too. Change-Id: I5b731539b39c55327f4e5b93860a880a35835896 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
| | * Prevent tab focus from wrapping endlesslyLiang Qi2013-05-274-4/+187
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If there was no item that accepted focus, it would go into an endless loop. This also changes the default behavior of QQuickWindow. When there is not any activeFocusItem in the whole window, it means the contentItem got focused. The Tab/BackTab key will now focus the next item in the tab focus chain. Autotest is included. Done-with: Frederik Gladhorn <frederik.gladhorn@digia.com> Task-number: QTBUG-31344 Change-Id: I854292f89a327c493eec21969907c94aa9cfddcb Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| | * Doc: Added Qt 5.1 information in Qt Quick's release notes.Jerome Pasion2013-05-271-1/+29
| | | | | | | | | | | | | | | Change-Id: I97971f27d9ff7e94e14f442d1baf78b0e56ca312 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | * Doc: Add Qt Quick Dialogs to Qt Quick submodules listCaroline Chao2013-05-274-3/+32
| | | | | | | | | | | | | | | | | | | | | | | | And add a landing page for Qt Quick Dialogs. Change-Id: I0c2611bf5cdbf9937b4fd94228915553d8b3bb77 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | * sync.profile: Point dependencies to an empty stringSergio Ahumada2013-05-271-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This means that we are going to use the same branch name for the dependencies as the branch of the repository under test. If we are testing the 'stable' branch, all dependencies will point to the 'stable' branch as well. Change-Id: I0959eea83b620af805b2113422bae5ae306af120 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
| | * Update all plugins.qmltypes filesLiang Qi2013-05-272-185/+462
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-31388 Change-Id: I13a821a009c6c06f2c7fe7f7d28f1a579d69c8df Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | * skip failing qquickanimatedimage mirror tests for nowShawn Rutledge2013-05-271-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | Failing on mac, which is a blocker for CI. Task-number: QTBUG-31370 Change-Id: Icb42bb5ae59510a8754de895070d7a3d08af2623 Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
| | * Doc: Add Dialogs/Controls/Layouts in submodules sectionCaroline Chao2013-05-271-0/+6
| | | | | | | | | | | | | | | | | | Change-Id: Ide4afaa74d73ea09cf329de593283c269ecdacb3 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | * QmlProfiler: fix SceneGraph profilingChristiaan Janssen2013-05-273-3/+3
| | | | | | | | | | | | | | | Change-Id: I54c960f0b0da061816223a51795c83a9f9dd3f66 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
| | * Debugger: Make sure client list is protected by mutexKai Koehne2013-05-241-0/+3
| | | | | | | | | | | | | | | | | | | | | So far we didn't protect this access. Change-Id: Id738453db5e655371fa2fbf88f81cab6c0af466f Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
| | * qmlscene: Set window flags correctly.Friedemann Kleint2013-05-231-1/+3
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-31258 Change-Id: I13dfc17c75075de155505d20c57400753de0a71d Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | * Do not return cacheItem->object if it is still incubatingAlbert Astals Cid2013-05-231-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It can happen that cacheItem->object in QQmlDelegateModelPrivate::object already has a value but that the cacheItem->incubationTask is still Loading. If we return the object here we can confuse some of QQmlDelegateModel consumers like QQuickItemView. E.g. in QQuickItemView if we get to return the object before the createdItem signal is emitted we will make that when the createdItem signal happens QQuickItemView::createdItem will be called it will add the item to unrequestedItems items and will expect that layout/refill will remove it from unrequestedItems if it is really one of the items we are creating, but as it has been already created the item will wrongly remain in unrequestedItems making the item view to act weird Task-number: QTBUG-28403 Change-Id: I4359391eb2a4012afd3f01d082a99692d63b6639 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | * Cut performance cost in QSGContext::prepareMaterial()Gunnar Sletta2013-05-233-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The hash-lookup in this function is costing us a lot, and since we're looking up the same materials again and again, and the material has a place holder for it, we can store it directly in the material at no extra cost. This was a 10% gain in this particular benchmark. Change-Id: I46b67791ce39f453fa86d1ee82f6f5c7785b46a1 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| | * add private export to image and rectangle nodesGunnar Sletta2013-05-232-2/+2
| | | | | | | | | | | | | | | Change-Id: I15aea1b1dc3d41c9efe0a38f53d6858bae273566 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| | * qmlscene: don't call show() on the window if it's already showingShawn Rutledge2013-05-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That way Component.onCompleted() can optionally do showMaximized() without being overridden. Task-number: QTBUG-31260 Change-Id: I6f5c3025efd3b38809be85da4172241695168a6c Reviewed-by: Nikita Krupenko <krnekit@gmail.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | * Partial fix for deferred properties when combined with componentsAlan Alpert2013-05-229-15/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current deferred properties implementation did not store context or compiled data pointers correctly. Those pointers are now stored when the defer is reached, so as to avoid confusion (confusion leads to asserts or crashes). Does not extend the deferred property support to allow multiple deferred blocks per item. This now prints and error and the side effect is only that one of the deferred blocks is lost. This use case is sufficiently rare that it may not be worth the cost. Task-number: QTBUG-30325 Change-Id: I80cb074ed4452e95020208a0142a91e721bced7d Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Fix TextEdit content size calculationJ-P Nurmi2013-05-221-1/+3
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-31154 Change-Id: I9d3e31352967b99b4bbb38f5819d3d093438ee37 Reviewed-by: Caroline Chao <caroline.chao@digia.com>