aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickrectangle.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Set explicit default security level of all files with default securityJan Arve Sæther2025-09-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | The files (folders) already processed are listed in each issue in epic QTBUG-134547 These files were processed half a year ago. In order to make it clear that all of these files are already processed, mark them with an explicit default security header. For the record, this was generated with this script: find -E . -regex ".*\.(cpp|h|hpp|mm|qml|js)$" | xargs python3 ~/bin/add-cra-header.py in the folders listed in each subtask of QTBUG-134547 (add-cra-header.py only exist at my desktop, but it simply adds the default security header if it doesn't already have any existing security header) QUIP: 23 Fixes: QTBUG-134547 Pick-to: 6.10 6.9 6.8 Change-Id: Ieb8c78ea6561fdbdd27c7b13185ece853eedf80f Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Fix Rectangle with gradient and color set to transparentJoni Poikelin2025-06-031-1/+1
| | | | | | | Fixes: QTBUG-134403 Pick-to: 6.10 6.9 6.8 Change-Id: Ibfbe6bc513d1e279d3d1d21661f8041500f02570 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* QQuickItemPrivate: introduce effectiveDevicePixelRatio() helper methodVladimir Belyavsky2025-05-241-1/+1
| | | | | | | | Introduce QQuickItemPrivate::effectiveDevicePixelRatio() helper method and unify its usage in Qt Quick code. Change-Id: I1978683d76e23c5bfe523a96ee07688eb0aef96b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Take Rectangle per-corner radii out of tech previewMatthias Rauter2025-05-221-12/+0
| | | | | | | | | With 6.10 it is time to take this feature out of tech preview. Task-number: QTBUG-48774 Task-number: QTBUG-94171 Change-Id: I0577be053fab171e9f522684760ef587870a2d1c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Refactor corner radius handling with explicit unset stateMagdalena Stojek2025-02-211-53/+65
| | | | | | | | | | Replace the use of -1 to indicate unset corner radii with explicit bitfield flags to track whether each corner radius is set. The default value for unset radii remains 0.0. Fixes: QTBUG-120188 Change-Id: If51a0165386a0c474ecd57ef23310d1c28f0f60b Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Doc: Replace \instantiates with \nativetypePaul Wicking2024-08-201-3/+3
| | | | | | | | | | | Since the implementation of the `\nativetype`-command in QDoc, the `\instantiates`-command is deprecated. Replace the use of the deprecated command in favor of its replacement. Pick-to: 6.8 Task-number: QTBUG-128216 Change-Id: I23d9f66d3f6db2e5f827d7868497a432bb9b0626 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Document Rectangle's border.pixelAligned propertyEirik Aavitsland2024-03-181-0/+5
| | | | | | | | | | For unknown reasons this property has been undocumented. Task-number: QTBUG-123210 Task-number: QTBUG-108831 Pick-to: 6.7 6.5 Change-Id: I1eba7385ee13943f9c1c3435583b570a18dff71e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Add a radius property for each corner of a RectangleMatthias Rauter2023-08-191-5/+263
| | | | | | | | | | | | | | | | | | | | | This patch adds 4 properties to the Rectangle: topLeftRadius, topRightRadius, bottomLeftRadius and bottomRightRadius. These properties can be used to get a Rectangle where the corners have different radii. If the properties are not set or if they are zero, the value of the property radius will be used to draw the corner. If radius is zero too, the corner will be drawn normally. The opportunity was used to rename some variables in the QSGRectangleNode and comment the code. We now use float as the storage type for small-valued numbers, to reduce memory usage, even though the setters take qreal values. They lose precision during rendering anyway. [ChangeLog][QtQuick][Rectangle] Rectangle can now render individual radii on each corner. Fixes: QTBUG-48774 Change-Id: Icba1f6a26da513c657b7b218adc9187afb085eda Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* doc: Use \value rather than \li for enumeration values and constantsShawn Rutledge2023-03-281-4/+3
| | | | | | Pick-to: 6.2 6.5 Change-Id: Ica8354a53d0a5fb5dd1d8cd5f774dcdc56b6f99a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Stabilize rendering of Rectangle borders under fractional scalingEirik Aavitsland2022-12-081-2/+7
| | | | | | | | | | | | | | | | | | By default, border widths are rounded to integer values (in QSGBasicInternalRectangleNode::updateGeometry()), so one avoids artifacts where the rendered width can fluctuate with one pixel if the Rectangle coordinates are fractional. However, that rounding was done before the device pixel ratio scaling, so if the dpr was fractional, one would get a fractional rendered border width, and hence fluctuations. Fix by taking the dpr into account. The rounding is done in the Item, where the dpr is known, instead of the SG Node. Fixes: QTBUG-108831 Pick-to: 6.4 6.2 Change-Id: I9a1d8180c72dd5e1b1eaa9f1c420eb9944f1e5a5 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Use SPDX license identifiersLucie Gérard2022-06-111-38/+2
| | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I63563bbeb6f60f89d2c99660400dca7fab78a294 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Doc: Replace non-existent \qmlproperty any typeIvan Tkachenko2021-10-261-1/+1
| | | | | Change-Id: I79f1b6fac5933fe13b2dda0436f95da91b2c6d8e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Separate the signals for QQuickPen propertiesShawn Rutledge2021-07-191-3/+3
| | | | | | | | There were some bogus "binding loops" in the pinchHandler manual test. Pick-to: 6.2 Change-Id: Ib81c4850125d2db411a21ea4e95ff36c713ce1c1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Doc: Use \qmldefault instead of \defaultPaul Wicking2021-03-241-1/+1
| | | | | | Task-number: QTBUG-81525 Change-Id: Ia2d2d706ab73e52e19129caf4e5a88a2ae5499c6 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QQmlListProperty: Add replace and removeLast functionsUlf Hermann2020-01-151-1/+1
| | | | | | | | | | | This allows us to implement QmlListWrapper::virtualPut(). Also, the additional functions make the list properties useful in other contexts. Fixes: QTBUG-79263 Change-Id: I528bc69222ca7743f0fc3697c3aed2a3468b4d87 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQuickRectangle: do not pass invalid presets onto QGradientGiuseppe D'Angelo2019-06-241-2/+24
| | | | | | | | | | QGradient isn't meant to have a wide contract and filter out garbage. Since we're parsing ints / strings as gradients, do the validation at this level. Change-Id: I271b5ed1b908d698a2d2c871abf5e61d1e565451 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Teach Rectangle's gradient property to accept QGradient::PresetTor Arne Vestbø2018-07-101-16/+71
| | | | | Change-Id: Id640b596c1d8d52221f2f2be8807d6e245971bdc Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/5.11' into devUlf Hermann2018-06-251-3/+3
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/qmltooling/packetprotocol/qpacketprotocol.cpp src/quick/handlers/qquickhandlerpoint.cpp src/quick/handlers/qquicksinglepointhandler.cpp tests/auto/qml/ecmascripttests/test262 Change-Id: I8908ec8c6116ca626fbd269af7625d4c429429ca
| * Doc: Add missing dots (qtdeclarative)Paul Wicking2018-06-191-3/+3
| | | | | | | | | | | | Task-number: QTBUG-68933 Change-Id: Ibb5aa227e82825085e7214e17dcffcb17fd44157 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | Add support for horizontal gradients in RectangleMichael Brasser2018-05-031-5/+31
|/ | | | | | | | | [ChangeLog][QtQuick] Added support for horizontal gradients in Rectangle. Change-Id: I4feee8ec93d9fe75a9f91a7afbe33c8d4756cedb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* use nullptr consistently (clang-tidy)Shawn Rutledge2018-02-261-2/+2
| | | | | | | | | | | | | From now on we prefer nullptr instead of 0 to clarify cases where we are assigning or testing a pointer rather than a numeric zero. Also, replaced cases where 0 was passed as Qt::KeyboardModifiers with Qt::NoModifier (clang-tidy replaced them with nullptr, which waas wrong, so it was just as well to make the tests more readable rather than to revert those lines). Change-Id: I4735d35e4d9f42db5216862ce091429eadc6e65d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/dev' into wip/pointerhandlerJan Arve Saether2017-07-111-2/+17
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: examples/quick/shared/LauncherList.qml src/quick/items/qquickevents.cpp src/quick/items/qquickevents_p_p.h src/quick/items/qquickwindow.cpp tests/auto/quick/touchmouse/tst_touchmouse.cpp Change-Id: Id692d291455093fc72db61f1b854f3fc9190267b
| * Revert "QQuickRectangle: Optimize setGradient"Robin Burchell2017-06-011-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 9709d04ba7787c853a1ddbeed0347eab27c0924f. We changed this from using a signal for notification to using parenting. But this cannot be done for two related reasons: the first: QtObject { property Gradient someGradient: Gradient { id: someGradient } } ... Rectangle { gradient: someGradient } ... should work, and no longer did, because the Gradient's parent was the QtObject, not the Rectangle it was tied to. And secondly: Rectangle { id: rectOne gradient: Gradient { id: someGradient } } Rectangle { id: rectTwo gradient: someGradient } ... also didn't work anymore, as the Gradient was only notifying a single Item about changes to it. The easiest way to fix this is to just revert back to using a signal connection. This also caused problems in qtquickcontrols autotests. Change-Id: Ic07dd02e9920596d0c047bfc23995b3be8c96c49 Task-number: QTBUG-60268 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | Default QQuickItem::acceptTouchEvents to true until Qt 6Shawn Rutledge2017-05-101-0/+3
|/ | | | | | | | This is a partial revert of 1457df74f4c1d770e1e820de8cd082be1bd2489e to avoid making a mandatory API change so soon. Change-Id: I05040579fa36d3dc5ef7616861f6d17adf500d2c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Merge remote-tracking branch 'origin/5.9' into devLars Knoll2017-05-021-0/+2
|\ | | | | | | Change-Id: I71275a2076c3d32ee2896571be882067320a2e9e
| * Run includemocs in qtdeclarativeThiago Macieira2017-04-261-0/+2
| | | | | | | | | | Change-Id: I84e363d735b443cb9beefffd14b8c023a37aa489 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QQuickRectangle: Optimize setGradientRobin Burchell2017-04-281-17/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similarly to the QQuickPen optimization, we can avoid a signal connection by using the parent pointer of the QQuickGradient. This improves qmlbench's delegates_rect_gradient.qml by ~6% for me: Before: 300.6 frames; using samples; MedianAll=301; StdDev=4.61519, CoV=0.01535 After: 320.4 frames; using samples; MedianAll=321; StdDev=1.94936, CoV=0.00608414 Again, hopefully, the resulting lessening in allocations and improvement in performance will help stabilize the benchmark a little on some systems, as well as the improvement to performance and memory use. Change-Id: Id8e0399f5a4a0ef55d7fc9b8f100af229f389ddd Reviewed-by: Gunnar Sletta <gunnar@crimson.no> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | QQuickRectangle: Use parenting on QQuickPen to speed up pen changesRobin Burchell2017-04-281-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We know that signal connections are slow, so let's not use them. QObject has a parent pointer sitting there that looks nice and ripe, so: let's set the parent pointer ourselves, and call update() via QQuickPen. This improves delegates_rect_border.qml on my mbp by ~5%: Before: 394.6 frames; using samples; MedianAll=395; StdDev=2.30217, CoV=0.00583419 After: 417.4 frames; using samples; MedianAll=417; StdDev=1.67332, CoV=0.00400891 ... and should additionally decrease memory (no more signal connection). Hopefully, the decrease in allocation and increase in performance might also help with stability, since some systems seem a little flappy with this one. Change-Id: I885654d606bc77d2949b9db81217426cf367b081 Reviewed-by: Gunnar Sletta <gunnar@crimson.no> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | QQuickRectangle: Inline a method into its sole callerRobin Burchell2017-04-251-1/+10
|/ | | | | | | No point separating this out, and prepares us for a cleanup. Change-Id: I051d94a3a8f00525123de6d47d328cafe7623bba Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
* Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-10-101-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/quick/quickwidgets/quickwidget/main.cpp src/qml/jsruntime/qv4jsonobject.cpp src/qml/jsruntime/qv4qobjectwrapper.cpp src/qml/jsruntime/qv4qobjectwrapper_p.h src/qml/qml/qqmlengine.cpp src/qml/qml/qqmlpropertycache.cpp src/qml/qml/qqmlpropertycache_p.h src/quick/items/qquickanimatedsprite.cpp src/quick/items/qquickitem.cpp src/quick/items/qquickitem.h src/quick/items/qquickitem_p.h src/quick/items/qquickview_p.h src/quick/scenegraph/qsgcontext.cpp src/quick/scenegraph/qsgdefaultrendercontext.cpp Change-Id: I172c6fbff97208f21ed4c8b6db3d1747a889f22b
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-051-1/+1
| |\ | | | | | | | | | Change-Id: I081d9b15796b4133d2ba6f1a862f15b873a4846d
| | * QQuickRectangle: fix typo in apidocFrederik Schwarzer2016-10-041-1/+1
| | | | | | | | | | | | | | | Change-Id: Ib026302143df82196fdfd70b9ea9923098adbc7c Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | | Use predefined color instead of creation from stringAnton Kudryavtsev2016-08-261-1/+1
| | | | | | | | | | | | | | | Change-Id: I64687d96e38044577870b8dfe60fd7b3a631180d Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Add cross-backend simple rect, texture, and ninepatch nodesLaszlo Agocs2016-06-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSGSimpleRectNode is deprecated -> use QSGRectangleNode via QQuickWindow::createRectangleNode() instead. QSGSimpleTextureNode is deprecated -> use QSGImageNode via QQuickWindow::createImageNode() instead. The OpenGL version of the simple rectangle node is switched over to the vertex color material instead of flat, to allow for better batching. Use the same concept for nine patch nodes. The "style" node from Quick Controls 1 is now QSGNinePatchNode in order to provide a proper cross-backend solution which is already necessary due to the software backend, but now generalize it to apply to the accelerated backends with proper materials as well. QC can now simply call createNinePatchNode() without further ado. Also fixes a bug with the D3D12 texture material not enabling blending when needed. When it comes to the internal class names, QSGRectangleNode and QSGImageNode get the Internal prefix in the adaptation layer in order to differentiate from the public API. This involves quite a lot of renaming, but results in a nice and clean public API. Change-Id: Iddf9f9412377843ea6d652bcf25e68d1d74659ea Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | | Cleanup QStringBuilder usageFrank Meerkoetter2016-05-091-1/+0
|/ / | | | | | | | | | | | | | | | | Modules in QtDeclarative are built with QT_USE_QSTRINGBUILDER. There is no need to include qstringbuilder.h. This also means the + operator can be used instead of the %. Change-Id: I9fc374c25174a66c276f7f67a0abcd8e62a6a485 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* / Updated license headersJani Heikkinen2016-01-191-14/+20
|/ | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: Ic36f1a0a1436fe6ac6eeca8c2375a79857e9cb12 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-121-7/+7
| | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9 Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
* Update license headers and add new licensesJani Heikkinen2014-08-251-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-02-181-7/+13
|\ | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4functionobject.cpp src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h Change-Id: Id164f6c3b45501aa466908659ec4e3b957323753
| * Expose Qt Quick gradient conversion code privately.Mitch Curtis2014-02-121-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rectangle is currently the only item that supports gradients, but other items have been introduced (within Qt Quick Enterprise Controls) which need QQuickGradient => QLinearGradient conversion, and it doesn't make sense to duplicate the gradient stop conversion code. The QQuickGradient and QQuickGradientStop classes need to be privately exported so that modules that use private Qt API can use the classes with quick-private. Change-Id: I8b130ff5384d9481d3f29510b3de61f7d8f775e2 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-12-241-0/+1
|\| | | | | | | | | | | | | Conflicts: src/quick/items/qquickrectangle.cpp Change-Id: Ia40bc0f2f08b5be68e32eb1e1f118445d20e44fc
| * QtQuick docs: add missing \qmlpropertygroup commandsJ-P Nurmi2013-12-201-0/+1
| | | | | | | | | | | | | | "warning: No QML property group command found; using..." Change-Id: Iafbdbc09cbd76bf81a5baf3a5a4fab843778b5cb Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Support toggling antialiasing for Text and Rectangle.Michael Brasser2013-12-031-1/+13
|/ | | | | | | Task-number: QTBUG-27968 Task-number: QTBUG-34366 Change-Id: Ic446ff4470abf21696e1764f902bd71e79762697 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* qdoc: no longer recognizes the version nr in QML refsMartin Smith2013-10-021-8/+8
| | | | | | | | | | All QML references of the form <QML-module-name><QML-module-version>::<QML-type>::<member-name> have had the <QML-module-version> removed i. Task-number: QTBUG-33776 Change-Id: Idde279e0f254cd24ea44f9841662dd81a2c5bbc6 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Fix license headers of QtQuick sources.Gunnar Sletta2013-09-301-1/+1
| | | | | Change-Id: I3750c47640bf21c3567c5fa1c4667e3e2552942e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Doc: Fixed and updated Qt Quick's \qmlmodule pageJerome Pasion2013-09-251-3/+3
| | | | | | | | | | | -incremented version to Qt Quick 2.2 (in \qmlmodule page) -import changed to QtQuick 2.2 -\inqmlmodule no longer needs the version. QDoc will ignore the version but it is better to remove it now to avoid confusion Task-number: QTBUG-32172 Change-Id: I40b52e59667014720be40a35b3a8fb9836825e31 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Doc: Fix some broken linksSze Howe Koh2013-05-201-1/+1
| | | | | Change-Id: I1385a8947107a7c80b32306fc587aff45536a4ec Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* Let rounded rectangles be antialiased by defaultGunnar Sletta2013-02-191-1/+1
| | | | | | | This was the behavior in Qt Quick 1.1, so we should keep it Change-Id: I5c6968225e20b06f550c52741fff571088b0100b Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-101-1/+1
| | | | | | Change-Id: I6c3bd7bebe3d62d1cfd0fa6334544c9db8398c76 Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Make Rectangle border be inner instead of centered on the outline.Samuel Rødal2012-10-221-44/+1
| | | | | | | | | | | | | This avoids awkward situations such as when clipping to a parent item of the same size and makes it easier to reason about the bounding rectangle of the item. Task-number: QTBUG-21341 Change-Id: If015cfbc5792429f4a407fc0547ea71eca779eda Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>