summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'gerrit/master' into newdocsTor Arne Vestbø2012-10-2647-11705/+1238
|\ | | | | | | Change-Id: I10cf9f915c602c8e5a0e7d7c9e17b7bc5ca00640
| * Remove Windows as a dependency of mac styleJens Bache-Wiig2012-10-253-46/+103
| | | | | | | | | | | | | | | | | | | | There is not need to have this dependency any more since mac is overriding anything we depend on in Windows style anyway. Change-Id: I8fe0e0cc949265170947b492e04e08fdd4cf5027 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Remove widget dependencies on Vista style animationsJens Bache-Wiig2012-10-251-329/+350
| | | | | | | | | | | | | | | | This patch will make it possible to get animations on desktop components without using the widget pointer. Change-Id: I2d2eca111dab0d96f276ff3627505c0652c4b4e5 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| * Remove stale QT_MODULE() usage casesKonstantin Ritt2012-10-251-1/+0
| | | | | | | | | | | | | | As of Qt5, this macro is defined to be empty; simply get rid of these leftovers. Change-Id: I167ccb4c9e92ec9b5e4faeb02bf9c5ef5d982b50 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Mac: Non-editable QComboBoxes shouldn't get focus by defaultGabriel de Dietrich2012-10-251-1/+19
| | | | | | | | | | | | | | | | | | | | On Mac, only line edits and list views always get tab focus. It's only when we enable full keyboard access that other controls can get tab focus. When it's not editable, a combobox looks like a button, and it behaves as such in this respect. Change-Id: Ia31b0ad01b48a47c1b81180364681d8614863106 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * QStyleAnimation: writable duration & delay propertiesJ-P Nurmi2012-10-252-11/+35
| | | | | | | | | | | | | | These will be needed by upcoming QFadeStyleAnimation and QBlendStyleAnimation. Change-Id: Ibc5092d5dbd834cb9b16353d3e83b95b04d9484b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * QMacStyle: make default button animations independent of QWidgetJ-P Nurmi2012-10-254-115/+65
| | | | | | | | | | Change-Id: I63c078050288e3151a9c6aad5d4ae28a58afd84f Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Implement viewOptions logic in QTableViewPrivate.Stephen Kelly2012-10-252-3/+11
| | | | | | | | | | | | | | | | | | | | | | This is similar to the patch 05aa8c6c12509cce87d1a3811c5ea1dd83fa0898 which was applied to QListView. Task-number: QTBUG-26548 Change-Id: I38ff07230673a93a32b01a7f1951d0378d94185b Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
| * Fix: don't override the new non-cosmetic default pen in qwidgetaavit2012-10-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | As QWidget initializes any painter created in paintevent handler to have the pen color of the palette's foreground, setting it to 0 width, i.e. cosmetic, it negated the effect of the recent change to default 1-width non-cosmetic, ref. I04d910e9700baf7f13a8aac07a3633014bb9283e This caused scaled painting with default pen on QImage and QWidget to yield different results. Change-Id: I930b64bf7c0a8c84b9ea3edb49adc813370fed0e Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| * Fixed crash on destruction of animating QDockWidget in a QMainWindowRohan McGovern2012-10-252-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't make sense to hold an unguarded pointer to a QPropertyAnimation while assigning ownership of that animation to the animated widget. Destruction of the widget while the animation is in progress causes the animation pointer to become dangling; then the widget is removed from the containing QMainWindowLayout, which attempts to abort the animation, dereferencing the invalid pointer. The crash can be reproduced sometimes with tst_QDockWidget::taskQTBUG_2940_resizeAfterUndocking (which is in Qt4 only). Change-Id: I758bf7193b2ea39cd4d8e87197d8ff957d3368eb Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
| * Fix widget borders when using global stylesheetstyleMiikka Heikkinen2012-10-251-9/+5
| | | | | | | | | | | | | | | | | | | | Recent fixes to stylesheetstyle caused not calling fixupBorder() when globalStyleSheetStyle is used. Task-number: QTBUG-27651 Change-Id: I73263c951e2db7d574e81da3f60a1b79f3852716 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
| * Add ContextMenu event to QWindowSystemInterfaceMiikka Heikkinen2012-10-252-1/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | Context menu key wasn't working, as QPA had no handling for it. Added ContextMenu event to QWindowSystemInterface and proper handling to QGuiApplication and QWidgetWindow. Also provide Windows implementation. Task-number: QTBUG-27648 Change-Id: I7ce71ec4b5cdcc7be758e67f9faf6d863f7b19be Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| * Add QStyleAnimation::updateTarget()J-P Nurmi2012-10-232-4/+10
| | | | | | | | | | | | | | | | | | For example a paused "default button" animation might want to update the target to get "non-default button" looks meanwhile the animation is paused. Change-Id: Ibb854a40f38a8971e7233b1f34a83056e6a9d827 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * QStyleAnimation: fix threaded renderingJ-P Nurmi2012-10-232-5/+7
| | | | | | | | | | Change-Id: I00875adf2e4b157a3f8b0b99e5280b1275635026 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * Remove softkey API, it was only implemented for Symbian.Jan Arve Saether2012-10-222-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It is only removed from the documentation for now (I think this should go in the beta 2). That should liberate us to be able to change the API if needed for other platforms that might need a soft keys API. Once this goes in, the plan is to do the actual cleanup. Change-Id: I9a7a3eb45597cd013fe3c4bd479ad08a25ef0b9b Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Remove Cleanlooks and PlastiqueJens Bache-Wiig2012-10-2217-10662/+27
| | | | | | | | | | | | | | | | | | We have a new style Fusion that will replace these styles. They will be moved to a separate module rather than included in platforms that do not need them. Change-Id: I51ebbcad5406e99130e5b12e62ba624d1489088c Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Fix clipping and font problems with groupbox in Fusion styleJens Bache-Wiig2012-10-221-10/+14
| | | | | | | | | | | | | | | | | | | | | | The groupbox did not take custom fonts into account when calculating the height of its titlebar. This resulted in clipping issues on Windows. Task-number: QTBUG-27655 Change-Id: I7252bc94d2bbb0731b9dbc1caa6cdd2074fdd7ab Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * Make QPen default to 1-width non-cosmetic.Samuel Rødal2012-10-223-16/+5
| | | | | | | | | | | | | | | | | | | | | | Use the Qt4CompatiblePainting render hint when painting with QPainter to treat default constructed QPens as cosmetic still. The NonCosmeticDefaultPen render hint gets documented as obsolete, since it was in any case not respected by the raster nor OpenGL paint engine. Change-Id: I04d910e9700baf7f13a8aac07a3633014bb9283e Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * Move some icon code from WindowsStyle to CommonStyleJens Bache-Wiig2012-10-223-456/+456
| | | | | | | | | | | | | | | | | | | | | | Fusion style only depends on CommonStyle and it seems the autotest for tst_QFileSystemModel:iconProvider assumes an icon will be returned from standardPixmap. Since we dont want the icons to depend on style in this case we should move all this to commonstyle. Change-Id: I3a26367e5c0aefe2a39838f0c2cadc4f7afad89d Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * Delete QWhatsThis() and QToolTip()Marc Mutz2012-10-223-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These classes are not supposed to be instantiated. QToolTip() already was declared, but not implemented. This patch just adds Q_DECL_EQ_DELETE for better diagnostics on C++11. QWhatsThis() was implemented, but appears to be unused. Since it was private to begin with, successfully compiling QtWidgets is a sufficient test. Change-Id: I698ece8f0eebbcdac7be98456dd42197b758a825 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
| * QDateTimeEdit: don't throw off auto-indentionMarc Mutz2012-10-221-3/+2
| | | | | | | | | | | | | | | | Reformulate #ifdef'ery involving {}s so as not to throw off auto-indention of code editors due to unbalanced {}s. Change-Id: I0f9858c78d0b6d923de75ca45c7d65ce3fa53e50 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
| * Fix integer overflow in QSpinBox.Stephen Kelly2012-10-221-2/+17
| | | | | | | | | | Change-Id: Ic204d42fbdffc44576f7e76132bc53621e836299 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * Emit cursorPositionChanged in private slot.Frederik Gladhorn2012-10-221-2/+2
| | | | | | | | | | | | | | | | Since the private slot is already there and used, it might as well emit the signal and save us one connection. Change-Id: I899df74c20f8c2b7875a0f9d0a04465c5dc48bde Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * Bring back accessibility for plain text edit.Frederik Gladhorn2012-10-221-0/+6
| | | | | | | | | | | | | | | | | | | | This ports 282951bc6c7ddb607fb7ebf61eb8de9acf3da77f aka Change-Id: If0269a49b9fcd1b3e9fcfd32fac912560df28f21 to Qt 5. Change-Id: I46f1d4947d90688b598993f76330e2e10aeca950 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| * Mac: Adapt scrollbar fadeout animation for QStyleAnimationGabriel de Dietrich2012-10-192-2/+11
| | | | | | | | | | Change-Id: I39f1089e8d6ba1bb412d33aa4ebc0971aba52681 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * QStyleSheetStyle: kill more dependencies to QWidgetJ-P Nurmi2012-10-191-10/+12
| | | | | | | | | | | | Change-Id: I5e58ec68c5d20fd7b201c83743f9d284e7c4dc52 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * remove explicit load(qt_build_config)s from the librariesOswald Buddenhagen2012-10-191-2/+0
| | | | | | | | | | | | | | .qmake.conf (and previously .qmake.cache) already does that for us. Change-Id: I06cc01fa45921d7bd66dda7a0f88729faeff37bd Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| * Fix excess enter/leave event generation for native widgetsMiikka Heikkinen2012-10-191-2/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Native widgets have a native window each, so QPA plugin sends enter and leave events for associated QWindow whenever mouse cursor moves from one widget to another. QWidgetWindow had no context to interpret these events as moves from one widget to another, since they were sent separately. This resulted in leaves and enters for each widget in parent chain, when only the bottom child should have gotten them. Fixed by peeking into window system message queue when handling leave in QWidgetWindow and retrieving the entered window from queued enter event. Also provided a convenience function that QPA plugin can use to ensure both leave and enter events are in the event queue when moving from one QWindow to another. Task-number: QTBUG-27550 Change-Id: I74fec0ac90f6848495c2392c5f7e41624ad8aea2 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | Use \annotatedlist for list of examples instead of "manual links"Jan Arve Saether2012-10-241-28/+1
| | | | | | | | | | Change-Id: Id945fd35f5eb6a6d11156d4a1356f99cc49405e2 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | Doc: Added landing-, examples- and C++ class list-page to qtwidgetsJan Arve Saether2012-10-196-65/+177
| | | | | | | | | | | | | | | | | | | | It seems this is the pattern to follow: landing page: qtwidgets-index.html examples page: qtwidgets-examples.html class list page: qtwidgets-module.html Change-Id: I3e5459fe650178e0398cb43181b594c0f12a170e Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | Merge remote-tracking branch 'gerrit/master' into newdocsTor Arne Vestbø2012-10-1965-1465/+4972
|\| | | | | | | Change-Id: If7f46d56cf0b0b79f7fc8955a01964121b900d07
| * QStyleSheetStyle: QObject-based style & render rulesJ-P Nurmi2012-10-192-97/+101
| | | | | | | | | | | | | | | | | | The goal is to cut as many QWidget dependencies as possible and make stylesheets eventually work for the desktop components. Change-Id: Ib4aa47af07379fc39fd6df1961e113d03df6df35 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Fixed inconsistent QPainter fill rules for aliased painting.Samuel Rødal2012-10-192-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt 5 is the time to get rid of all the old inconsistencies in the raster paint engine caused by trying to preserve the old X11 based coordinate system where (0, 0) is in the center of the top-left pixel instead of the upper left corner of said pixel. However, this was only adhered for line drawing and path / rect filling, and not for image or pixmap drawing and not at all when doing antialiased painting. By defining the antialiased coordinate system as being the right one and letting the aliased fill rules follow from that we finally end up with some consistent behavior that doesn't lead to surprises and workarounds in application code. It is still possible for applications to get the old behavior by setting the QPainter::Qt4CompatiblePainting render hint. This should make porting easier for the few cases where an application relies on the aliased fill rules we used to have in Qt 4. Task-number: QTBUG-27500 Change-Id: If86b95e77d838ec83033d64af86632b9a73c74a9 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Make sure uints remain uints when editing in itemviews.Stephen Kelly2012-10-191-1/+32
| | | | | | | | | | | | Task-number: QTBUG-22974 Change-Id: I07428862c4dffc629f868f3010f663eb655922d0 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * Correct accessibility index handling in QListViewJosé Millán Soto2012-10-191-3/+3
| | | | | | | | | | | | | | | | QListView::currentChanged and QListView::selectionChanged changed to use 0-based indexes instead of 1-based indexes. Change-Id: Ie618970c9a37ec76156dbfab2e86685c3c8f374c Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
| * Introduce new style FusionJens Bache-Wiig2012-10-189-136/+3990
| | | | | | | | | | | | | | | | | | | | This is a new non-native style for Qt. It is intended as a replacement for the now aging Plastique and Cleanlooks styles. Change-Id: I30c0518a69e4e3b8b2b05ee7d84c3a5a1f307578 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| * Modified vertical alignments of simple widgets on OSXTero Ahola2012-10-181-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | Adding QCheckBox, QComboBox, QLineEdit etc. into an HBox layout or grid layout makes the layout look like a snake's trail. Fixed the positioning of these widgets to make the layouts visually more appealing. Updated qmacstyle auto-test accordingly. Task-number: QTBUG-13635 Ammended-by: Gabriel de Dietrich Change-Id: I89461f9aad68ea8488070ed06257b9b8e7f493c5 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Remove dependency on QWindowsStyle in QGtkStyleJens Bache-Wiig2012-10-184-84/+115
| | | | | | | | | | | | | | | | | | Now that we no longer re-use the animation code in gtk, it is time to remove this strange dependency. Change-Id: Ib672a9b110dfba08d79b8654e572994007675957 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| * Bring back Mac dependent code in QBoxLayout, QGridLayoutGabriel de Dietrich2012-10-182-3/+3
| | | | | | | | | | | | | | | | | | We also made an accessibility auto-test more stable, so that it would not be influenced by this patch. Task-number: QTCREATORBUG-7966 Change-Id: I6ce4e2361c8847aee5dd1cf5664c29cd2d83e38d Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| * Mac: Fix QLineEdit shadowGabriel de Dietrich2012-10-181-3/+0
| | | | | | | | | | | | | | | | The cursor is still rendered 1px too low, but probably needs to be fixed in QTextLayout. Change-Id: Ie56c7140898b941c8d896f503ce1934d0d681a4d Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * Improve branch indicators in common styleJens Bache-Wiig2012-10-183-72/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The branch indicators in common style was painted based on motif style, effectively making it useless. Since most styles inherit from Windows style, I moved that into common style. It was already duplicating most of the code used in commonstyle. Change-Id: I1a383d90254bb97aebc038fa058ec0f225cf9dab Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Fix potential crash in QStyleAnimation::updateCurrentTime()J-P Nurmi2012-10-171-9/+11
| | | | | | | | | | | | | | | | | | A parentless/targetless QStyleAnimation calls updateCurrentTime() from QAbstractAnimation constructor. Avoid the potential crash even if it's not a valid use case for QStyleAnimation. Change-Id: I9cd263d105c8ea4b5cbabac9a7680991745ccd95 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * Styles: revise indeterminate progress bar animationsJ-P Nurmi2012-10-1713-207/+76
| | | | | | | | | | | | | | | | | | Remove dependencies to QProgressBar where possible. This makes it possible to animate for example QQuickItem based progress bars (read: the desktop components). Change-Id: If208506702365895576238c24191b8d70b90841c Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * QGraphicsObject: handle QEvent::StyleAnimationUpdateJ-P Nurmi2012-10-172-0/+15
| | | | | | | | | | Change-Id: I8545d6f26e2c2398e750b0b85ba87892a2e376ae Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| * QPlatformWindow: change API for QPlatformWindow::setWindowStateRichard Moe Gustavsen2012-10-172-75/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation requests the platform window to set the window state if it can, and return the actual window state back. The problem with this approach is that the platform window is created as late as possible, so a call to QWindow::setWindowState would in many (most?) cases never be forwarded to the platform window (instead, the platform window is responsible to check the current window state upon creation). As such, the window state might be left unsynched with the platform window. This patch suggests removing the return value from QPlatformWindow::setWindowState. This will at least be consistent, so that setting/getting state would produce the same result independent of delayed window creation. If needed, we can later add new API to QPlatformIntegration or QPlatformWindow for querying supported/actual window state. Change-Id: Ie43f56169656854a765ce88b47a808f8f3d51bb4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Bring back MacSizeChange eventGabriel de Dietrich2012-10-1716-20/+40
| | | | | | | | | | | | | | | | | | | | This ensures WA_MacNormalSize & Co. work (almost) properly. Task-number: QTCREATORBUG-7966 Change-Id: Ib03b5c0f163409e2bc387f6cf9b56c72c43caec7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * QFileInfoGatherer: remove m_resolveSymlinks for non-Q_OS_WINMarc Mutz2012-10-172-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | For some reason, m_resolveSymlinks was never set to true for non-Windows systems. The constructor set it to false and the setter was only implemented for Windows. So remove the member and code that is only executed if it is set to true, except on Windows. Change-Id: I386e980688a603475a413e2ef3628d0754778c5c Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * Clarify ownership of scene in QGraphicsView::setScene() docs.Mitch Curtis2012-10-161-0/+2
| | | | | | | | | | Change-Id: I550a02bce0633884ee1ffe2321c6462a34194f89 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| * QComboBox: mention insert policy in context of editable propertyMark Brand2012-10-161-1/+4
| | | | | | | | | | | | | | | | This makes it a little bit easier for the reader to discover what editable combo boxes are about. Change-Id: I60ce571f01e32d4cacb4718b42a8e12884bd1c13 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * Fix incorrectly scaled constants on MacJens Bache-Wiig2012-10-161-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | This fixes several scaled constants on mac that are inherited from commonstyle. (such as toolbutton arrows) It is probably easiest to see when running Windows style on mac. The problem was that the code assumed a default dpi of 96 would be used on all platforms. Change-Id: I83789589009b268dcb1d96629c3ec9e8f968a891 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>