From c7ae45fd1357712e1bad7dd30c3958a5866d6ac4 Mon Sep 17 00:00:00 2001
From: Justin McPherson <justin.mcpherson@nokia.com>
Date: Wed, 16 Jun 2010 16:43:57 +1000
Subject: AudioInput example; disconnect from the built-in device when changing
 mode.

Reviewed-by:Dmytro Poplavskiy
---
 examples/multimedia/audioinput/audioinput.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/examples/multimedia/audioinput/audioinput.cpp b/examples/multimedia/audioinput/audioinput.cpp
index 7c2cc30..9dca50c 100644
--- a/examples/multimedia/audioinput/audioinput.cpp
+++ b/examples/multimedia/audioinput/audioinput.cpp
@@ -312,6 +312,11 @@ void InputTest::readMore()
 void InputTest::toggleMode()
 {
     // Change bewteen pull and push modes
+    if (m_input != 0) {
+        disconnect(m_input, 0, this, 0);
+        m_input = 0;
+    }
+
     m_audioInput->stop();
 
     if (m_pullMode) {
-- 
cgit v0.12


From 4f79cbb2b7923ff7f7cbc77dc6820d12f594311d Mon Sep 17 00:00:00 2001
From: Justin McPherson <justin.mcpherson@nokia.com>
Date: Wed, 16 Jun 2010 16:44:18 +1000
Subject: Audio (osx); In pull mode emit readyRead() for each period received.

Task-number: QTBUG-10009
Reviewed-by:Dmytro Poplavskiy
---
 src/multimedia/audio/qaudioinput_mac_p.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/multimedia/audio/qaudioinput_mac_p.cpp b/src/multimedia/audio/qaudioinput_mac_p.cpp
index cb65f6e..b99fe11 100644
--- a/src/multimedia/audio/qaudioinput_mac_p.cpp
+++ b/src/multimedia/audio/qaudioinput_mac_p.cpp
@@ -259,7 +259,7 @@ public:
                              UInt32 inBusNumber,
                              UInt32 inNumberFrames)
     {
-        const bool  wasEmpty = m_buffer->used() == 0;
+        const bool  pullMode = m_device == 0;
 
         OSStatus    err;
         qint64      framesRendered = 0;
@@ -330,7 +330,7 @@ public:
             framesRendered = copied / m_outputFormat.mBytesPerFrame;
         }
 
-        if (wasEmpty && framesRendered > 0)
+        if (pullMode && framesRendered > 0)
             emit readyRead();
 
         return framesRendered;
-- 
cgit v0.12


From 3385042e497935f7cecd6d53bb578297cdc93e69 Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Wed, 16 Jun 2010 17:58:02 +0200
Subject: Updated WebKit from /home/shausman/src/webkit/trunk to
 qtwebkit/qtwebkit-4.6 ( aa3f786bdba4dc153620ae7f98e4b0e41770d1d1 )

Changes in WebKit/qt since the last update:

* https://bugs.webkit.org/show_bug.cgi?id=34614 -- [Qt] npapi header leaves XP_WIN flag defined even when __SYMBIAN32__ flag is found
---
 src/3rdparty/webkit/VERSION                |  2 +-
 src/3rdparty/webkit/WebCore/ChangeLog      | 13 +++++++++++++
 src/3rdparty/webkit/WebCore/bridge/npapi.h |  2 +-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 4c895fb..cbc163c 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
 
 and has the sha1 checksum
 
-        7932e8da6bfdeff653c572c22aed879c8c308829
+        aa3f786bdba4dc153620ae7f98e4b0e41770d1d1
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index 09b8598..f01220e 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,16 @@
+2010-04-06  Abhinav Mithal <abhinav.mithal@nokia.com>
+
+        Reviewed by Laszlo Gombos.
+
+        [Qt] npapi header leaves XP_WIN flag defined even when __SYMBIAN32__ flag is found
+        https://bugs.webkit.org/show_bug.cgi?id=34614
+
+        Do not define XP_WIN if WebKit is compiled for Symbian.
+
+        No new tests as there is no new functionality.
+
+        * bridge/npapi.h:
+
 2010-05-28  Peter Kasting  <pkasting@google.com>
 
         Reviewed by Darin Adler.
diff --git a/src/3rdparty/webkit/WebCore/bridge/npapi.h b/src/3rdparty/webkit/WebCore/bridge/npapi.h
index c6cd557..4a8492e 100644
--- a/src/3rdparty/webkit/WebCore/bridge/npapi.h
+++ b/src/3rdparty/webkit/WebCore/bridge/npapi.h
@@ -50,7 +50,7 @@
 #define JRIEnv  void
 #endif
 
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(__SYMBIAN32__)
 #    ifndef XP_WIN
 #        define XP_WIN 1
 #    endif /* XP_WIN */
-- 
cgit v0.12


From 0aaf5a740dc97de3d51d35a489eda25663503a31 Mon Sep 17 00:00:00 2001
From: Rohan McGovern <rohan.mcgovern@nokia.com>
Date: Thu, 17 Jun 2010 08:23:36 +1000
Subject: Attempt to stabilize tst_lupdate::good

Increase timeout when running lupdate from 5 to 30 seconds.
---
 tests/auto/linguist/lupdate/tst_lupdate.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/auto/linguist/lupdate/tst_lupdate.cpp b/tests/auto/linguist/lupdate/tst_lupdate.cpp
index c179462..5ba6c52 100644
--- a/tests/auto/linguist/lupdate/tst_lupdate.cpp
+++ b/tests/auto/linguist/lupdate/tst_lupdate.cpp
@@ -288,7 +288,7 @@ void tst_lupdate::good()
     proc.setWorkingDirectory(workDir);
     proc.setProcessChannelMode(QProcess::MergedChannels);
     proc.start(m_cmdLupdate + ' ' + lupdatecmd, QIODevice::ReadWrite | QIODevice::Text);
-    QVERIFY2(proc.waitForFinished(5000), qPrintable(lupdatecmd));
+    QVERIFY2(proc.waitForFinished(30000), qPrintable(lupdatecmd));
     QByteArray output = proc.readAll();
     QVERIFY2(proc.exitStatus() == QProcess::NormalExit,
              "\"lupdate " + lupdatecmd.toLatin1() + "\" crashed\n" + output);
-- 
cgit v0.12


From 59faedcabc9fec35d6557935e06c33a9b4ead88c Mon Sep 17 00:00:00 2001
From: Rohan McGovern <rohan.mcgovern@nokia.com>
Date: Thu, 17 Jun 2010 08:26:31 +1000
Subject: Attempt to stabilize tst_qwidgetaction::visibilityUpdate

Replace this:

 QTest::qWait(some_delay); QVERIFY(some_async_condition);

With this:

 QTRY_VERIFY(some_async_condition);
---
 tests/auto/qwidgetaction/tst_qwidgetaction.cpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/tests/auto/qwidgetaction/tst_qwidgetaction.cpp b/tests/auto/qwidgetaction/tst_qwidgetaction.cpp
index 5dfcd43..efe4838 100644
--- a/tests/auto/qwidgetaction/tst_qwidgetaction.cpp
+++ b/tests/auto/qwidgetaction/tst_qwidgetaction.cpp
@@ -51,6 +51,8 @@
 #include <qmainwindow.h>
 #include <qmenubar.h>
 
+#include "../../shared/util.h"
+
 //TESTED_CLASS=
 //TESTED_FILES=
 
@@ -185,13 +187,13 @@ void tst_QWidgetAction::visibilityUpdate()
     action->setDefaultWidget(combo);
 
     tb.addAction(action);
-    qApp->processEvents(); //the call to show is delayed by the toolbar layout
-    QVERIFY(combo->isVisible());
+    //the call to show is delayed by the toolbar layout
+    QTRY_VERIFY(combo->isVisible());
     QVERIFY(action->isVisible());
 
     action->setVisible(false);
-    QTest::qWait(100); //the call to hide is delayed by the toolbar layout
-    QVERIFY(!combo->isVisible());
+    //the call to hide is delayed by the toolbar layout
+    QTRY_VERIFY(!combo->isVisible());
 
     delete action;
     // action also deletes combo
-- 
cgit v0.12


From 8dc1a39c9250c3301a298167a3005eab1bfc4aa8 Mon Sep 17 00:00:00 2001
From: Rohan McGovern <rohan.mcgovern@nokia.com>
Date: Thu, 17 Jun 2010 08:52:34 +1000
Subject: Attempt to stabilize tst_qwidget::syntheticEnterLeave

---
 tests/auto/qwidget/tst_qwidget.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 7d4f8ff..91d07de 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -9233,7 +9233,8 @@ void tst_QWidget::syntheticEnterLeave()
     QCOMPARE(grandChild->numLeaveEvents, 0);
     QCOMPARE(child1->numLeaveEvents, 0);
 
-    QCOMPARE(window.numEnterEvents, 1);
+    // This event arrives asynchronously
+    QTRY_COMPARE(window.numEnterEvents, 1);
     QCOMPARE(child2->numEnterEvents, 1);
     QCOMPARE(grandChild->numEnterEvents, 1);
     QCOMPARE(child1->numEnterEvents, 0);
-- 
cgit v0.12


From 3c33d95b9906758733edf2b6a79b19f2cfdd5add Mon Sep 17 00:00:00 2001
From: Rohan McGovern <rohan.mcgovern@nokia.com>
Date: Thu, 17 Jun 2010 08:55:41 +1000
Subject: Attempt to stabilize
 tst_qwidget::taskQTBUG_4055_sendSyntheticEnterLeave

---
 tests/auto/qwidget/tst_qwidget.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 91d07de..18cc2ba 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -9325,7 +9325,7 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave()
      child.show();
 
      // Make sure the child gets enter event and no mouse move event.
-     QCOMPARE(child.numEnterEvents, 1);
+     QTRY_COMPARE(child.numEnterEvents, 1);
      QCOMPARE(child.numMouseMoveEvents, 0);
 
      child.hide();
@@ -9336,7 +9336,7 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave()
      // Make sure the child gets enter event and mouse move event.
      // Note that we verify event->button() and event->buttons()
      // in SELChild::mouseMoveEvent().
-     QCOMPARE(child.numEnterEvents, 1);
+     QTRY_COMPARE(child.numEnterEvents, 1);
      QCOMPARE(child.numMouseMoveEvents, 1);
 
      // Sending synthetic enter/leave trough the parent's mousePressEvent handler.
@@ -9347,7 +9347,7 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave()
      QTest::mouseClick(&parent, Qt::LeftButton);
 
      // Make sure the child gets enter event and one mouse move event.
-     QCOMPARE(child.numEnterEvents, 1);
+     QTRY_COMPARE(child.numEnterEvents, 1);
      QCOMPARE(child.numMouseMoveEvents, 1);
 
      child.hide();
@@ -9356,7 +9356,7 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave()
      QTest::mouseClick(&parent, Qt::LeftButton);
 
      // Make sure the child gets enter event and no mouse move event.
-     QCOMPARE(child.numEnterEvents, 1);
+     QTRY_COMPARE(child.numEnterEvents, 1);
      QCOMPARE(child.numMouseMoveEvents, 0);
  }
 #endif
-- 
cgit v0.12


From eda8acac2197a12fff512b3b7da8a671a458de27 Mon Sep 17 00:00:00 2001
From: Rohan McGovern <rohan.mcgovern@nokia.com>
Date: Thu, 17 Jun 2010 08:57:03 +1000
Subject: Replace custom WAIT_FOR_CONDITION with semi-standard QTRY_COMPARE

---
 tests/auto/qwidget/tst_qwidget.cpp | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 18cc2ba..140356b 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -151,16 +151,6 @@ bool macHasAccessToWindowsServer()
 #undef Bool
 #endif
 
-// Will try to wait for the condition while allowing event processing
-// for a maximum of 2 seconds.
-#define WAIT_FOR_CONDITION(expr, expected) \
-    do { \
-        const int step = 100; \
-        for (int i = 0; i < 2000 && expr != expected; i+=step) { \
-            QTest::qWait(step); \
-        } \
-    } while(0)
-
 //TESTED_CLASS=
 //TESTED_FILES=
 
@@ -1657,13 +1647,11 @@ void tst_QWidget::focusChainOnHide()
     child->setFocus();
     qApp->processEvents();
 
-    WAIT_FOR_CONDITION(child->hasFocus(), true);
-    QCOMPARE(child->hasFocus(), true);
+    QTRY_COMPARE(child->hasFocus(), true);
     child->hide();
     qApp->processEvents();
 
-    WAIT_FOR_CONDITION(parent->hasFocus(), true);
-    QCOMPARE(parent->hasFocus(), true);
+    QTRY_COMPARE(parent->hasFocus(), true);
     QCOMPARE(parent, qApp->focusWidget());
 
     delete parent;
-- 
cgit v0.12


From e3ed9652e7dc492d89b30fbaef6b2f175cb9ff4b Mon Sep 17 00:00:00 2001
From: Rohan McGovern <rohan.mcgovern@nokia.com>
Date: Thu, 17 Jun 2010 09:43:06 +1000
Subject: Attempt to stabilize tst_lconvert

Increase timeout running lconvert from 1 to 10 seconds.
---
 tests/auto/linguist/lconvert/tst_lconvert.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/auto/linguist/lconvert/tst_lconvert.cpp b/tests/auto/linguist/lconvert/tst_lconvert.cpp
index 054da4a..998f588 100644
--- a/tests/auto/linguist/lconvert/tst_lconvert.cpp
+++ b/tests/auto/linguist/lconvert/tst_lconvert.cpp
@@ -153,7 +153,7 @@ void tst_lconvert::verifyReadFail(const QString &fn)
 {
     QProcess cvt;
     cvt.start(binDir + "/lconvert", QStringList() << (dataDir + fn));
-    QVERIFY(cvt.waitForFinished(1000));
+    QVERIFY(cvt.waitForFinished(10000));
     QVERIFY(cvt.exitStatus() == QProcess::NormalExit);
     QVERIFY2(cvt.exitCode() == 2, "Accepted invalid input");
 }
-- 
cgit v0.12


From 8e68084e44b54dc73f41c5d379f0b614248978d7 Mon Sep 17 00:00:00 2001
From: Rohan McGovern <rohan.mcgovern@nokia.com>
Date: Thu, 17 Jun 2010 10:07:55 +1000
Subject: Attempt to stabilize tst_qtimeline::value

Use the "slow" delays in all cases, not just on WinCE.
---
 tests/auto/qtimeline/tst_qtimeline.cpp | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/tests/auto/qtimeline/tst_qtimeline.cpp b/tests/auto/qtimeline/tst_qtimeline.cpp
index b15d2a4..47d0550 100644
--- a/tests/auto/qtimeline/tst_qtimeline.cpp
+++ b/tests/auto/qtimeline/tst_qtimeline.cpp
@@ -247,11 +247,7 @@ void tst_QTimeLine::frameRate()
 
 void tst_QTimeLine::value()
 {
-#ifdef Q_OS_WINCE //On WinCE timer resolution is bad - use longer times
     QTimeLine timeLine(2000);
-#else
-    QTimeLine timeLine(200);
-#endif
     QVERIFY(timeLine.currentValue() == 0.0);
 
     // Default speed
@@ -270,19 +266,11 @@ void tst_QTimeLine::value()
     timeLine.setCurrentTime(100);
     timeLine.start();
     // Let it update on its own
-#ifdef Q_OS_WINCE
     QTest::qWait(500);
-#else
-    QTest::qWait(50);
-#endif
     QCOMPARE(timeLine.state(), QTimeLine::Running);
     qreal value = timeLine.currentValue();
     timeLine.setDirection(QTimeLine::Backward);
-#ifdef Q_OS_WINCE
     QTest::qWait(1000);
-#else
-    QTest::qWait(100);
-#endif
     QVERIFY(timeLine.currentValue() < value);
     timeLine.stop();
 }
-- 
cgit v0.12


From 8af2f7b5085ee56d289584bddbccc8dead04b9d1 Mon Sep 17 00:00:00 2001
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Date: Thu, 17 Jun 2010 10:43:32 +0200
Subject: Fix possible crash in QTextLayout for glyphless items

Change e1915815bc5ef86b3844608bba46769da5173363 moved part of the
right bearing check out of the "non-whitespace-or-object" block of the
layout, which could potentially cause crashes for layouts that contained
items that were line separators or tabs etc. because we would access
the logical clusters array based on the position of e.g. the tab even
though it didn't have an entry. This could potentially give us an
arbitrary index which might cause an out of bounds when accessing the
glyphs array.

Task-number: QTBUG-11427
Reviewed-by: Simon Hausmann
---
 src/gui/text/qtextlayout.cpp               | 14 +++++++++++---
 tests/auto/qtextlayout/tst_qtextlayout.cpp | 19 +++++++++++++++++++
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index c5dd854..34272cc 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1646,7 +1646,7 @@ namespace {
     {
         LineBreakHelper()
             : glyphCount(0), maxGlyphs(0), currentPosition(0), fontEngine(0), logClusters(0),
-              manualWrap(false)
+              manualWrap(false), whiteSpaceOrObject(true)
         {
         }
 
@@ -1669,6 +1669,7 @@ namespace {
         const unsigned short *logClusters;
 
         bool manualWrap;
+        bool whiteSpaceOrObject;
 
         bool checkFullOtherwiseExtend(QScriptLine &line);
 
@@ -1678,8 +1679,10 @@ namespace {
         }
 
         inline glyph_t currentGlyph() const
-        {
+        {            
             Q_ASSERT(currentPosition > 0);
+            Q_ASSERT(logClusters[currentPosition - 1] < glyphs.numGlyphs);
+
             return glyphs.glyphs[logClusters[currentPosition - 1]];
         }
 
@@ -1814,6 +1817,7 @@ void QTextLine::layout_helper(int maxGlyphs)
         lbh.tmpData.descent = qMax(lbh.tmpData.descent, current.descent);
 
         if (current.analysis.flags == QScriptAnalysis::Tab && (alignment & (Qt::AlignLeft | Qt::AlignRight | Qt::AlignCenter | Qt::AlignJustify))) {
+            lbh.whiteSpaceOrObject = true;
             if (lbh.checkFullOtherwiseExtend(line))
                 goto found;
 
@@ -1830,6 +1834,7 @@ void QTextLine::layout_helper(int maxGlyphs)
             if (lbh.checkFullOtherwiseExtend(line))
                 goto found;
         } else if (current.analysis.flags == QScriptAnalysis::LineOrParagraphSeparator) {
+            lbh.whiteSpaceOrObject = true;
             // if the line consists only of the line separator make sure
             // we have a sane height
             if (!line.length && !lbh.tmpData.length)
@@ -1843,6 +1848,7 @@ void QTextLine::layout_helper(int maxGlyphs)
             line += lbh.tmpData;
             goto found;
         } else if (current.analysis.flags == QScriptAnalysis::Object) {
+            lbh.whiteSpaceOrObject = true;
             lbh.tmpData.length++;
 
             QTextFormat format = eng->formats()->format(eng->formatIndex(&eng->layoutData->items[item]));
@@ -1856,6 +1862,7 @@ void QTextLine::layout_helper(int maxGlyphs)
             if (lbh.checkFullOtherwiseExtend(line))
                 goto found;
         } else if (attributes[lbh.currentPosition].whiteSpace) {
+            lbh.whiteSpaceOrObject = true;
             while (lbh.currentPosition < end && attributes[lbh.currentPosition].whiteSpace)
                 addNextCluster(lbh.currentPosition, end, lbh.spaceData, lbh.glyphCount,
                                current, lbh.logClusters, lbh.glyphs);
@@ -1865,6 +1872,7 @@ void QTextLine::layout_helper(int maxGlyphs)
                 goto found;
             }
         } else {
+            lbh.whiteSpaceOrObject = false;
             bool sb_or_ws = false;
             do {
                 addNextCluster(lbh.currentPosition, end, lbh.tmpData, lbh.glyphCount,
@@ -1926,7 +1934,7 @@ void QTextLine::layout_helper(int maxGlyphs)
     LB_DEBUG("reached end of line");
     lbh.checkFullOtherwiseExtend(line);
 found:       
-    if (lbh.rightBearing > 0) // If right bearing has not yet been adjusted
+    if (lbh.rightBearing > 0 && !lbh.whiteSpaceOrObject) // If right bearing has not yet been adjusted
         lbh.adjustRightBearing();
     line.textAdvance = line.textWidth;
     line.textWidth -= qMin(QFixed(), lbh.rightBearing);
diff --git a/tests/auto/qtextlayout/tst_qtextlayout.cpp b/tests/auto/qtextlayout/tst_qtextlayout.cpp
index caf9bd3..6d27ef2 100644
--- a/tests/auto/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/qtextlayout/tst_qtextlayout.cpp
@@ -110,6 +110,7 @@ private slots:
     void longText();
     void widthOfTabs();
     void columnWrapWithTabs();
+    void glyphLessItems();
 
     // QTextLine stuff
     void setNumColumnsWrapAtWordBoundaryOrAnywhere();
@@ -1319,6 +1320,24 @@ void tst_QTextLayout::lineWidthFromBOM()
     // Don't spin into an infinite loop
  }
 
+void tst_QTextLayout::glyphLessItems()
+{
+    {
+        QTextLayout layout;
+        layout.setText("\t\t");
+        layout.beginLayout();
+        layout.createLine();
+        layout.endLayout();
+    }
+
+    {
+        QTextLayout layout;
+        layout.setText(QString::fromLatin1("AA") + QChar(QChar::LineSeparator));
+        layout.beginLayout();
+        layout.createLine();
+        layout.endLayout();
+    }
+}
 
 QTEST_MAIN(tst_QTextLayout)
 #include "tst_qtextlayout.moc"
-- 
cgit v0.12


From 4d0c4b9f09b35d707d437611519d0024f6f87a8c Mon Sep 17 00:00:00 2001
From: Joerg Bornemann <joerg.bornemann@nokia.com>
Date: Thu, 17 Jun 2010 13:38:27 +0200
Subject: QLocalSocket/Win: handle ERROR_MORE_DATA after read operation

If we're connected to a name pipe which is in message mode, we have to
handle the following case: ReadFile() or GetOverlappedResult() return
FALSE and GetLastError() returns ERROR_MORE_DATA.

This just means, that the message didn't fit into the pipe's internal
buffer. We must not handle this as error.

Task-number: QTBUG-11490
Reviewed-by: ossi
---
 src/network/socket/qlocalsocket_win.cpp | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp
index 5486f47..4907f2c 100644
--- a/src/network/socket/qlocalsocket_win.cpp
+++ b/src/network/socket/qlocalsocket_win.cpp
@@ -280,6 +280,12 @@ void QLocalSocketPrivate::startAsyncRead()
                 case ERROR_IO_PENDING:
                     // This is not an error. We're getting notified, when data arrives.
                     return;
+                case ERROR_MORE_DATA:
+                    // This is not an error. The synchronous read succeeded.
+                    // We're connected to a message mode pipe and the message
+                    // didn't fit into the pipe's system buffer.
+                    completeAsyncRead();
+                    break;
                 case ERROR_PIPE_NOT_CONNECTED:
                     {
                         // It may happen, that the other side closes the connection directly
@@ -309,9 +315,18 @@ bool QLocalSocketPrivate::completeAsyncRead()
 
     DWORD bytesRead;
     if (!GetOverlappedResult(handle, &overlapped, &bytesRead, TRUE)) {
-        if (GetLastError() != ERROR_PIPE_NOT_CONNECTED)
+        switch (GetLastError()) {
+        case ERROR_MORE_DATA:
+            // This is not an error. We're connected to a message mode
+            // pipe and the message didn't fit into the pipe's system
+            // buffer. We will read the remaining data in the next call.
+            break;
+        case ERROR_PIPE_NOT_CONNECTED:
             setErrorString(QLatin1String("QLocalSocketPrivate::completeAsyncRead"));
-        return false;
+            // fall through
+        default:
+            return false;
+        }
     }
 
     actualReadBufferSize += bytesRead;
-- 
cgit v0.12


From 3ab8e763a4ddf076dec48d71f0bae098325e1e50 Mon Sep 17 00:00:00 2001
From: Alessandro Portale <alessandro.portale@nokia.com>
Date: Thu, 17 Jun 2010 14:11:18 -0700
Subject: Assigning 0xA UID3s to the new standalone qml demos

Task-number: QTBUG-10148
Reviewed-by: Aleksandar Sasha Babic
---
 demos/embedded/qmlcalculator/deployment.pri  | 2 +-
 demos/embedded/qmlclocks/deployment.pri      | 2 +-
 demos/embedded/qmldialcontrol/deployment.pri | 2 +-
 demos/embedded/qmleasing/deployment.pri      | 2 +-
 demos/embedded/qmlflickr/deployment.pri      | 2 +-
 demos/embedded/qmlphotoviewer/deployment.pri | 2 +-
 demos/embedded/qmltwitter/deployment.pri     | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/demos/embedded/qmlcalculator/deployment.pri b/demos/embedded/qmlcalculator/deployment.pri
index d5078f6..a0bfbb6 100644
--- a/demos/embedded/qmlcalculator/deployment.pri
+++ b/demos/embedded/qmlcalculator/deployment.pri
@@ -1,6 +1,6 @@
 qmlcalculator_src = $$PWD/../../declarative/calculator
 symbian {
-    qmlcalculator_uid3 = EA8EBD98
+    qmlcalculator_uid3 = A000E3FB
     qmlcalculator_files.path = ../$$qmlcalculator_uid3
 }
 qmlcalculator_files.sources = $$qmlcalculator_src/calculator.qml $$qmlcalculator_src/Core
diff --git a/demos/embedded/qmlclocks/deployment.pri b/demos/embedded/qmlclocks/deployment.pri
index 84803ec..a30e403 100644
--- a/demos/embedded/qmlclocks/deployment.pri
+++ b/demos/embedded/qmlclocks/deployment.pri
@@ -1,6 +1,6 @@
 qmlclocks_src = $$PWD/../../../examples/declarative/toys/clocks
 symbian {
-    qmlclocks_uid3 = E19225B9
+    qmlclocks_uid3 = A000E3FC
     qmlclocks_files.path = ../$$qmlclocks_uid3
 }
 qmlclocks_files.sources = $$qmlclocks_src/clocks.qml $$qmlclocks_src/content
diff --git a/demos/embedded/qmldialcontrol/deployment.pri b/demos/embedded/qmldialcontrol/deployment.pri
index 8eb39b2..c04ed05 100644
--- a/demos/embedded/qmldialcontrol/deployment.pri
+++ b/demos/embedded/qmldialcontrol/deployment.pri
@@ -1,6 +1,6 @@
 qmldialcontrol_src = $$PWD/../../../examples/declarative/ui-components/dialcontrol
 symbian {
-    qmldialcontrol_uid3 = E59A9283
+    qmldialcontrol_uid3 = A000E3FD
     qmldialcontrol_files.path = ../$$qmldialcontrol_uid3
 }
 qmldialcontrol_files.sources = $$qmldialcontrol_src/dialcontrol.qml $$qmldialcontrol_src/content
diff --git a/demos/embedded/qmleasing/deployment.pri b/demos/embedded/qmleasing/deployment.pri
index ddab1ba..bc37348 100644
--- a/demos/embedded/qmleasing/deployment.pri
+++ b/demos/embedded/qmleasing/deployment.pri
@@ -1,6 +1,6 @@
 qmleasing_src = $$PWD/../../../examples/declarative/animation/easing
 symbian {
-    qmleasing_uid3 = E8E8E725
+    qmleasing_uid3 = A000E3FE
     qmleasing_files.path = ../$$qmleasing_uid3
 }
 qmleasing_files.sources = $$qmleasing_src/easing.qml
diff --git a/demos/embedded/qmlflickr/deployment.pri b/demos/embedded/qmlflickr/deployment.pri
index aef3198..c1f82df 100644
--- a/demos/embedded/qmlflickr/deployment.pri
+++ b/demos/embedded/qmlflickr/deployment.pri
@@ -1,6 +1,6 @@
 qmlflickr_src = $$PWD/../../declarative/flickr
 symbian {
-    qmlflickr_uid3 = E56D5A92
+    qmlflickr_uid3 = A000E3FF
     qmlflickr_files.path = ../$$qmlflickr_uid3
 }
 qmlflickr_files.sources = $$qmlflickr_src/flickr.qml $$qmlflickr_src/common $$qmlflickr_src/mobile
diff --git a/demos/embedded/qmlphotoviewer/deployment.pri b/demos/embedded/qmlphotoviewer/deployment.pri
index 99475cc..0a457de 100644
--- a/demos/embedded/qmlphotoviewer/deployment.pri
+++ b/demos/embedded/qmlphotoviewer/deployment.pri
@@ -1,6 +1,6 @@
 qmlphotoviewer_src = $$PWD/../../declarative/photoviewer
 symbian {
-    qmlphotoviewer_uid3 = E8567E72
+    qmlphotoviewer_uid3 = A000E400
     qmlphotoviewer_files.path = ../$$qmlphotoviewer_uid3
 }
 qmlphotoviewer_files.sources = $$qmlphotoviewer_src/photoviewer.qml $$qmlphotoviewer_src/PhotoViewerCore
diff --git a/demos/embedded/qmltwitter/deployment.pri b/demos/embedded/qmltwitter/deployment.pri
index e5bd884..34c8cd1 100644
--- a/demos/embedded/qmltwitter/deployment.pri
+++ b/demos/embedded/qmltwitter/deployment.pri
@@ -1,6 +1,6 @@
 qmltwitter_src = $$PWD/../../declarative/twitter
 symbian {
-    qmltwitter_uid3 = EEF6D468
+    qmltwitter_uid3 = A000E401
     qmltwitter_files.path = ../$$qmltwitter_uid3
 }
 qmltwitter_files.sources = $$qmltwitter_src/twitter.qml $$qmltwitter_src/TwitterCore
-- 
cgit v0.12


From 9294eee910ee630657749bbd22ea1e5b836fe00e Mon Sep 17 00:00:00 2001
From: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Date: Fri, 18 Jun 2010 12:52:01 +1000
Subject: Fixed memory lean in QImageVideoBuffer and QMemoryVideoBuffer.

QAbstractVideoBufferPrivate was intended to have virtual desctructor,
otherwise subclasses are not deleted properly.

Reviewed-by: Andrew den Exter
---
 src/multimedia/video/qabstractvideobuffer_p.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/multimedia/video/qabstractvideobuffer_p.h b/src/multimedia/video/qabstractvideobuffer_p.h
index c72f303..3303b36 100644
--- a/src/multimedia/video/qabstractvideobuffer_p.h
+++ b/src/multimedia/video/qabstractvideobuffer_p.h
@@ -65,6 +65,9 @@ public:
         : handleType(QAbstractVideoBuffer::NoHandle)
     {}
 
+    virtual ~QAbstractVideoBufferPrivate()
+    {}
+
     QAbstractVideoBuffer::HandleType handleType;
 };
 
-- 
cgit v0.12


From d8df7394e72ba536188fd4b5c4a59d02307588ee Mon Sep 17 00:00:00 2001
From: Miikka Heikkinen <miikka.heikkinen@digia.com>
Date: Fri, 18 Jun 2010 09:48:16 +0300
Subject: Always add QtNetwork include path when linking with QtWebkit in
 Symbian

Due to relative include problem with Symbian toolchains, it is
necessary to have include/QtNetwork in systeminclude paths when
there is #include <QtWebkit> statement in a source file, as QtWebkit
header includes QtNetwork header.

Task-number: QTBUG-11494
Reviewed-by: Janne Koskinen
---
 mkspecs/features/qt_functions.prf | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index a49c1a6..afc708a 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -51,8 +51,9 @@ defineTest(qtAddLibrary) {
             INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE
         }
         isEqual(LIB_NAME, QtWebKit) {
-            # Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain
+            # Needed for because relative inclusion problem in toolchain
             INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtXmlPatterns
+            INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtNetwork
         }
         isEqual(LIB_NAME, QtXmlPatterns) {
             # Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain
-- 
cgit v0.12


From 44349923bc43665de3f3adefe817cbfd85ebd04d Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Fri, 18 Jun 2010 11:33:59 +0200
Subject: Updated WebKit from /home/shausman/src/webkit/trunk to
 qtwebkit/qtwebkit-4.6 ( 85a48bdb52a81a9d18477a347fba5f6c930af416 )

Backported:

* https://bugs.webkit.org/show_bug.cgi?id=37719 -- Some HTML5 Input tags not treated as needing an input method.
* https://bugs.webkit.org/show_bug.cgi?id=40107 -- Impossible to set input method hints based HTML5 input types
---
 src/3rdparty/webkit/VERSION                        |  2 +-
 src/3rdparty/webkit/WebCore/ChangeLog              | 32 +++++++++
 .../webkit/WebCore/html/HTMLInputElement.cpp       |  6 +-
 .../webkit/WebCore/html/HTMLInputElement.h         |  4 ++
 src/3rdparty/webkit/WebKit/qt/ChangeLog            | 27 ++++++++
 .../WebKit/qt/WebCoreSupport/EditorClientQt.cpp    | 32 +++++----
 .../qgraphicswebview/resources/input_types.html    |  8 +++
 .../qgraphicswebview/tst_qgraphicswebview.cpp      | 75 ++++++++++++++++++++++
 .../qgraphicswebview/tst_qgraphicswebview.qrc      |  6 ++
 .../qt/tests/qwebview/resources/input_types.html   |  8 +++
 .../WebKit/qt/tests/qwebview/tst_qwebview.cpp      | 61 ++++++++++++++++++
 .../WebKit/qt/tests/qwebview/tst_qwebview.qrc      |  1 +
 12 files changed, 248 insertions(+), 14 deletions(-)
 create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/resources/input_types.html
 create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc
 create mode 100644 src/3rdparty/webkit/WebKit/qt/tests/qwebview/resources/input_types.html

diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index cbc163c..3595474 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
 
 and has the sha1 checksum
 
-        aa3f786bdba4dc153620ae7f98e4b0e41770d1d1
+        85a48bdb52a81a9d18477a347fba5f6c930af416
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index f01220e..63af196 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,35 @@
+2010-06-10  Raine Makelainen  <raine.makelainen@nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Impossible to set input method hints based HTML5 input types
+        https://bugs.webkit.org/show_bug.cgi?id=40107
+
+        Helper methods for checking "tel", "number", "email",
+        and "url" input element types.
+
+        * html/HTMLInputElement.h:
+        (WebCore::HTMLInputElement::isTelephoneField):
+        (WebCore::HTMLInputElement::isNumberField):
+        (WebCore::HTMLInputElement::isEmailField):
+        (WebCore::HTMLInputElement::isUrlField):
+
+2010-04-22  Ray Rischpater  <Raymond.Rischpater@Nokia.com>
+
+        Reviewed by Darin Adler.
+
+        In HTMLInputElement.cpp, shouldUseInputMethod does not return true for
+        some text input types (TELEPHONE, NUMBER, URL, and EMAIL). Addressed
+        this by changing shouldUseInputMethod to use internal methods to 
+        check that the field is a text field that isn't a password field. 
+
+        No new tests.
+
+        Fixes <https://bugs.webkit.org/show_bug.cgi?id=37719>
+
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::shouldUseInputMethod):
+
 2010-04-06  Abhinav Mithal <abhinav.mithal@nokia.com>
 
         Reviewed by Laszlo Gombos.
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp
index 652bc40..5746281 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp
+++ b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp
@@ -347,7 +347,11 @@ void HTMLInputElement::aboutToUnload()
 
 bool HTMLInputElement::shouldUseInputMethod() const
 {
-    return m_type == TEXT || m_type == SEARCH || m_type == ISINDEX;
+    // The reason IME's are disabled for the password field is because IMEs 
+    // can access the underlying password and display it in clear text --
+    // e.g. you can use it to access the stored password for any site 
+    // with only trivial effort.
+    return isTextField() && inputType() != PASSWORD;
 }
 
 void HTMLInputElement::handleFocusEvent()
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.h b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.h
index 0e2da32..50e9c00 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.h
+++ b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.h
@@ -109,6 +109,10 @@ public:
     virtual bool isSearchField() const { return m_type == SEARCH; }
     virtual bool isInputTypeHidden() const { return m_type == HIDDEN; }
     virtual bool isPasswordField() const { return m_type == PASSWORD; }
+    bool isTelephoneField() const { return m_type == TELEPHONE; }
+    bool isNumberField() const { return m_type == NUMBER; }
+    bool isEmailField() const { return m_type == EMAIL; }
+    bool isUrlField() const { return m_type == URL; }
 
     bool checked() const { return m_checked; }
     void setChecked(bool, bool sendChangeEvent = false);
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index 5d37901..4d3b4d1 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,30 @@
+2010-06-10  Raine Makelainen  <raine.makelainen@nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Impossible to set input method hints based HTML5 input types
+        https://bugs.webkit.org/show_bug.cgi?id=40107
+
+        EditorClientQt to set input method hints for "number", "tel",
+        "email", and "url" HTML input elements.
+
+        Tests for HTML input elements and input method hints added for
+        QGraphicsWebView and QWebView.
+
+        * WebCoreSupport/EditorClientQt.cpp:
+        (WebCore::EditorClientQt::setInputMethodState):
+        * tests/qgraphicswebview/resources/input_types.html: Added.
+        * tests/qgraphicswebview/tst_qgraphicswebview.cpp:
+        (GraphicsWebView::GraphicsWebView):
+        (GraphicsWebView::fireMouseClick):
+        (tst_QGraphicsWebView::focusInputTypes):
+        * tests/qgraphicswebview/tst_qgraphicswebview.qrc: Added.
+        * tests/qwebview/resources/input_types.html: Added.
+        * tests/qwebview/tst_qwebview.cpp:
+        (WebView::fireMouseClick):
+        (tst_QWebView::focusInputTypes):
+        * tests/qwebview/tst_qwebview.qrc:
+
 2010-05-19  Denis Dzyubenko <denis.dzyubenko@nokia.com>
 
         Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
index 27cc2f5..f2bfc50 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
@@ -601,20 +601,28 @@ void EditorClientQt::setInputMethodState(bool active)
     QWebPageClient* webPageClient = m_page->d->client;
     if (webPageClient) {
 #if QT_VERSION >= 0x040600
-        bool isPasswordField = false;
-        if (!active) {
-            // Setting the Qt::WA_InputMethodEnabled attribute true and Qt::ImhHiddenText flag
-            // for password fields. The Qt platform is responsible for determining which widget 
-            // will receive input method events for password fields.
-            Frame* frame = m_page->d->page->focusController()->focusedOrMainFrame();
-            if (frame && frame->document() && frame->document()->focusedNode()) {
-                if (frame->document()->focusedNode()->hasTagName(HTMLNames::inputTag)) {
-                    HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(frame->document()->focusedNode());
-                    active = isPasswordField = inputElement->isPasswordField();
-              }
+        HTMLInputElement* inputElement = 0;
+        Frame* frame = m_page->d->page->focusController()->focusedOrMainFrame();
+        if (frame && frame->document() && frame->document()->focusedNode())
+            if (frame->document()->focusedNode()->hasTagName(HTMLNames::inputTag))
+                inputElement = static_cast<HTMLInputElement*>(frame->document()->focusedNode());
+
+        if (inputElement) {
+            if (!active) {
+                // Setting the Qt::WA_InputMethodEnabled attribute true and Qt::ImhHiddenText flag
+                // for password fields. The Qt platform is responsible for determining which widget
+                // will receive input method events for password fields.
+                active = inputElement->isPasswordField();
+                webPageClient->setInputMethodHint(Qt::ImhHiddenText, active);
+            } else {
+                // Set input method hints for "number", "tel", "email", and "url" input elements.
+                webPageClient->setInputMethodHint(Qt::ImhDialableCharactersOnly, inputElement->isTelephoneField());
+                webPageClient->setInputMethodHint(Qt::ImhDigitsOnly, inputElement->isNumberField());
+                webPageClient->setInputMethodHint(Qt::ImhEmailCharactersOnly, inputElement->isEmailField());
+                webPageClient->setInputMethodHint(Qt::ImhUrlCharactersOnly, inputElement->isUrlField());
             }
         }
-        webPageClient->setInputMethodHint(Qt::ImhHiddenText, isPasswordField);
+
 #if defined(Q_WS_MAEMO_5) || defined(Q_OS_SYMBIAN)
         // disables auto-uppercase and predictive text for mobile devices
         webPageClient->setInputMethodHint(Qt::ImhNoAutoUppercase, true);
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/resources/input_types.html b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/resources/input_types.html
new file mode 100644
index 0000000..18ab314
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/resources/input_types.html
@@ -0,0 +1,8 @@
+<html><body>
+<input type='text' maxlength='20' style='position: absolute; left: 10px; top: 0px; height: 50px; width: 100px;'/><br>
+<input type='password' style='position: absolute; left: 10px; top: 50px; height: 50px; width: 100px;'/><br>
+<input type='tel' style='position: absolute; left: 10px; top: 100px; height: 50px; width: 100px;'/><br>
+<input type='number' style='position: absolute; left: 10px; top: 150px; height: 50px; width: 100px;'/><br>
+<input type='email' style='position: absolute; left: 10px; top: 200px; height: 50px; width: 100px;'/><br>
+<input type='url' style='position: absolute; left: 10px; top: 250px; height: 50px; width: 100px;'/><br>"
+</body></html>
\ No newline at end of file
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp
index a52e167..5efd8a5 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp
@@ -19,6 +19,7 @@
 
 #include <QtTest/QtTest>
 
+#include <QGraphicsSceneMouseEvent>
 #include <QGraphicsView>
 #include <qgraphicswebview.h>
 #include <qwebpage.h>
@@ -54,6 +55,7 @@ class tst_QGraphicsWebView : public QObject
 private slots:
     void qgraphicswebview();
     void crashOnViewlessWebPages();
+    void focusInputTypes();
 };
 
 void tst_QGraphicsWebView::qgraphicswebview()
@@ -97,6 +99,29 @@ private slots:
     }
 };
 
+class GraphicsWebView : public QGraphicsWebView
+{
+    Q_OBJECT
+
+public:
+    GraphicsWebView(QGraphicsItem* parent = 0): QGraphicsWebView(parent)
+    {
+    }
+
+    void fireMouseClick(QPointF point) {
+        QGraphicsSceneMouseEvent presEv(QEvent::GraphicsSceneMousePress);
+        presEv.setPos(point);
+        presEv.setButton(Qt::LeftButton);
+        presEv.setButtons(Qt::LeftButton);
+        QGraphicsSceneMouseEvent relEv(QEvent::GraphicsSceneMouseRelease);
+        relEv.setPos(point);
+        relEv.setButton(Qt::LeftButton);
+        relEv.setButtons(Qt::LeftButton);
+        QGraphicsWebView::sceneEvent(&presEv);
+        QGraphicsWebView::sceneEvent(&relEv);
+    }
+};
+
 void tst_QGraphicsWebView::crashOnViewlessWebPages()
 {
     QGraphicsScene scene;
@@ -125,6 +150,56 @@ void tst_QGraphicsWebView::crashOnViewlessWebPages()
     QVERIFY(::waitForSignal(page, SIGNAL(loadFinished(bool))));
 }
 
+void tst_QGraphicsWebView::focusInputTypes()
+{
+    QWebPage* page = new QWebPage;
+    GraphicsWebView* webView = new GraphicsWebView;
+    webView->setPage( page );
+    QGraphicsView* view = new QGraphicsView;
+    QGraphicsScene* scene = new QGraphicsScene(view);
+    view->setScene(scene);
+    scene->addItem(webView);
+    view->setGeometry(QRect(0,0,500,500));
+    QCoreApplication::processEvents();
+    QUrl url("qrc:///resources/input_types.html");
+    page->mainFrame()->load(url);
+    page->mainFrame()->setFocus();
+
+    QVERIFY(waitForSignal(page, SIGNAL(loadFinished(bool))));
+
+    // 'text' type
+    webView->fireMouseClick(QPointF(20.0, 10.0));
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) || defined(Q_OS_SYMBIAN)
+    QVERIFY(webView->inputMethodHints() & Qt::ImhNoAutoUppercase);
+    QVERIFY(webView->inputMethodHints() & Qt::ImhNoPredictiveText);
+#else
+    QVERIFY(webView->inputMethodHints() == Qt::ImhNone);
+#endif
+
+    // 'password' field
+    webView->fireMouseClick(QPointF(20.0, 60.0));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhHiddenText);
+
+    // 'tel' field
+    webView->fireMouseClick(QPointF(20.0, 110.0));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhDialableCharactersOnly);
+
+    // 'number' field
+    webView->fireMouseClick(QPointF(20.0, 160.0));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhDigitsOnly);
+
+    // 'email' field
+    webView->fireMouseClick(QPointF(20.0, 210.0));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhEmailCharactersOnly);
+
+    // 'url' field
+    webView->fireMouseClick(QPointF(20.0, 260.0));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhUrlCharactersOnly);
+
+    delete webView;
+    delete view;
+}
+
 QTEST_MAIN(tst_QGraphicsWebView)
 
 #include "tst_qgraphicswebview.moc"
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc
new file mode 100644
index 0000000..c91bb9c
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>resources/input_types.html</file>
+</qresource>
+</RCC>
+
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/resources/input_types.html b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/resources/input_types.html
new file mode 100644
index 0000000..18ab314
--- /dev/null
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/resources/input_types.html
@@ -0,0 +1,8 @@
+<html><body>
+<input type='text' maxlength='20' style='position: absolute; left: 10px; top: 0px; height: 50px; width: 100px;'/><br>
+<input type='password' style='position: absolute; left: 10px; top: 50px; height: 50px; width: 100px;'/><br>
+<input type='tel' style='position: absolute; left: 10px; top: 100px; height: 50px; width: 100px;'/><br>
+<input type='number' style='position: absolute; left: 10px; top: 150px; height: 50px; width: 100px;'/><br>
+<input type='email' style='position: absolute; left: 10px; top: 200px; height: 50px; width: 100px;'/><br>
+<input type='url' style='position: absolute; left: 10px; top: 250px; height: 50px; width: 100px;'/><br>"
+</body></html>
\ No newline at end of file
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp
index 27daf38..d466ab5 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp
@@ -46,10 +46,25 @@ private slots:
 
     void reusePage_data();
     void reusePage();
+    void focusInputTypes();
 
     void crashTests();
 };
 
+class WebView : public QWebView
+{
+    Q_OBJECT
+
+public:
+    void fireMouseClick(QPoint point) {
+        QMouseEvent presEv(QEvent::MouseButtonPress, point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
+        QMouseEvent relEv(QEvent::MouseButtonRelease, point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
+        QWebView::mousePressEvent(&presEv);
+        QWebView::mousePressEvent(&relEv);
+    }
+
+};
+
 // This will be called before the first test function is executed.
 // It is only called once.
 void tst_QWebView::initTestCase()
@@ -191,6 +206,52 @@ void tst_QWebView::crashTests()
 }
 
 
+void tst_QWebView::focusInputTypes()
+{
+    QWebPage* page = new QWebPage;
+    WebView* webView = new WebView;
+    webView->setPage( page );
+
+    QCoreApplication::processEvents();
+    QUrl url("qrc:///resources/input_types.html");
+    page->mainFrame()->load(url);
+    page->mainFrame()->setFocus();
+
+    QVERIFY(waitForSignal(page, SIGNAL(loadFinished(bool))));
+
+    // 'text' type
+    webView->fireMouseClick(QPoint(20, 10));
+#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) || defined(Q_OS_SYMBIAN)
+    QVERIFY(webView->inputMethodHints() & Qt::ImhNoAutoUppercase);
+    QVERIFY(webView->inputMethodHints() & Qt::ImhNoPredictiveText);
+#else
+    QVERIFY(webView->inputMethodHints() == Qt::ImhNone);
+#endif
+
+    // 'password' field
+    webView->fireMouseClick(QPoint(20, 60));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhHiddenText);
+
+    // 'tel' field
+    webView->fireMouseClick(QPoint(20, 110));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhDialableCharactersOnly);
+
+    // 'number' field
+    webView->fireMouseClick(QPoint(20, 160));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhDigitsOnly);
+
+    // 'email' field
+    webView->fireMouseClick(QPoint(20, 210));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhEmailCharactersOnly);
+
+    // 'url' field
+    webView->fireMouseClick(QPoint(20, 260));
+    QVERIFY(webView->inputMethodHints() & Qt::ImhUrlCharactersOnly);
+
+    delete webView;
+
+}
+
 QTEST_MAIN(tst_QWebView)
 #include "tst_qwebview.moc"
 
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.qrc b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.qrc
index ede34a9..5d71550 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.qrc
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.qrc
@@ -2,6 +2,7 @@
 <qresource>
     <file>data/index.html</file>
     <file>data/frame_a.html</file>
+    <file>resources/input_types.html</file>
 </qresource>
 </RCC>
 
-- 
cgit v0.12


From c0071441a1274796c8e1a3d2f9880dad6148a681 Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Fri, 18 Jun 2010 12:25:57 +0200
Subject: Re-enable data structure packing in Harfbuzz for RVCT

Re-ordered some gpos structures and removed the packing from HB_ShaperItem
as it's not worth it.

Reviewed-by: Andreas Kling
---
 src/3rdparty/harfbuzz/src/harfbuzz-global.h       |  2 +-
 src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h | 20 ++++++++++----------
 src/3rdparty/harfbuzz/src/harfbuzz-shaper.h       |  8 ++++----
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-global.h b/src/3rdparty/harfbuzz/src/harfbuzz-global.h
index bccd6a2..5b2b679 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-global.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-global.h
@@ -39,7 +39,7 @@
 #define HB_END_HEADER  /* nothing */
 #endif
 
-#if defined(__GNUC__) || defined(_MSC_VER)
+#if defined(__GNUC__) || defined(__ARMCC__) || defined(__CC_ARM) || defined(_MSC_VER)
 #define HB_USE_PACKED_STRUCTS
 #endif
 
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
index d513c27..10d7bfa 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
@@ -533,18 +533,18 @@ typedef struct HB_ContextPos_  HB_ContextPos;
 
 struct  HB_ChainPosRule_
 {
+  HB_UShort*            Backtrack;    /* array of backtrack glyph IDs     */
+  HB_UShort*            Input;        /* array of input glyph IDs         */
+  HB_UShort*            Lookahead;    /* array of lookahead glyph IDs     */
+  HB_PosLookupRecord*  PosLookupRecord;
+				      /* array of PosLookupRecords       */
   HB_UShort             BacktrackGlyphCount;
 				      /* total number of backtrack glyphs */
-  HB_UShort*            Backtrack;    /* array of backtrack glyph IDs     */
   HB_UShort             InputGlyphCount;
 				      /* total number of input glyphs     */
-  HB_UShort*            Input;        /* array of input glyph IDs         */
   HB_UShort             LookaheadGlyphCount;
 				      /* total number of lookahead glyphs */
-  HB_UShort*            Lookahead;    /* array of lookahead glyph IDs     */
   HB_UShort             PosCount;     /* number of PosLookupRecords       */
-  HB_PosLookupRecord*  PosLookupRecord;
-				      /* array of PosLookupRecords       */
 };
 
 typedef struct HB_ChainPosRule_  HB_ChainPosRule;
@@ -574,20 +574,20 @@ typedef struct HB_ChainContextPosFormat1_  HB_ChainContextPosFormat1;
 
 struct  HB_ChainPosClassRule_
 {
+  HB_UShort*            Backtrack;    /* array of backtrack classes      */
+  HB_UShort*            Input;        /* array of context classes        */
+  HB_UShort*            Lookahead;    /* array of lookahead classes      */
+  HB_PosLookupRecord*  PosLookupRecord;
+				      /* array of substitution lookups   */
   HB_UShort             BacktrackGlyphCount;
 				      /* total number of backtrack
 					 classes                         */
-  HB_UShort*            Backtrack;    /* array of backtrack classes      */
   HB_UShort             InputGlyphCount;
 				      /* total number of context classes */
-  HB_UShort*            Input;        /* array of context classes        */
   HB_UShort             LookaheadGlyphCount;
 				      /* total number of lookahead
 					 classes                         */
-  HB_UShort*            Lookahead;    /* array of lookahead classes      */
   HB_UShort             PosCount;     /* number of PosLookupRecords      */
-  HB_PosLookupRecord*  PosLookupRecord;
-				      /* array of substitution lookups   */
 };
 
 typedef struct HB_ChainPosClassRule_  HB_ChainPosClassRule;
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
index 32f5781..ab5c07a 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
@@ -258,6 +258,10 @@ typedef struct HB_Font_ {
     void *userData;
 } HB_FontRec;
 
+#ifdef HB_USE_PACKED_STRUCTS
+#pragma pack(pop)
+#endif
+
 typedef struct HB_ShaperItem_ HB_ShaperItem;
 
 struct HB_ShaperItem_ {
@@ -285,10 +289,6 @@ struct HB_ShaperItem_ {
 
 HB_Bool HB_ShapeItem(HB_ShaperItem *item);
 
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
 HB_END_HEADER
 
 #endif
-- 
cgit v0.12


From cb5cd5e8300ee0f845d9df7c912ba384fb7b96a0 Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Fri, 18 Jun 2010 12:46:46 +0200
Subject: Updated Harfbuzz from git+ssh://git.freedesktop.org/git/harfbuzz to
 508b02a252b524d34f3ed970eef3bdb6350a2b77

* Andreas' compression for HB_ValueRecord
---
 src/3rdparty/harfbuzz/src/harfbuzz-dump.c         |  8 +--
 src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h | 19 ++---
 src/3rdparty/harfbuzz/src/harfbuzz-gpos.c         | 85 +++++++++++------------
 3 files changed, 57 insertions(+), 55 deletions(-)

diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-dump.c b/src/3rdparty/harfbuzz/src/harfbuzz-dump.c
index a1ef6b6..54d42e9 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-dump.c
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-dump.c
@@ -519,13 +519,13 @@ Dump_ValueRecord (HB_ValueRecord *ValueRecord, FILE *stream, int indent, HB_Type
   if (value_format & HB_GPOS_FORMAT_HAVE_Y_ADVANCE)
     DUMP_FINT (ValueRecord, XAdvance);
   if (value_format & HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE)
-    RECURSE (Device, Device, &*ValueRecord->XPlacementDevice);
+    RECURSE (Device, Device, &*ValueRecord->DeviceTables[VR_X_PLACEMENT_DEVICE]);
   if (value_format & HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE)
-    RECURSE (Device, Device, &*ValueRecord->YPlacementDevice);
+    RECURSE (Device, Device, &*ValueRecord->DeviceTables[VR_Y_PLACEMENT_DEVICE]);
   if (value_format & HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE)
-    RECURSE (Device, Device, &*ValueRecord->XAdvanceDevice);
+    RECURSE (Device, Device, &*ValueRecord->DeviceTables[VR_X_ADVANCE_DEVICE]);
   if (value_format & HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE)
-    RECURSE (Device, Device, &*ValueRecord->YAdvanceDevice);
+    RECURSE (Device, Device, &*ValueRecord->DeviceTables[VR_Y_ADVANCE_DEVICE]);
 #ifdef HB_SUPPORT_MULTIPLE_MASTER
   if (value_format & HB_GPOS_FORMAT_HAVE_X_ID_PLACEMENT)
     DUMP_FUINT (ValueRecord, XIdPlacement);
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
index 10d7bfa..3a4952b 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
@@ -38,6 +38,11 @@ HB_BEGIN_HEADER
 
 /* shared tables */
 
+#define VR_X_PLACEMENT_DEVICE 0
+#define VR_Y_PLACEMENT_DEVICE 1
+#define VR_X_ADVANCE_DEVICE   2
+#define VR_Y_ADVANCE_DEVICE   3
+
 struct  HB_ValueRecord_
 {
   HB_Short    XPlacement;             /* horizontal adjustment for
@@ -48,14 +53,10 @@ struct  HB_ValueRecord_
 					 advance                        */
   HB_Short    YAdvance;               /* vertical adjustment for
 					 advance                        */
-  HB_Device*  XPlacementDevice;       /* device table for horizontal
-					 placement                      */
-  HB_Device*  YPlacementDevice;       /* device table for vertical
-					 placement                      */
-  HB_Device*  XAdvanceDevice;         /* device table for horizontal
-					 advance                        */
-  HB_Device*  YAdvanceDevice;         /* device table for vertical
-					 advance                        */
+
+  HB_Device** DeviceTables;           /* device tables for placement
+					 and advance                    */
+
 #ifdef HB_SUPPORT_MULTIPLE_MASTER
   HB_UShort   XIdPlacement;           /* horizontal placement metric ID */
   HB_UShort   YIdPlacement;           /* vertical placement metric ID   */
@@ -70,6 +71,8 @@ typedef struct HB_ValueRecord_  HB_ValueRecord;
 /* Mask values to scan the value format of the ValueRecord structure.
  We always expand compressed ValueRecords of the font.              */
 
+#define HB_GPOS_FORMAT_HAVE_DEVICE_TABLES       0x00F0
+
 #define HB_GPOS_FORMAT_HAVE_X_PLACEMENT         0x0001
 #define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT         0x0002
 #define HB_GPOS_FORMAT_HAVE_X_ADVANCE           0x0004
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
index 61e42fd..1933f3d 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
@@ -256,6 +256,20 @@ static HB_Error  Load_ValueRecord( HB_ValueRecord*  vr,
   else
     vr->YAdvance = 0;
 
+  if ( format & HB_GPOS_FORMAT_HAVE_DEVICE_TABLES )
+  {
+    if ( ALLOC_ARRAY( vr->DeviceTables, 4, HB_Device ) )
+      return error;
+    vr->DeviceTables[VR_X_ADVANCE_DEVICE] = 0;
+    vr->DeviceTables[VR_Y_ADVANCE_DEVICE] = 0;
+    vr->DeviceTables[VR_X_PLACEMENT_DEVICE] = 0;
+    vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] = 0;
+  }
+  else
+  {
+    vr->DeviceTables = 0;
+  }
+
   if ( format & HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE )
   {
     if ( ACCESS_Frame( 2L ) )
@@ -271,18 +285,11 @@ static HB_Error  Load_ValueRecord( HB_ValueRecord*  vr,
 
       cur_offset = FILE_Pos();
       if ( FILE_Seek( new_offset ) ||
-	   ( error = _HB_OPEN_Load_Device( &vr->XPlacementDevice,
+	   ( error = _HB_OPEN_Load_Device( &vr->DeviceTables[VR_X_PLACEMENT_DEVICE],
 				  stream ) ) != HB_Err_Ok )
 	return error;
       (void)FILE_Seek( cur_offset );
     }
-    else
-      goto empty1;
-  }
-  else
-  {
-  empty1:
-    vr->XPlacementDevice = 0;
   }
 
   if ( format & HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE )
@@ -300,18 +307,11 @@ static HB_Error  Load_ValueRecord( HB_ValueRecord*  vr,
 
       cur_offset = FILE_Pos();
       if ( FILE_Seek( new_offset ) ||
-	   ( error = _HB_OPEN_Load_Device( &vr->YPlacementDevice,
+	   ( error = _HB_OPEN_Load_Device( &vr->DeviceTables[VR_Y_PLACEMENT_DEVICE],
 				  stream ) ) != HB_Err_Ok )
 	goto Fail3;
       (void)FILE_Seek( cur_offset );
     }
-    else
-      goto empty2;
-  }
-  else
-  {
-  empty2:
-    vr->YPlacementDevice = 0;
   }
 
   if ( format & HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE )
@@ -329,18 +329,11 @@ static HB_Error  Load_ValueRecord( HB_ValueRecord*  vr,
 
       cur_offset = FILE_Pos();
       if ( FILE_Seek( new_offset ) ||
-	   ( error = _HB_OPEN_Load_Device( &vr->XAdvanceDevice,
+	   ( error = _HB_OPEN_Load_Device( &vr->DeviceTables[VR_X_ADVANCE_DEVICE],
 				  stream ) ) != HB_Err_Ok )
 	goto Fail2;
       (void)FILE_Seek( cur_offset );
     }
-    else
-      goto empty3;
-  }
-  else
-  {
-  empty3:
-    vr->XAdvanceDevice = 0;
   }
 
   if ( format & HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE )
@@ -358,18 +351,11 @@ static HB_Error  Load_ValueRecord( HB_ValueRecord*  vr,
 
       cur_offset = FILE_Pos();
       if ( FILE_Seek( new_offset ) ||
-	   ( error = _HB_OPEN_Load_Device( &vr->YAdvanceDevice,
+	   ( error = _HB_OPEN_Load_Device( &vr->DeviceTables[VR_Y_ADVANCE_DEVICE],
 				  stream ) ) != HB_Err_Ok )
 	goto Fail1;
       (void)FILE_Seek( cur_offset );
     }
-    else
-      goto empty4;
-  }
-  else
-  {
-  empty4:
-    vr->YAdvanceDevice = 0;
   }
 
   if ( format & HB_GPOS_FORMAT_HAVE_X_ID_PLACEMENT )
@@ -447,13 +433,15 @@ static HB_Error  Load_ValueRecord( HB_ValueRecord*  vr,
   return HB_Err_Ok;
 
 Fail1:
-  _HB_OPEN_Free_Device( &vr->YAdvanceDevice );
+  _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_ADVANCE_DEVICE] );
 
 Fail2:
-  _HB_OPEN_Free_Device( &vr->XAdvanceDevice );
+  _HB_OPEN_Free_Device( &vr->DeviceTables[VR_X_ADVANCE_DEVICE] );
 
 Fail3:
-  _HB_OPEN_Free_Device( &vr->YPlacementDevice );
+  _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] );
+
+  FREE( vr->DeviceTables );
   return error;
 }
 
@@ -462,13 +450,14 @@ static void  Free_ValueRecord( HB_ValueRecord*  vr,
 			       HB_UShort         format )
 {
   if ( format & HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE )
-    _HB_OPEN_Free_Device( &vr->YAdvanceDevice );
+    _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_ADVANCE_DEVICE] );
   if ( format & HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE )
-    _HB_OPEN_Free_Device( &vr->XAdvanceDevice );
+    _HB_OPEN_Free_Device( &vr->DeviceTables[VR_X_ADVANCE_DEVICE] );
   if ( format & HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE )
-    _HB_OPEN_Free_Device( &vr->YPlacementDevice );
+    _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] );
   if ( format & HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE )
-    _HB_OPEN_Free_Device( &vr->XPlacementDevice );
+    _HB_OPEN_Free_Device( &vr->DeviceTables[VR_X_PLACEMENT_DEVICE] );
+  FREE( vr->DeviceTables );
 }
 
 
@@ -511,24 +500,34 @@ static HB_Error  Get_ValueRecord( GPOS_Instance*    gpi,
   {
     /* pixel -> fractional pixel */
 
+    if ( format & HB_GPOS_FORMAT_HAVE_DEVICE_TABLES )
+    {
+      if ( ALLOC_ARRAY( vr->DeviceTables, 4, HB_Device ) )
+        return error;
+      vr->DeviceTables[VR_X_ADVANCE_DEVICE] = 0;
+      vr->DeviceTables[VR_Y_ADVANCE_DEVICE] = 0;
+      vr->DeviceTables[VR_X_PLACEMENT_DEVICE] = 0;
+      vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] = 0;
+    }
+
     if ( format & HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE )
     {
-      _HB_OPEN_Get_Device( &vr->XPlacementDevice, x_ppem, &pixel_value );
+      _HB_OPEN_Get_Device( &vr->DeviceTables[VR_X_PLACEMENT_DEVICE], x_ppem, &pixel_value );
       gd->x_pos += pixel_value << 6;
     }
     if ( format & HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE )
     {
-      _HB_OPEN_Get_Device( &vr->YPlacementDevice, y_ppem, &pixel_value );
+      _HB_OPEN_Get_Device( &vr->DeviceTables[VR_Y_PLACEMENT_DEVICE], y_ppem, &pixel_value );
       gd->y_pos += pixel_value << 6;
     }
     if ( format & HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE )
     {
-      _HB_OPEN_Get_Device( &vr->XAdvanceDevice, x_ppem, &pixel_value );
+      _HB_OPEN_Get_Device( &vr->DeviceTables[VR_X_ADVANCE_DEVICE], x_ppem, &pixel_value );
       gd->x_advance += pixel_value << 6;
     }
     if ( format & HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE )
     {
-      _HB_OPEN_Get_Device( &vr->YAdvanceDevice, y_ppem, &pixel_value );
+      _HB_OPEN_Get_Device( &vr->DeviceTables[VR_Y_ADVANCE_DEVICE], y_ppem, &pixel_value );
       gd->y_advance += pixel_value << 6;
     }
   }
-- 
cgit v0.12


From 53cdc77370be026d50afc5d0438b351d22d1df63 Mon Sep 17 00:00:00 2001
From: Miikka Heikkinen <miikka.heikkinen@digia.com>
Date: Fri, 18 Jun 2010 15:22:07 +0300
Subject: Fixed bearer plugin deployment in libinfixed builds

Libinfix was in incorrect location in deployment statements.

Reviewed-by: Jason Barron
---
 src/s60installs/s60installs.pro | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index 6d8513e..be5fa86 100644
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -71,13 +71,13 @@ symbian: {
         "   \"$$bearerPluginLocation/qsymbianbearer$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
         "ELSEIF package(0x1028315F)" \
         "   \"$$pluginLocations/qts60plugin_5_0$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qts60plugin_5_0$${QT_LIBINFIX}.dll\"" \
-        "   \"$$bearerPluginLocation/qsymbianbearer_3_2$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
+        "   \"$$bearerPluginLocation/qsymbianbearer$${QT_LIBINFIX}_3_2.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
         "ELSEIF package(0x102752AE)" \
         "   \"$$pluginLocations/qts60plugin_3_2$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qts60plugin_3_2$${QT_LIBINFIX}.dll\"" \
-        "   \"$$bearerPluginLocation/qsymbianbearer_3_2$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
+        "   \"$$bearerPluginLocation/qsymbianbearer$${QT_LIBINFIX}_3_2.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
         "ELSEIF package(0x102032BE)" \
         "   \"$$pluginLocations/qts60plugin_3_1$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qts60plugin_3_1$${QT_LIBINFIX}.dll\"" \
-        "   \"$$bearerPluginLocation/qsymbianbearer_3_1$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
+        "   \"$$bearerPluginLocation/qsymbianbearer$${QT_LIBINFIX}_3_1.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
         "ELSE" \
         "   \"$$pluginLocations/qts60plugin_5_0$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qts60plugin_5_0$${QT_LIBINFIX}.dll\"" \
         "   \"$$bearerPluginLocation/qsymbianbearer$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qsymbianbearer$${QT_LIBINFIX}.dll\"" \
-- 
cgit v0.12


From 3c221e33eec651dc83aaf5219565816169fd2a93 Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Fri, 18 Jun 2010 14:27:07 +0200
Subject: Updated WebKit from /home/shausman/src/webkit/trunk to
 qtwebkit/qtwebkit-4.6 ( a13977ce2aba31808a046cddc082a84dc316d78b )

Changes in WebKit/qt since the last update:

++ b/WebKit/qt/ChangeLog
2010-06-18  Simon Hausmann  <simon.hausmann@nokia.com>

        Reviewed by Antti Koivisto.

        REGRESSION(r60958) [Qt] qwebpage::inputMethods auto-test fails
        https://bugs.webkit.org/show_bug.cgi?id=40830

        When activating a regular input method field, always set or unset the ImhHiddenText
        input method hint.

        * WebCoreSupport/EditorClientQt.cpp:
        (WebCore::EditorClientQt::setInputMethodState):
---
 src/3rdparty/webkit/VERSION                                 |  2 +-
 src/3rdparty/webkit/WebKit/qt/ChangeLog                     | 13 +++++++++++++
 .../webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp      |  1 +
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 3595474..482982d 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
 
 and has the sha1 checksum
 
-        85a48bdb52a81a9d18477a347fba5f6c930af416
+        a13977ce2aba31808a046cddc082a84dc316d78b
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index 4d3b4d1..cf335a1 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,16 @@
+2010-06-18  Simon Hausmann  <simon.hausmann@nokia.com>
+
+        Reviewed by Antti Koivisto.
+
+        REGRESSION(r60958) [Qt] qwebpage::inputMethods auto-test fails
+        https://bugs.webkit.org/show_bug.cgi?id=40830
+
+        When activating a regular input method field, always set or unset the ImhHiddenText
+        input method hint.
+
+        * WebCoreSupport/EditorClientQt.cpp:
+        (WebCore::EditorClientQt::setInputMethodState):
+
 2010-06-10  Raine Makelainen  <raine.makelainen@nokia.com>
 
         Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
index f2bfc50..3255c8e 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
@@ -620,6 +620,7 @@ void EditorClientQt::setInputMethodState(bool active)
                 webPageClient->setInputMethodHint(Qt::ImhDigitsOnly, inputElement->isNumberField());
                 webPageClient->setInputMethodHint(Qt::ImhEmailCharactersOnly, inputElement->isEmailField());
                 webPageClient->setInputMethodHint(Qt::ImhUrlCharactersOnly, inputElement->isUrlField());
+                webPageClient->setInputMethodHint(Qt::ImhHiddenText, inputElement->isPasswordField());
             }
         }
 
-- 
cgit v0.12


From 38adb59a9e80a23d37ff0820ef62ebd45ab1e4ae Mon Sep 17 00:00:00 2001
From: Kim Motoyoshi Kalland <kim.kalland@nokia.com>
Date: Fri, 18 Jun 2010 15:09:12 +0200
Subject: Fixed device context leak in QGLWidget on Windows.

Commit 392123ef5432643d1047d1e1dd71512ec39d382d introduced the
leak.

Task-number: QTBUG-11432
Reviewed-by: Trond
---
 src/gui/kernel/qapplication_win.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index b3fc2f6..d6896c0 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -933,6 +933,9 @@ const QString qt_reg_winclass(QWidget *w)        // register window class
     if (qt_widget_private(w)->isGLWidget) {
         cname = QLatin1String("QGLWidget");
         style = CS_DBLCLKS;
+#ifndef Q_WS_WINCE
+        style |= CS_OWNDC;
+#endif
         icon  = true;
     } else if (flags & Qt::MSWindowsOwnDC) {
         cname = QLatin1String("QWidgetOwnDC");
-- 
cgit v0.12


From 2694a7b2b2b8293cf55ac9861b97bec1fc6650dd Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Fri, 18 Jun 2010 16:21:36 +0200
Subject: Updated Harfbuzz from git+ssh://git.freedesktop.org/git/harfbuzz to
 5699175f55acbdfa4ac95ab6c727ebd4a201f3a2

Author: Andreas Kling <andreas.kling@nokia.com>
Date:   Fri Jun 18 16:10:31 2010 +0200

    Make HB_AnchorFormat3's Device tables a pointer array

    Saves sizeof(pointer) * 1 when the font doesn't have these tables.
    Cuts resident memory consumption by 40kB when loading qt.nokia.com
    in QtWebKit.

    Signed-off-by: Simon Hausmann <simon.hausmann@nokia.com>
---
 src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h |  5 +--
 src/3rdparty/harfbuzz/src/harfbuzz-gpos.c         | 43 +++++++++++++++--------
 2 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
index 3a4952b..39f3159 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
@@ -105,13 +105,14 @@ struct  HB_AnchorFormat2_
 
 typedef struct HB_AnchorFormat2_  HB_AnchorFormat2;
 
+#define AF3_X_DEVICE_TABLE 0
+#define AF3_Y_DEVICE_TABLE 1
 
 struct  HB_AnchorFormat3_
 {
   HB_Short    XCoordinate;            /* horizontal value              */
   HB_Short    YCoordinate;            /* vertical value                */
-  HB_Device*  XDeviceTable;           /* device table for X coordinate */
-  HB_Device*  YDeviceTable;           /* device table for Y coordinate */
+  HB_Device** DeviceTables;           /* device tables for coordinates */
 };
 
 typedef struct HB_AnchorFormat3_  HB_AnchorFormat3;
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
index 1933f3d..d71a85e 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
@@ -631,19 +631,21 @@ static HB_Error  Load_Anchor( HB_Anchor*  an,
 
     if ( new_offset )
     {
+      if ( ALLOC_ARRAY( an->af.af3.DeviceTables, 2, HB_Device ) )
+        return error;
+
+      an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] = 0;
+      an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE] = 0;
+
       new_offset += base_offset;
 
       cur_offset = FILE_Pos();
       if ( FILE_Seek( new_offset ) ||
-	   ( error = _HB_OPEN_Load_Device( &an->af.af3.XDeviceTable,
+	   ( error = _HB_OPEN_Load_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE],
 				  stream ) ) != HB_Err_Ok )
 	return error;
       (void)FILE_Seek( cur_offset );
     }
-    else
-    {
-      an->af.af3.XDeviceTable = 0;
-    }
 
     if ( ACCESS_Frame( 2L ) )
       goto Fail;
@@ -654,19 +656,24 @@ static HB_Error  Load_Anchor( HB_Anchor*  an,
 
     if ( new_offset )
     {
+      if ( !an->af.af3.DeviceTables )
+      {
+        if ( ALLOC_ARRAY( an->af.af3.DeviceTables, 2, HB_Device ) )
+          return error;
+
+        an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] = 0;
+        an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE] = 0;
+      }
+
       new_offset += base_offset;
 
       cur_offset = FILE_Pos();
       if ( FILE_Seek( new_offset ) ||
-	   ( error = _HB_OPEN_Load_Device( &an->af.af3.YDeviceTable,
+	   ( error = _HB_OPEN_Load_Device( &an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE],
 				  stream ) ) != HB_Err_Ok )
 	goto Fail;
       (void)FILE_Seek( cur_offset );
     }
-    else
-    {
-      an->af.af3.YDeviceTable = 0;
-    }
     break;
 
   case 4:
@@ -691,7 +698,9 @@ static HB_Error  Load_Anchor( HB_Anchor*  an,
   return HB_Err_Ok;
 
 Fail:
-  _HB_OPEN_Free_Device( &an->af.af3.XDeviceTable );
+  _HB_OPEN_Free_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] );
+
+  FREE( an->af.af3.DeviceTables );
   return error;
 }
 
@@ -700,8 +709,9 @@ static void  Free_Anchor( HB_Anchor*  an)
 {
   if ( an->PosFormat == 3 )
   {
-    _HB_OPEN_Free_Device( &an->af.af3.YDeviceTable );
-    _HB_OPEN_Free_Device( &an->af.af3.XDeviceTable );
+    _HB_OPEN_Free_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] );
+    _HB_OPEN_Free_Device( &an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE] );
+    FREE( an->af.af3.DeviceTables );
   }
 }
 
@@ -769,9 +779,12 @@ static HB_Error  Get_Anchor( GPOS_Instance*   gpi,
   case 3:
     if ( !gpi->dvi )
     {
-      _HB_OPEN_Get_Device( &an->af.af3.XDeviceTable, x_ppem, &pixel_value );
+      if ( ALLOC_ARRAY( an->af.af3.DeviceTables, 2, HB_Device ) )
+        return error;
+
+      _HB_OPEN_Get_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE], x_ppem, &pixel_value );
       *x_value = pixel_value << 6;
-      _HB_OPEN_Get_Device( &an->af.af3.YDeviceTable, y_ppem, &pixel_value );
+      _HB_OPEN_Get_Device( &an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE], y_ppem, &pixel_value );
       *y_value = pixel_value << 6;
     }
     else
-- 
cgit v0.12


From 71adbdf6169829b1a5b34a6f71c60915c75f7270 Mon Sep 17 00:00:00 2001
From: mread <qt-info@nokia.com>
Date: Mon, 21 Jun 2010 10:36:00 +0100
Subject: Fix for TLS problem which causes apps to crash in the S60 port

QS60Data member data was being reset to zero after initialisation by
a memclr call in QS60Data. The correct way to initialise the member
data is with the member initialisation list, so this is now done,
and all member data is now correctly initialised.

Reviewed-by: Jason Barron
---
 src/gui/kernel/qt_s60_p.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index ed53ccf..204e38c 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -253,8 +253,35 @@ private:
 };
 
 inline QS60Data::QS60Data()
+: uid(TUid::Null()),
+  screenDepth(0),
+  screenWidthInPixels(0),
+  screenHeightInPixels(0),
+  screenWidthInTwips(0),
+  screenHeightInTwips(0),
+  defaultDpiX(0),
+  defaultDpiY(0),
+  curWin(0),
+  virtualMousePressedKeys(0),
+  virtualMouseAccelDX(0),
+  virtualMouseAccelDY(0),
+  virtualMouseMaxAccel(0),
+#ifndef Q_SYMBIAN_FIXED_POINTER_CURSORS
+  brokenPointerCursors(0),
+#endif
+  hasTouchscreen(0),
+  mouseInteractionEnabled(0),
+  virtualMouseRequired(0),
+  qtOwnsS60Environment(0),
+  supportsPremultipliedAlpha(0),
+  avkonComponentsSupportTransparency(0),
+  menuBeingConstructed(0),
+  memoryLimitForHwRendering(0),
+  s60ApplicationFactory(0),
+#ifdef Q_WS_S60
+  s60InstalledTrapHandler(0)
+#endif
 {
-    memclr(this, sizeof(QS60Data)); //zero init data
 }
 
 inline void QS60Data::updateScreenSize()
-- 
cgit v0.12


From 21facd1d951fd6f47e8ba8acea0631cda2fb22af Mon Sep 17 00:00:00 2001
From: Miikka Heikkinen <miikka.heikkinen@digia.com>
Date: Mon, 21 Jun 2010 12:54:35 +0300
Subject: Added Samsung and Sony-Ericsson manufacturer IDs to sqlite3.sis

Task-number: QTBUG-11515
Reviewed-by: TrustMe
---
 src/s60installs/sqlite3.sis | Bin 286452 -> 286480 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/src/s60installs/sqlite3.sis b/src/s60installs/sqlite3.sis
index 11e069e..12d01f9 100644
Binary files a/src/s60installs/sqlite3.sis and b/src/s60installs/sqlite3.sis differ
-- 
cgit v0.12


From 09b770aee2a39e7445d5154e7b8ba3ccc249d55f Mon Sep 17 00:00:00 2001
From: Shane Kearns <shane.kearns@accenture.com>
Date: Mon, 21 Jun 2010 14:22:38 +0100
Subject: Update 4.7-beta2 def files

Task-number: QTBUG-11585
Reviewed-by: Trust Me
---
 src/s60installs/bwins/QtCoreu.def        |  1 +
 src/s60installs/bwins/QtDeclarativeu.def | 13 +++++++++++--
 src/s60installs/bwins/QtGuiu.def         |  7 +++++++
 src/s60installs/eabi/QtCoreu.def         |  2 ++
 src/s60installs/eabi/QtDeclarativeu.def  | 17 +++++++++++++----
 src/s60installs/eabi/QtGuiu.def          |  5 +++++
 6 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def
index c6d7a2c..45caeb0 100644
--- a/src/s60installs/bwins/QtCoreu.def
+++ b/src/s60installs/bwins/QtCoreu.def
@@ -4479,4 +4479,5 @@ EXPORTS
 	?trUtf8@QEventDispatcherSymbian@@SA?AVQString@@PBD0@Z @ 4478 NONAME ; class QString QEventDispatcherSymbian::trUtf8(char const *, char const *)
 	?trUtf8@QEventDispatcherSymbian@@SA?AVQString@@PBD0H@Z @ 4479 NONAME ; class QString QEventDispatcherSymbian::trUtf8(char const *, char const *, int)
 	?staticMetaObject@QEventDispatcherSymbian@@2UQMetaObject@@B @ 4480 NONAME ; struct QMetaObject const QEventDispatcherSymbian::staticMetaObject
+	?textDirection@QLocale@@QBE?AW4LayoutDirection@Qt@@XZ @ 4481 NONAME ; enum Qt::LayoutDirection QLocale::textDirection(void) const
 
diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def
index 2992cf6..0aac72b 100644
--- a/src/s60installs/bwins/QtDeclarativeu.def
+++ b/src/s60installs/bwins/QtDeclarativeu.def
@@ -4025,7 +4025,7 @@ EXPORTS
 	?get@QDeclarativeXmlListModel@@QBE?AVQScriptValue@@H@Z @ 4024 NONAME ; class QScriptValue QDeclarativeXmlListModel::get(int) const
 	?setScale@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4025 NONAME ; void QDeclarativeParentChange::setScale(class QDeclarativeScriptString)
 	?showInputPanelOnFocusChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 4026 NONAME ABSENT ; void QDeclarativeTextEdit::showInputPanelOnFocusChanged(bool)
-	?focusOutEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4027 NONAME ; void QDeclarativeTextInput::focusOutEvent(class QFocusEvent *)
+	?focusOutEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4027 NONAME ABSENT ; void QDeclarativeTextInput::focusOutEvent(class QFocusEvent *)
 	?height@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4028 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::height(void) const
 	?showInputPanelOnFocus@QDeclarativeTextEdit@@QBE_NXZ @ 4029 NONAME ABSENT ; bool QDeclarativeTextEdit::showInputPanelOnFocus(void) const
 	?errorString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 4030 NONAME ; class QString QDeclarativeComponent::errorString(void) const
@@ -4035,7 +4035,7 @@ EXPORTS
 	?rotation@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4034 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::rotation(void) const
 	?paintedHeight@QDeclarativeTextEdit@@QBEMXZ @ 4035 NONAME ; float QDeclarativeTextEdit::paintedHeight(void) const
 	?paintedWidth@QDeclarativeTextEdit@@QBEMXZ @ 4036 NONAME ; float QDeclarativeTextEdit::paintedWidth(void) const
-	?focusOutEvent@QDeclarativeTextEdit@@MAEXPAVQFocusEvent@@@Z @ 4037 NONAME ; void QDeclarativeTextEdit::focusOutEvent(class QFocusEvent *)
+	?focusOutEvent@QDeclarativeTextEdit@@MAEXPAVQFocusEvent@@@Z @ 4037 NONAME ABSENT ; void QDeclarativeTextEdit::focusOutEvent(class QFocusEvent *)
 	??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@AAVQDeclarativeExpressionPrivate@@@Z @ 4038 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &, class QDeclarativeExpressionPrivate &)
 	??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@PAVQObject@@ABVQString@@1@Z @ 4039 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QObject *, class QString const &, class QObject *)
 	?queryError@QDeclarativeXmlListModel@@AAEXPAXABVQString@@@Z @ 4040 NONAME ; void QDeclarativeXmlListModel::queryError(void *, class QString const &)
@@ -4088,4 +4088,13 @@ EXPORTS
 	?positionToRectangle@QDeclarativeTextInput@@QBE?AVQRectF@@H@Z @ 4087 NONAME ; class QRectF QDeclarativeTextInput::positionToRectangle(int) const
 	?positionAt@QDeclarativeTextInput@@QBEHH@Z @ 4088 NONAME ; int QDeclarativeTextInput::positionAt(int) const
 	?selectWord@QDeclarativeTextEdit@@QAEXXZ @ 4089 NONAME ; void QDeclarativeTextEdit::selectWord(void)
+	?setFooter@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 4090 NONAME ; void QDeclarativeGridView::setFooter(class QDeclarativeComponent *)
+	?isNamed@QDeclarativeState@@QBE_NXZ @ 4091 NONAME ; bool QDeclarativeState::isNamed(void) const
+	?initialSize@QDeclarativeView@@QBE?AVQSize@@XZ @ 4092 NONAME ; class QSize QDeclarativeView::initialSize(void) const
+	?childAt@QDeclarativeItem@@QBEPAV1@MM@Z @ 4093 NONAME ; class QDeclarativeItem * QDeclarativeItem::childAt(float, float) const
+	?footer@QDeclarativeGridView@@QBEPAVQDeclarativeComponent@@XZ @ 4094 NONAME ; class QDeclarativeComponent * QDeclarativeGridView::footer(void) const
+	?headerChanged@QDeclarativeGridView@@IAEXXZ @ 4095 NONAME ; void QDeclarativeGridView::headerChanged(void)
+	?setHeader@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 4096 NONAME ; void QDeclarativeGridView::setHeader(class QDeclarativeComponent *)
+	?header@QDeclarativeGridView@@QBEPAVQDeclarativeComponent@@XZ @ 4097 NONAME ; class QDeclarativeComponent * QDeclarativeGridView::header(void) const
+	?footerChanged@QDeclarativeGridView@@IAEXXZ @ 4098 NONAME ; void QDeclarativeGridView::footerChanged(void)
 
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index 9b4ecc2..d439927 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -12813,4 +12813,11 @@ EXPORTS
 	?setVerticalMovementX@QTextCursor@@QAEXH@Z @ 12812 NONAME ; void QTextCursor::setVerticalMovementX(int)
 	?invertedAppearance@QProgressBar@@QBE_NXZ @ 12813 NONAME ; bool QProgressBar::invertedAppearance(void) const
 	?width@QFontMetrics@@QBEHABVQString@@HH@Z @ 12814 NONAME ; int QFontMetrics::width(class QString const &, int, int) const
+	?aboutToDestroy@QWidgetPrivate@@UAEXXZ @ 12815 NONAME ; void QWidgetPrivate::aboutToDestroy(void)
+	?setTextOption@QStaticText@@QAEXABVQTextOption@@@Z @ 12816 NONAME ; void QStaticText::setTextOption(class QTextOption const &)
+	?pointInsideRectAndMask@QWidgetPrivate@@QBE_NABVQPoint@@@Z @ 12817 NONAME ; bool QWidgetPrivate::pointInsideRectAndMask(class QPoint const &) const
+	?childAtRecursiveHelper@QWidgetPrivate@@QBEPAVQWidget@@ABVQPoint@@_N1@Z @ 12818 NONAME ; class QWidget * QWidgetPrivate::childAtRecursiveHelper(class QPoint const &, bool, bool) const
+	?textOption@QStaticText@@QBE?AVQTextOption@@XZ @ 12819 NONAME ; class QTextOption QStaticText::textOption(void) const
+	?isRightToLeft@QTextEngine@@QBE_NXZ @ 12820 NONAME ; bool QTextEngine::isRightToLeft(void) const
+	?textDirection@QTextBlock@@QBE?AW4LayoutDirection@Qt@@XZ @ 12821 NONAME ; enum Qt::LayoutDirection QTextBlock::textDirection(void) const
 
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index 0590d39..48cad39 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -3705,4 +3705,6 @@ EXPORTS
 	_ZlsR11QDataStreamRK12QEasingCurve @ 3704 NONAME
 	_ZltRK13QElapsedTimerS1_ @ 3705 NONAME
 	_ZrsR11QDataStreamR12QEasingCurve @ 3706 NONAME
+	_ZNK7QLocale13textDirectionEv @ 3707 NONAME
+	_ZNK7QString13isRightToLeftEv @ 3708 NONAME
 
diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def
index 1c4cd5d..f997454 100644
--- a/src/s60installs/eabi/QtDeclarativeu.def
+++ b/src/s60installs/eabi/QtDeclarativeu.def
@@ -3605,7 +3605,7 @@ EXPORTS
 	_ZN16QDeclarativeText18paintedSizeChangedEv @ 3604 NONAME
 	_ZN20QDeclarativePathView5eventEP6QEvent @ 3605 NONAME
 	_ZN20QDeclarativeTextEdit12focusInEventEP11QFocusEvent @ 3606 NONAME
-	_ZN20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3607 NONAME
+	_ZN20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3607 NONAME ABSENT
 	_ZN20QDeclarativeTextEdit16setSelectByMouseEb @ 3608 NONAME
 	_ZN20QDeclarativeTextEdit18paintedSizeChangedEv @ 3609 NONAME
 	_ZN20QDeclarativeTextEdit20selectByMouseChangedEb @ 3610 NONAME
@@ -3615,7 +3615,7 @@ EXPORTS
 	_ZN20QDeclarativeTextEdit24setShowInputPanelOnFocusEb @ 3614 NONAME ABSENT
 	_ZN20QDeclarativeTextEdit28showInputPanelOnFocusChangedEb @ 3615 NONAME ABSENT
 	_ZN21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3616 NONAME
-	_ZN21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3617 NONAME
+	_ZN21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3617 NONAME ABSENT
 	_ZN21QDeclarativeTextInput16setSelectByMouseEb @ 3618 NONAME
 	_ZN21QDeclarativeTextInput20selectByMouseChangedEb @ 3619 NONAME
 	_ZN21QDeclarativeTextInput22openSoftwareInputPanelEv @ 3620 NONAME
@@ -3653,9 +3653,9 @@ EXPORTS
 	_ZNK24QDeclarativeXmlListModel11errorStringEv @ 3652 NONAME
 	_ZNK24QDeclarativeXmlListModel3getEi @ 3653 NONAME
 	_ZThn8_N20QDeclarativeTextEdit12focusInEventEP11QFocusEvent @ 3654 NONAME
-	_ZThn8_N20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3655 NONAME
+	_ZThn8_N20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3655 NONAME ABSENT
 	_ZThn8_N21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3656 NONAME
-	_ZThn8_N21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3657 NONAME
+	_ZThn8_N21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3657 NONAME ABSENT
 	_ZThn8_NK23QDeclarativePaintedItem12boundingRectEv @ 3658 NONAME
 	_ZN20QDeclarativeTextEdit10selectWordEv @ 3659 NONAME
 	_ZN20QDeclarativeTextEdit19moveCursorSelectionEi @ 3660 NONAME
@@ -3672,4 +3672,13 @@ EXPORTS
 	_ZNK21QDeclarativeTextInput15cursorRectangleEv @ 3671 NONAME
 	_ZNK21QDeclarativeTextInput19positionToRectangleEi @ 3672 NONAME
 	_ZThn8_N21QDeclarativeTextInput21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3673 NONAME
+	_ZN20QDeclarativeGridView13footerChangedEv @ 3674 NONAME
+	_ZN20QDeclarativeGridView13headerChangedEv @ 3675 NONAME
+	_ZN20QDeclarativeGridView9setFooterEP21QDeclarativeComponent @ 3676 NONAME
+	_ZN20QDeclarativeGridView9setHeaderEP21QDeclarativeComponent @ 3677 NONAME
+	_ZNK16QDeclarativeItem7childAtEff @ 3678 NONAME
+	_ZNK16QDeclarativeView11initialSizeEv @ 3679 NONAME
+	_ZNK17QDeclarativeState7isNamedEv @ 3680 NONAME
+	_ZNK20QDeclarativeGridView6footerEv @ 3681 NONAME
+	_ZNK20QDeclarativeGridView6headerEv @ 3682 NONAME
 
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 9c1002d..b59ddee 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12012,4 +12012,9 @@ EXPORTS
 	_ZNK11QTextCursor17verticalMovementXEv @ 12011 NONAME
 	_ZNK11QTextCursor20keepPositionOnInsertEv @ 12012 NONAME
 	_ZNK12QFontMetrics5widthERK7QStringii @ 12013 NONAME
+	_ZN11QStaticText13setTextOptionERK11QTextOption @ 12014 NONAME
+	_ZNK10QTextBlock13textDirectionEv @ 12015 NONAME
+	_ZNK11QStaticText10textOptionEv @ 12016 NONAME
+	_ZNK11QTextEngine13isRightToLeftEv @ 12017 NONAME
+	_ZNK14QWidgetPrivate22childAtRecursiveHelperERK6QPointbb @ 12018 NONAME
 
-- 
cgit v0.12


From d1813c1341608ec3c087e6cfd7da433f05799747 Mon Sep 17 00:00:00 2001
From: Bea Lam <bea.lam@nokia.com>
Date: Fri, 18 Jun 2010 13:06:32 +1000
Subject: Spelling fix

---
 examples/declarative/i18n/i18n.qml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/declarative/i18n/i18n.qml b/examples/declarative/i18n/i18n.qml
index 7bbb19c..5c2702c 100644
--- a/examples/declarative/i18n/i18n.qml
+++ b/examples/declarative/i18n/i18n.qml
@@ -65,7 +65,7 @@ Rectangle {
         anchors.fill: parent; spacing: 20
 
         Text {
-            text: "If a translation is available for the system language (eg. French) then the string below will translated (eg. 'Bonjour'). Otherwise is will show 'Hello'."
+            text: "If a translation is available for the system language (eg. French) then the string below will translated (eg. 'Bonjour'). Otherwise it will show 'Hello'."
             width: parent.width; wrapMode: Text.WordWrap
         }
 
-- 
cgit v0.12


From e3fd533e7c53106166f081122d8d3d71bb201ba9 Mon Sep 17 00:00:00 2001
From: Bea Lam <bea.lam@nokia.com>
Date: Fri, 18 Jun 2010 13:30:28 +1000
Subject: Rename example image file

---
 doc/src/declarative/pics/ListViewSections.png          | Bin 5491 -> 0 bytes
 doc/src/images/qml-listview-sections-example.png       | Bin 0 -> 5491 bytes
 src/declarative/graphicsitems/qdeclarativelistview.cpp |   2 +-
 3 files changed, 1 insertion(+), 1 deletion(-)
 delete mode 100644 doc/src/declarative/pics/ListViewSections.png
 create mode 100644 doc/src/images/qml-listview-sections-example.png

diff --git a/doc/src/declarative/pics/ListViewSections.png b/doc/src/declarative/pics/ListViewSections.png
deleted file mode 100644
index 4e8f076..0000000
Binary files a/doc/src/declarative/pics/ListViewSections.png and /dev/null differ
diff --git a/doc/src/images/qml-listview-sections-example.png b/doc/src/images/qml-listview-sections-example.png
new file mode 100644
index 0000000..4e8f076
Binary files /dev/null and b/doc/src/images/qml-listview-sections-example.png differ
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index b0728c1..06a3239 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -1972,7 +1972,7 @@ void QDeclarativeListView::setCacheBuffer(int b)
        
     \snippet examples/declarative/modelviews/listview/sections.qml 0
 
-    \image ListViewSections.png
+    \image qml-listview-sections-example.png
 
     \sa {declarative/modelviews/listview}{ListView examples}
 */
-- 
cgit v0.12


From d9e49c4399e506c878ce5125d4edcf384b867b26 Mon Sep 17 00:00:00 2001
From: Bea Lam <bea.lam@nokia.com>
Date: Fri, 18 Jun 2010 14:41:31 +1000
Subject: Rename example and add minor improvements

---
 .../touchinteraction/mousearea/mouse.qml           |  87 ------------------
 .../mousearea/mousearea-example.qml                | 102 +++++++++++++++++++++
 2 files changed, 102 insertions(+), 87 deletions(-)
 delete mode 100644 examples/declarative/touchinteraction/mousearea/mouse.qml
 create mode 100644 examples/declarative/touchinteraction/mousearea/mousearea-example.qml

diff --git a/examples/declarative/touchinteraction/mousearea/mouse.qml b/examples/declarative/touchinteraction/mousearea/mouse.qml
deleted file mode 100644
index 9d2ace3..0000000
--- a/examples/declarative/touchinteraction/mousearea/mouse.qml
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-
-Rectangle {
-    width: 200; height: 200
-
-    Rectangle {
-        width: 50; height: 50
-        color: "red"
-
-        Text { text: "Click"; anchors.centerIn: parent }
-
-        MouseArea {
-            anchors.fill: parent
-            hoverEnabled: true
-            acceptedButtons: Qt.LeftButton | Qt.RightButton
-
-            onPressed: console.log('press (x: ' + mouse.x + ' y: ' + mouse.y + ' button: ' + (mouse.button == Qt.RightButton ? 'right' : 'left') + ' Shift: ' + (mouse.modifiers & Qt.ShiftModifier ? 'true' : 'false') + ')') 
-            onReleased: console.log('release (x: ' + mouse.x + ' y: ' + mouse.y + ' isClick: ' + mouse.isClick + ' wasHeld: ' + mouse.wasHeld + ')') 
-            onClicked: console.log('click (x: ' + mouse.x + ' y: ' + mouse.y + ' wasHeld: ' + mouse.wasHeld + ')')
-            onDoubleClicked: console.log('double click (x: ' + mouse.x + ' y: ' + mouse.y + ')')
-            onPressAndHold: console.log('press and hold')
-            onEntered: console.log('entered ' + pressed)
-            onExited: console.log('exited ' + pressed)
-        }
-    }
-
-    Rectangle {
-        y: 100; width: 50; height: 50
-        color: "blue"
-
-        Text { text: "Drag"; anchors.centerIn: parent }
-
-        MouseArea {
-            anchors.fill: parent
-            drag.target: parent
-            drag.axis: Drag.XAxis
-            drag.minimumX: 0
-            drag.maximumX: 150
-
-            onPressed: console.log('press')
-            onReleased: console.log('release (isClick: ' + mouse.isClick + ') (wasHeld: ' + mouse.wasHeld + ')')
-            onClicked: console.log('click' + '(wasHeld: ' + mouse.wasHeld + ')')
-            onDoubleClicked: console.log('double click')
-            onPressAndHold: console.log('press and hold')
-        }
-    }
-}
diff --git a/examples/declarative/touchinteraction/mousearea/mousearea-example.qml b/examples/declarative/touchinteraction/mousearea/mousearea-example.qml
new file mode 100644
index 0000000..64f72a9
--- /dev/null
+++ b/examples/declarative/touchinteraction/mousearea/mousearea-example.qml
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+
+Rectangle {
+    id: box
+    width: 350; height: 250
+
+    function showInfo(text) {
+        statusText.text = text
+    }
+
+    Rectangle {
+        width: 80; height: 80
+        color: "red"
+
+        Text { text: "Click"; font.pixelSize: 16; anchors.centerIn: parent }
+
+        MouseArea {
+            anchors.fill: parent
+            hoverEnabled: true
+            acceptedButtons: Qt.LeftButton | Qt.RightButton
+
+            onPressed: box.showInfo('Pressed (x=' + mouse.x + ' y=' + mouse.y + ' button=' 
+                    + (mouse.button == Qt.RightButton ? 'right' : 'left') 
+                    + ' Shift=' + (mouse.modifiers & Qt.ShiftModifier ? 'true' : 'false') + ')') 
+            onReleased: box.showInfo('Released (x=' + mouse.x + ' y=' + mouse.y 
+                    + ' isClick=' + mouse.isClick + ' wasHeld=' + mouse.wasHeld + ')') 
+            onClicked: box.showInfo('Clicked (x=' + mouse.x + ' y=' + mouse.y + ' wasHeld=' + mouse.wasHeld + ')')
+            onDoubleClicked: box.showInfo('Double clicked (x=' + mouse.x + ' y=' + mouse.y + ')')
+            onPressAndHold: box.showInfo('Press and hold')
+            onEntered: box.showInfo('Entered (pressed=' + pressed + ')')
+            onExited: box.showInfo('Exited (pressed=' + pressed + ')')
+        }
+    }
+
+    Rectangle {
+        width: 80; height: 80; anchors.right: parent.right
+        color: "blue"
+
+        Text { text: "Drag"; font.pixelSize: 16; color: "white"; anchors.centerIn: parent }
+
+        MouseArea {
+            anchors.fill: parent
+            drag.target: parent
+            drag.axis: Drag.XAxis
+            drag.minimumX: 0
+            drag.maximumX: 150
+
+            onPressed: box.showInfo('Pressed')
+            onReleased: box.showInfo('Released (isClick=' + mouse.isClick + ' wasHeld=' + mouse.wasHeld + ')')
+            onClicked: box.showInfo('Clicked' + ' (wasHeld=' + mouse.wasHeld + ')')
+            onDoubleClicked: box.showInfo('Double clicked')
+            onPressAndHold: box.showInfo('Press and hold')
+        }
+    }
+
+    Text {
+        id: statusText
+        anchors.bottom: parent.bottom; anchors.horizontalCenter: parent.horizontalCenter; anchors.margins: 30
+
+        onTextChanged: console.log(text)
+    }
+}
-- 
cgit v0.12


From c8968fd143e079d4d2b79c88132caaffbefedd7d Mon Sep 17 00:00:00 2001
From: Bea Lam <bea.lam@nokia.com>
Date: Mon, 21 Jun 2010 15:37:41 +1000
Subject: Clean up some examples

---
 .../animation/basics/property-animation.qml        |   6 +-
 .../animation/behaviors/behavior-example.qml       |   7 +-
 .../declarative/modelviews/listview/PetsModel.qml  |  98 -----------
 .../modelviews/listview/RecipesModel.qml           | 129 --------------
 .../modelviews/listview/content/PetsModel.qml      |  98 +++++++++++
 .../modelviews/listview/content/RecipesModel.qml   | 129 ++++++++++++++
 .../listview/content/pics/archive-insert.png       | Bin 896 -> 0 bytes
 .../listview/content/pics/archive-remove.png       | Bin 1074 -> 0 bytes
 .../listview/content/pics/arrow-down.png           | Bin 0 -> 892 bytes
 .../modelviews/listview/content/pics/arrow-up.png  | Bin 0 -> 929 bytes
 .../listview/content/pics/button-pressed.png       | Bin 571 -> 0 bytes
 .../modelviews/listview/content/pics/button.png    | Bin 564 -> 0 bytes
 .../modelviews/listview/content/pics/go-down.png   | Bin 892 -> 0 bytes
 .../modelviews/listview/content/pics/go-up.png     | Bin 929 -> 0 bytes
 .../modelviews/listview/content/pics/list-add.png  | Bin 907 -> 0 bytes
 .../listview/content/pics/list-delete.png          | Bin 0 -> 1074 bytes
 .../listview/content/pics/list-remove.png          | Bin 498 -> 0 bytes
 .../listview/content/pics/minus-sign.png           | Bin 0 -> 498 bytes
 .../modelviews/listview/content/pics/plus-sign.png | Bin 0 -> 907 bytes
 .../modelviews/listview/dynamiclist.qml            |  14 +-
 .../declarative/modelviews/listview/highlight.qml  |   1 +
 .../modelviews/listview/highlightranges.qml        |   1 +
 .../declarative/modelviews/parallax/parallax.qml   |   6 +-
 .../modelviews/parallax/qml/ParallaxView.qml       |  30 ++--
 .../declarative/modelviews/parallax/qml/Smiley.qml |  18 +-
 examples/declarative/modelviews/webview/alerts.qml |  15 +-
 .../declarative/modelviews/webview/autosize.qml    |  14 +-
 .../modelviews/webview/content/FieldText.qml       | 195 ---------------------
 .../modelviews/webview/content/Mapping/Map.qml     |  11 +-
 .../modelviews/webview/content/SpinSquare.qml      |  65 -------
 .../declarative/modelviews/webview/googleMaps.qml  |  83 ---------
 .../declarative/modelviews/webview/googlemaps.qml  |  83 +++++++++
 .../declarative/modelviews/webview/inline-html.qml |  55 ------
 .../declarative/modelviews/webview/inlinehtml.qml  |  55 ++++++
 examples/declarative/text/edit/edit.qml            |  71 ++++++--
 .../ui-components/flipable/content/Card.qml        |   4 +-
 .../ui-components/scrollbar/ScrollBar.qml          |   1 +
 .../declarative/ui-components/scrollbar/main.qml   |   1 -
 .../ui-components/searchbox/SearchBox.qml          |   7 +-
 .../ui-components/searchbox/images/clear.png       | Bin 0 -> 429 bytes
 .../images/edit-clear-locationbar-rtl.png          | Bin 429 -> 0 bytes
 .../ui-components/slideswitch/content/Switch.qml   |   7 +-
 .../ui-components/spinner/content/Spinner.qml      |   5 +
 .../declarative/ui-components/spinner/main.qml     |   3 +
 .../ui-components/tabwidget/TabWidget.qml          |   8 +-
 examples/declarative/xml/xmlhttprequest/data.xml   |   5 +
 examples/declarative/xml/xmlhttprequest/test.qml   |  76 --------
 examples/declarative/xml/xmlhttprequest/test.xml   |   5 -
 .../xml/xmlhttprequest/xmlhttprequest-example.qml  |  95 ++++++++++
 49 files changed, 611 insertions(+), 790 deletions(-)
 delete mode 100644 examples/declarative/modelviews/listview/PetsModel.qml
 delete mode 100644 examples/declarative/modelviews/listview/RecipesModel.qml
 create mode 100644 examples/declarative/modelviews/listview/content/PetsModel.qml
 create mode 100644 examples/declarative/modelviews/listview/content/RecipesModel.qml
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/archive-insert.png
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/archive-remove.png
 create mode 100644 examples/declarative/modelviews/listview/content/pics/arrow-down.png
 create mode 100644 examples/declarative/modelviews/listview/content/pics/arrow-up.png
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/button-pressed.png
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/button.png
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/go-down.png
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/go-up.png
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/list-add.png
 create mode 100644 examples/declarative/modelviews/listview/content/pics/list-delete.png
 delete mode 100644 examples/declarative/modelviews/listview/content/pics/list-remove.png
 create mode 100644 examples/declarative/modelviews/listview/content/pics/minus-sign.png
 create mode 100644 examples/declarative/modelviews/listview/content/pics/plus-sign.png
 delete mode 100644 examples/declarative/modelviews/webview/content/FieldText.qml
 delete mode 100644 examples/declarative/modelviews/webview/content/SpinSquare.qml
 delete mode 100644 examples/declarative/modelviews/webview/googleMaps.qml
 create mode 100644 examples/declarative/modelviews/webview/googlemaps.qml
 delete mode 100644 examples/declarative/modelviews/webview/inline-html.qml
 create mode 100644 examples/declarative/modelviews/webview/inlinehtml.qml
 create mode 100644 examples/declarative/ui-components/searchbox/images/clear.png
 delete mode 100644 examples/declarative/ui-components/searchbox/images/edit-clear-locationbar-rtl.png
 create mode 100644 examples/declarative/xml/xmlhttprequest/data.xml
 delete mode 100644 examples/declarative/xml/xmlhttprequest/test.qml
 delete mode 100644 examples/declarative/xml/xmlhttprequest/test.xml
 create mode 100644 examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml

diff --git a/examples/declarative/animation/basics/property-animation.qml b/examples/declarative/animation/basics/property-animation.qml
index 0fb253a..69d166a 100644
--- a/examples/declarative/animation/basics/property-animation.qml
+++ b/examples/declarative/animation/basics/property-animation.qml
@@ -65,7 +65,8 @@ Item {
     // The shadow for the smiley face
     Image {
         anchors.horizontalCenter: parent.horizontalCenter
-        source: "images/shadow.png"; y: smiley.minHeight + 58
+        y: smiley.minHeight + 58
+        source: "images/shadow.png"
 
         // The scale property depends on the y position of the smiley face.
         scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight)
@@ -77,7 +78,8 @@ Item {
         property int minHeight: 2 * window.height / 3
 
         anchors.horizontalCenter: parent.horizontalCenter
-        source: "images/face-smile.png"; y: minHeight
+        y: minHeight
+        source: "images/face-smile.png"
 
         // Animate the y property. Setting loops to Animation.Infinite makes the
         // animation repeat indefinitely, otherwise it would only run once.
diff --git a/examples/declarative/animation/behaviors/behavior-example.qml b/examples/declarative/animation/behaviors/behavior-example.qml
index 91845fc..d187fbf 100644
--- a/examples/declarative/animation/behaviors/behavior-example.qml
+++ b/examples/declarative/animation/behaviors/behavior-example.qml
@@ -87,12 +87,12 @@ Rectangle {
             border.width: 4; border.color: "white"
             color: "firebrick"
 
-            // Setting an 'elastic' behavior on the focusRect's x property.
+            // Set an 'elastic' behavior on the focusRect's x property.
             Behavior on x {
                 NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
             }
 
-            // Setting an 'elastic' behavior on the focusRect's y property.
+            // Set an 'elastic' behavior on the focusRect's y property.
             Behavior on y {
                 NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
             }
@@ -104,12 +104,11 @@ Rectangle {
                 color: "white"
                 font.pixelSize: 16; font.bold: true
 
-                // Setting a behavior on the focusText's x property:
+                // Set a behavior on the focusText's x property:
                 // Set the opacity to 0, set the new text value, then set the opacity back to 1.
                 Behavior on text {
                     SequentialAnimation {
                         NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 }
-                        PropertyAction { }
                         NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 }
                     }
                 }
diff --git a/examples/declarative/modelviews/listview/PetsModel.qml b/examples/declarative/modelviews/listview/PetsModel.qml
deleted file mode 100644
index b77557d..0000000
--- a/examples/declarative/modelviews/listview/PetsModel.qml
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-
-ListModel {
-    ListElement {
-        name: "Polly"
-        type: "Parrot"
-        age: 12
-        size: "Small"
-    }
-    ListElement {
-        name: "Penny"
-        type: "Turtle"
-        age: 4
-        size: "Small"
-    }
-    ListElement {
-        name: "Warren"
-        type: "Rabbit"
-        age: 2
-        size: "Small"
-    }
-    ListElement {
-        name: "Spot"
-        type: "Dog"
-        age: 9
-        size: "Medium"
-    }
-    ListElement {
-        name: "Schrödinger"
-        type: "Cat"
-        age: 2
-        size: "Medium"
-    }
-    ListElement {
-        name: "Joey"
-        type: "Kangaroo"
-        age: 1
-        size: "Medium"
-    }
-    ListElement {
-        name: "Kimba"
-        type: "Bunny"
-        age: 65
-        size: "Large"
-    }
-    ListElement {
-        name: "Rover"
-        type: "Dog"
-        age: 5
-        size: "Large"
-    }
-    ListElement {
-        name: "Tiny"
-        type: "Elephant"
-        age: 15
-        size: "Large"
-    }
-}
diff --git a/examples/declarative/modelviews/listview/RecipesModel.qml b/examples/declarative/modelviews/listview/RecipesModel.qml
deleted file mode 100644
index e6d829f..0000000
--- a/examples/declarative/modelviews/listview/RecipesModel.qml
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-
-ListModel {
-    ListElement {
-        title: "Pancakes"
-        picture: "content/pics/pancakes.jpg"
-        ingredients: "<html> 
-                       <ul> 
-                        <li> 1 cup (150g) self-raising flour 
-                        <li> 1 tbs caster sugar 
-                        <li> 3/4 cup (185ml) milk 
-                        <li> 1 egg 
-                       </ul> 
-                      </html>"
-        method: "<html> 
-                  <ol> 
-                   <li> Sift flour and sugar together into a bowl. Add a pinch of salt. 
-                   <li> Beat milk and egg together, then add to dry ingredients. Beat until smooth. 
-                   <li> Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. 
-                   <li> Turn over and cook other side until golden.  
-                  </ol>
-                 </html>"
-    }
-    ListElement {
-        title: "Fruit Salad"
-        picture: "content/pics/fruit-salad.jpg"
-        ingredients: "* Seasonal Fruit"
-        method: "* Chop fruit and place in a bowl."
-    }
-    ListElement {
-        title: "Vegetable Soup"
-        picture: "content/pics/vegetable-soup.jpg"
-        ingredients: "<html> 
-                       <ul> 
-                        <li> 1 onion 
-                        <li> 1 turnip 
-                        <li> 1 potato 
-                        <li> 1 carrot 
-                        <li> 1 head of celery 
-                        <li> 1 1/2 litres of water 
-                       </ul> 
-                      </html>"
-        method: "<html> 
-                  <ol> 
-                   <li> Chop vegetables. 
-                   <li> Boil in water until vegetables soften. 
-                   <li> Season with salt and pepper to taste. 
-                  </ol> 
-                 </html>"
-    }
-    ListElement {
-        title: "Hamburger"
-        picture: "content/pics/hamburger.jpg"
-        ingredients: "<html> 
-                       <ul> 
-                        <li> 500g minced beef 
-                        <li> Seasoning 
-                        <li> lettuce, tomato, onion, cheese 
-                        <li> 1 hamburger bun for each burger 
-                       </ul> 
-                      </html>"
-        method: "<html> 
-                  <ol> 
-                   <li> Mix the beef, together with seasoning, in a food processor. 
-                   <li> Shape the beef into burgers. 
-                   <li> Grill the burgers for about 5 mins on each side (until cooked through) 
-                   <li> Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. 
-                  </ol> 
-                 </html>"
-    }
-    ListElement {
-        title: "Lemonade"
-        picture: "content/pics/lemonade.jpg"
-        ingredients: "<html> 
-                       <ul> 
-                        <li> 1 cup Lemon Juice 
-                        <li> 1 cup Sugar 
-                        <li> 6 Cups of Water (2 cups warm water, 4 cups cold water) 
-                       </ul> 
-                      </html>"
-        method: "<html> 
-                  <ol> 
-                   <li> Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. 
-                   <li> Pour in lemon juice, stir again, and add 4 cups of cold water. 
-                   <li> Chill or serve over ice cubes. 
-                  </ol> 
-                 </html>"
-    }
-}
diff --git a/examples/declarative/modelviews/listview/content/PetsModel.qml b/examples/declarative/modelviews/listview/content/PetsModel.qml
new file mode 100644
index 0000000..b77557d
--- /dev/null
+++ b/examples/declarative/modelviews/listview/content/PetsModel.qml
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+
+ListModel {
+    ListElement {
+        name: "Polly"
+        type: "Parrot"
+        age: 12
+        size: "Small"
+    }
+    ListElement {
+        name: "Penny"
+        type: "Turtle"
+        age: 4
+        size: "Small"
+    }
+    ListElement {
+        name: "Warren"
+        type: "Rabbit"
+        age: 2
+        size: "Small"
+    }
+    ListElement {
+        name: "Spot"
+        type: "Dog"
+        age: 9
+        size: "Medium"
+    }
+    ListElement {
+        name: "Schrödinger"
+        type: "Cat"
+        age: 2
+        size: "Medium"
+    }
+    ListElement {
+        name: "Joey"
+        type: "Kangaroo"
+        age: 1
+        size: "Medium"
+    }
+    ListElement {
+        name: "Kimba"
+        type: "Bunny"
+        age: 65
+        size: "Large"
+    }
+    ListElement {
+        name: "Rover"
+        type: "Dog"
+        age: 5
+        size: "Large"
+    }
+    ListElement {
+        name: "Tiny"
+        type: "Elephant"
+        age: 15
+        size: "Large"
+    }
+}
diff --git a/examples/declarative/modelviews/listview/content/RecipesModel.qml b/examples/declarative/modelviews/listview/content/RecipesModel.qml
new file mode 100644
index 0000000..e6d829f
--- /dev/null
+++ b/examples/declarative/modelviews/listview/content/RecipesModel.qml
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+
+ListModel {
+    ListElement {
+        title: "Pancakes"
+        picture: "content/pics/pancakes.jpg"
+        ingredients: "<html> 
+                       <ul> 
+                        <li> 1 cup (150g) self-raising flour 
+                        <li> 1 tbs caster sugar 
+                        <li> 3/4 cup (185ml) milk 
+                        <li> 1 egg 
+                       </ul> 
+                      </html>"
+        method: "<html> 
+                  <ol> 
+                   <li> Sift flour and sugar together into a bowl. Add a pinch of salt. 
+                   <li> Beat milk and egg together, then add to dry ingredients. Beat until smooth. 
+                   <li> Pour mixture into a pan on medium heat and cook until bubbles appear on the surface. 
+                   <li> Turn over and cook other side until golden.  
+                  </ol>
+                 </html>"
+    }
+    ListElement {
+        title: "Fruit Salad"
+        picture: "content/pics/fruit-salad.jpg"
+        ingredients: "* Seasonal Fruit"
+        method: "* Chop fruit and place in a bowl."
+    }
+    ListElement {
+        title: "Vegetable Soup"
+        picture: "content/pics/vegetable-soup.jpg"
+        ingredients: "<html> 
+                       <ul> 
+                        <li> 1 onion 
+                        <li> 1 turnip 
+                        <li> 1 potato 
+                        <li> 1 carrot 
+                        <li> 1 head of celery 
+                        <li> 1 1/2 litres of water 
+                       </ul> 
+                      </html>"
+        method: "<html> 
+                  <ol> 
+                   <li> Chop vegetables. 
+                   <li> Boil in water until vegetables soften. 
+                   <li> Season with salt and pepper to taste. 
+                  </ol> 
+                 </html>"
+    }
+    ListElement {
+        title: "Hamburger"
+        picture: "content/pics/hamburger.jpg"
+        ingredients: "<html> 
+                       <ul> 
+                        <li> 500g minced beef 
+                        <li> Seasoning 
+                        <li> lettuce, tomato, onion, cheese 
+                        <li> 1 hamburger bun for each burger 
+                       </ul> 
+                      </html>"
+        method: "<html> 
+                  <ol> 
+                   <li> Mix the beef, together with seasoning, in a food processor. 
+                   <li> Shape the beef into burgers. 
+                   <li> Grill the burgers for about 5 mins on each side (until cooked through) 
+                   <li> Serve each burger on a bun with ketchup, cheese, lettuce, tomato and onion. 
+                  </ol> 
+                 </html>"
+    }
+    ListElement {
+        title: "Lemonade"
+        picture: "content/pics/lemonade.jpg"
+        ingredients: "<html> 
+                       <ul> 
+                        <li> 1 cup Lemon Juice 
+                        <li> 1 cup Sugar 
+                        <li> 6 Cups of Water (2 cups warm water, 4 cups cold water) 
+                       </ul> 
+                      </html>"
+        method: "<html> 
+                  <ol> 
+                   <li> Pour 2 cups of warm water into a pitcher and stir in sugar until it dissolves. 
+                   <li> Pour in lemon juice, stir again, and add 4 cups of cold water. 
+                   <li> Chill or serve over ice cubes. 
+                  </ol> 
+                 </html>"
+    }
+}
diff --git a/examples/declarative/modelviews/listview/content/pics/archive-insert.png b/examples/declarative/modelviews/listview/content/pics/archive-insert.png
deleted file mode 100644
index b706248..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/archive-insert.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/archive-remove.png b/examples/declarative/modelviews/listview/content/pics/archive-remove.png
deleted file mode 100644
index 9640f6b..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/archive-remove.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/arrow-down.png b/examples/declarative/modelviews/listview/content/pics/arrow-down.png
new file mode 100644
index 0000000..63331a5
Binary files /dev/null and b/examples/declarative/modelviews/listview/content/pics/arrow-down.png differ
diff --git a/examples/declarative/modelviews/listview/content/pics/arrow-up.png b/examples/declarative/modelviews/listview/content/pics/arrow-up.png
new file mode 100644
index 0000000..4459024
Binary files /dev/null and b/examples/declarative/modelviews/listview/content/pics/arrow-up.png differ
diff --git a/examples/declarative/modelviews/listview/content/pics/button-pressed.png b/examples/declarative/modelviews/listview/content/pics/button-pressed.png
deleted file mode 100644
index e434d32..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/button-pressed.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/button.png b/examples/declarative/modelviews/listview/content/pics/button.png
deleted file mode 100644
index 56a63ce..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/button.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/go-down.png b/examples/declarative/modelviews/listview/content/pics/go-down.png
deleted file mode 100644
index 63331a5..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/go-down.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/go-up.png b/examples/declarative/modelviews/listview/content/pics/go-up.png
deleted file mode 100644
index 4459024..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/go-up.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/list-add.png b/examples/declarative/modelviews/listview/content/pics/list-add.png
deleted file mode 100644
index e029787..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/list-add.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/list-delete.png b/examples/declarative/modelviews/listview/content/pics/list-delete.png
new file mode 100644
index 0000000..9640f6b
Binary files /dev/null and b/examples/declarative/modelviews/listview/content/pics/list-delete.png differ
diff --git a/examples/declarative/modelviews/listview/content/pics/list-remove.png b/examples/declarative/modelviews/listview/content/pics/list-remove.png
deleted file mode 100644
index 2bb1a59..0000000
Binary files a/examples/declarative/modelviews/listview/content/pics/list-remove.png and /dev/null differ
diff --git a/examples/declarative/modelviews/listview/content/pics/minus-sign.png b/examples/declarative/modelviews/listview/content/pics/minus-sign.png
new file mode 100644
index 0000000..2bb1a59
Binary files /dev/null and b/examples/declarative/modelviews/listview/content/pics/minus-sign.png differ
diff --git a/examples/declarative/modelviews/listview/content/pics/plus-sign.png b/examples/declarative/modelviews/listview/content/pics/plus-sign.png
new file mode 100644
index 0000000..e029787
Binary files /dev/null and b/examples/declarative/modelviews/listview/content/pics/plus-sign.png differ
diff --git a/examples/declarative/modelviews/listview/dynamiclist.qml b/examples/declarative/modelviews/listview/dynamiclist.qml
index 12c331b..3c1af37 100644
--- a/examples/declarative/modelviews/listview/dynamiclist.qml
+++ b/examples/declarative/modelviews/listview/dynamiclist.qml
@@ -96,11 +96,11 @@ Rectangle {
 
                 Column {
                     Image {
-                        source: "content/pics/go-up.png"
-                        MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index,index-1,1) }
+                        source: "content/pics/arrow-up.png"
+                        MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index-1, 1) }
                     }
-                    Image { source: "content/pics/go-down.png"
-                        MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index,index+1,1) }
+                    Image { source: "content/pics/arrow-down.png"
+                        MouseArea { anchors.fill: parent; onClicked: fruitModel.move(index, index+1, 1) }
                     }
                 }
 
@@ -129,7 +129,7 @@ Rectangle {
 
                 PressAndHoldButton {
                     anchors.verticalCenter: parent.verticalCenter
-                    source: "content/pics/list-add.png"
+                    source: "content/pics/plus-sign.png"
                     onClicked: fruitModel.setProperty(index, "cost", cost + 0.25)
                 }
 
@@ -144,12 +144,12 @@ Rectangle {
 
                 PressAndHoldButton {
                     anchors.verticalCenter: parent.verticalCenter
-                    source: "content/pics/list-remove.png"
+                    source: "content/pics/minus-sign.png"
                     onClicked: fruitModel.setProperty(index, "cost", Math.max(0,cost-0.25))
                 }
 
                 Image {
-                    source: "content/pics/archive-remove.png"
+                    source: "content/pics/list-delete.png"
                     MouseArea { anchors.fill:parent; onClicked: fruitModel.remove(index) }
                 }
             }
diff --git a/examples/declarative/modelviews/listview/highlight.qml b/examples/declarative/modelviews/listview/highlight.qml
index 9f43409..4c14f2a 100644
--- a/examples/declarative/modelviews/listview/highlight.qml
+++ b/examples/declarative/modelviews/listview/highlight.qml
@@ -43,6 +43,7 @@
 // highlight bar is moved between items.
 
 import Qt 4.7
+import "content"
 
 Rectangle {
     width: 200; height: 300
diff --git a/examples/declarative/modelviews/listview/highlightranges.qml b/examples/declarative/modelviews/listview/highlightranges.qml
index f0d7f75..30976f4 100644
--- a/examples/declarative/modelviews/listview/highlightranges.qml
+++ b/examples/declarative/modelviews/listview/highlightranges.qml
@@ -39,6 +39,7 @@
 ****************************************************************************/
 
 import Qt 4.7
+import "content"
 
 Rectangle {
     width: 600; height: 300
diff --git a/examples/declarative/modelviews/parallax/parallax.qml b/examples/declarative/modelviews/parallax/parallax.qml
index 3b5c70a..19eadd0 100644
--- a/examples/declarative/modelviews/parallax/parallax.qml
+++ b/examples/declarative/modelviews/parallax/parallax.qml
@@ -39,12 +39,10 @@
 ****************************************************************************/
 
 import Qt 4.7
-import "../../toys/clocks/content"
+import "../../toys/clocks/content"  // for loading the Clock element
 import "qml"
 
 Rectangle {
-    id: root
-
     width: 320; height: 480
 
     ParallaxView {
@@ -76,7 +74,5 @@ Rectangle {
                 Component.onCompleted: item.inAnotherDemo = true;
             }
         }
-
-        currentIndex: root.currentIndex
     }
 }
diff --git a/examples/declarative/modelviews/parallax/qml/ParallaxView.qml b/examples/declarative/modelviews/parallax/qml/ParallaxView.qml
index adf0885..ac479f4 100644
--- a/examples/declarative/modelviews/parallax/qml/ParallaxView.qml
+++ b/examples/declarative/modelviews/parallax/qml/ParallaxView.qml
@@ -44,8 +44,8 @@ Item {
     id: root
 
     property alias background: background.source
-    default property alias content: visualModel.children
     property int currentIndex: 0
+    default property alias content: visualModel.children
 
     Image {
         id: background
@@ -56,13 +56,13 @@ Item {
 
     ListView {
         id: list
+        anchors.fill: parent
 
         currentIndex: root.currentIndex
         onCurrentIndexChanged: root.currentIndex = currentIndex
 
         orientation: Qt.Horizontal
         boundsBehavior: Flickable.DragOverBounds
-        anchors.fill: parent
         model: VisualItemModel { id: visualModel }
 
         highlightRangeMode: ListView.StrictlyEnforceRange
@@ -72,14 +72,6 @@ Item {
     ListView {
         id: selector
 
-        Rectangle {
-            color: "#60FFFFFF"
-            x: -10; y: -10; radius: 10; z: -1
-            width: parent.width + 20; height: parent.height + 20
-        }
-        currentIndex: root.currentIndex
-        onCurrentIndexChanged: root.currentIndex = currentIndex
-
         height: 50
         anchors.bottom: parent.bottom
         anchors.horizontalCenter: parent.horizontalCenter
@@ -87,6 +79,10 @@ Item {
         interactive: width == parent.width - 20
         orientation: Qt.Horizontal
 
+        currentIndex: root.currentIndex
+        onCurrentIndexChanged: root.currentIndex = currentIndex
+
+        model: visualModel.children
         delegate: Item {
             width: 50; height: 50
             id: delegateRoot
@@ -113,11 +109,15 @@ Item {
                 }
             }
             transitions: Transition {
-                NumberAnimation {
-                    properties: "scale,y"
-                }
-             }
+                NumberAnimation { properties: "scale,y" }
+            }
+        }
+
+        Rectangle {
+            color: "#60FFFFFF"
+            x: -10; y: -10; z: -1
+            width: parent.width + 20; height: parent.height + 20
+            radius: 10
         }
-        model: visualModel.children
     }
 }
diff --git a/examples/declarative/modelviews/parallax/qml/Smiley.qml b/examples/declarative/modelviews/parallax/qml/Smiley.qml
index 8399664..3ca672a 100644
--- a/examples/declarative/modelviews/parallax/qml/Smiley.qml
+++ b/examples/declarative/modelviews/parallax/qml/Smiley.qml
@@ -40,16 +40,18 @@
 
 import Qt 4.7
 
+// This is taken from the declarative animation/basics/property-animation.qml
+// example
+
 Item {
     id: window
     width: 320; height: 480
 
-    // The shadow for the smiley face
     Image {
         anchors.horizontalCenter: parent.horizontalCenter
-        source: "../pics/shadow.png"; y: smiley.minHeight + 58
+        y: smiley.minHeight + 58
+        source: "../pics/shadow.png"
 
-        // The scale property depends on the y position of the smiley face.
         scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight)
     }
 
@@ -59,26 +61,22 @@ Item {
         property int minHeight: 2 * window.height / 3
 
         anchors.horizontalCenter: parent.horizontalCenter
-        source: "../pics/face-smile.png"; y: minHeight
+        y: minHeight
+        source: "../pics/face-smile.png"
 
-        // Animate the y property. Setting repeat to true makes the
-        // animation repeat indefinitely, otherwise it would only run once.
-        SequentialAnimation  on y {
+        SequentialAnimation on y {
             loops: Animation.Infinite
 
-            // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function
             NumberAnimation {
                 from: smiley.minHeight; to: smiley.maxHeight
                 easing.type: Easing.OutExpo; duration: 300
             }
 
-            // Then move back to minHeight in 1 second, using the OutBounce easing function
             NumberAnimation {
                 from: smiley.maxHeight; to: smiley.minHeight
                 easing.type: Easing.OutBounce; duration: 1000
             }
 
-            // Then pause for 500ms
             PauseAnimation { duration: 500 }
         }
     }
diff --git a/examples/declarative/modelviews/webview/alerts.qml b/examples/declarative/modelviews/webview/alerts.qml
index 7303450..1537411 100644
--- a/examples/declarative/modelviews/webview/alerts.qml
+++ b/examples/declarative/modelviews/webview/alerts.qml
@@ -43,7 +43,7 @@ import org.webkit 1.0
 
 WebView {
     id: webView
-    width: 120
+    width: 200
     height: 150
     url: "alerts.html"
 
@@ -58,13 +58,13 @@ WebView {
 
         y: parent.height // off "screen"
         anchors.horizontalCenter: parent.horizontalCenter
-        width: label.width+5
-        height: label.height+5
+        width: label.width + 5
+        height: label.height + 5
 
         opacity: 0
 
-        function show(t) {
-            label.text = t
+        function show(text) {
+            label.text = text
             popup.state = "visible"
             timer.start()
         }
@@ -82,17 +82,20 @@ WebView {
         Timer {
             id: timer
             interval: 1000
+
             onTriggered: popup.state = ""
         }
 
         Text {
             id: label
             anchors.centerIn: parent
+            width: webView.width  *0.75
+
             color: "white"
             font.pixelSize: 20
-            width: webView.width*0.75
             wrapMode: Text.WordWrap
             horizontalAlignment: Text.AlignHCenter
+            smooth: true
         }
     }
 }
diff --git a/examples/declarative/modelviews/webview/autosize.qml b/examples/declarative/modelviews/webview/autosize.qml
index 556b429..64e3ff1 100644
--- a/examples/declarative/modelviews/webview/autosize.qml
+++ b/examples/declarative/modelviews/webview/autosize.qml
@@ -51,6 +51,7 @@ Rectangle {
     Column {
         id: layout
         spacing: 2
+
         WebView {
             html: "No width defined."
             Rectangle {
@@ -58,6 +59,7 @@ Rectangle {
                 anchors.fill: parent
             }
         }
+
         WebView {
             width: rect.width
             html: "The width is full."
@@ -66,6 +68,7 @@ Rectangle {
                 anchors.fill: parent
             }
         }
+
         WebView {
             width: rect.width/2
             html: "The width is half."
@@ -75,24 +78,25 @@ Rectangle {
             }
         }
         WebView {
-            preferredWidth: rect.width/2
-            html: "The preferredWidth is half."
+            width: rect.width/2
+            html: "The_width_is_half."  // not wrapped
             Rectangle {
                 color: "#10000000"
                 anchors.fill: parent
             }
         }
+
         WebView {
             preferredWidth: rect.width/2
-            html: "The_preferredWidth_is_half."
+            html: "The preferredWidth is half."
             Rectangle {
                 color: "#10000000"
                 anchors.fill: parent
             }
         }
         WebView {
-            width: rect.width/2
-            html: "The_width_is_half."
+            preferredWidth: rect.width/2
+            html: "The_preferredWidth_is_half." // not wrapped
             Rectangle {
                 color: "#10000000"
                 anchors.fill: parent
diff --git a/examples/declarative/modelviews/webview/content/FieldText.qml b/examples/declarative/modelviews/webview/content/FieldText.qml
deleted file mode 100644
index 17fa4cd..0000000
--- a/examples/declarative/modelviews/webview/content/FieldText.qml
+++ /dev/null
@@ -1,195 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-
-Item {
-    id: fieldText
-    height: 30
-    property string text: ""
-    property string label: ""
-    property bool mouseGrabbed: false
-    signal confirmed
-    signal cancelled
-    signal startEdit
-
-    function edit() {
-        if (!mouseGrabbed) {
-            fieldText.startEdit();
-            fieldText.state='editing';
-            mouseGrabbed=true;
-        }
-    }
-
-    function confirm() {
-        fieldText.state='';
-        fieldText.text = textEdit.text;
-        mouseGrabbed=false;
-        fieldText.confirmed();
-    }
-
-    function reset() {
-        textEdit.text = fieldText.text;
-        fieldText.state='';
-        mouseGrabbed=false;
-        fieldText.cancelled();
-    }
-
-    Image {
-        id: cancelIcon
-        width: 22
-        height: 22
-        anchors.right: parent.right
-        anchors.rightMargin: 4
-        anchors.verticalCenter: parent.verticalCenter
-        source: "pics/cancel.png"
-        opacity: 0
-    }
-
-    Image {
-        id: confirmIcon
-        width: 22
-        height: 22
-        anchors.left: parent.left
-        anchors.leftMargin: 4
-        anchors.verticalCenter: parent.verticalCenter
-        source: "pics/ok.png"
-        opacity: 0
-    }
-
-    TextInput {
-        id: textEdit
-        text: fieldText.text
-        focus: false
-        anchors.left: parent.left
-        anchors.leftMargin: 0
-        anchors.right: parent.right
-        anchors.rightMargin: 0
-        anchors.verticalCenter: parent.verticalCenter
-        color: "black"
-        font.bold: true
-        readOnly: true
-        onAccepted: confirm()
-        Keys.onEscapePressed: reset()
-    }
-
-    Text {
-        id: textLabel
-        x: 5
-        width: parent.width-10
-        anchors.verticalCenter: parent.verticalCenter
-        horizontalAlignment: Text.AlignHCenter
-        color: fieldText.state == "editing" ? "#505050" : "#AAAAAA"
-        font.italic: true
-        font.bold: true
-        text: label
-        opacity: textEdit.text == '' ? 1 : 0
-        Behavior on opacity {
-            NumberAnimation {
-                property: "opacity"
-                duration: 250
-            }
-        }
-    }
-
-    MouseArea {
-        anchors.fill: cancelIcon
-        onClicked: { reset() }
-    }
-
-    MouseArea {
-        anchors.fill: confirmIcon
-        onClicked: { confirm() }
-    }
-
-    MouseArea {
-        id: editRegion
-        anchors.fill: textEdit
-        onClicked: { edit() }
-    }
-
-    states: [
-    State {
-        name: "editing"
-        PropertyChanges {
-            target: confirmIcon
-            opacity: 1
-        }
-        PropertyChanges {
-            target: cancelIcon
-            opacity: 1
-        }
-        PropertyChanges {
-            target: textEdit
-            color: "black"
-            readOnly: false
-            focus: true
-        }
-        PropertyChanges {
-            target: editRegion
-            opacity: 0
-        }
-        PropertyChanges {
-            target: textEdit.anchors
-            leftMargin: 34
-        }
-        PropertyChanges {
-            target: textEdit.anchors
-            rightMargin: 34
-        }
-    }
-    ]
-
-    transitions: [
-    Transition {
-        from: ""
-        to: "*"
-        reversible: true
-        NumberAnimation {
-            properties: "opacity,leftMargin,rightMargin"
-            duration: 200
-        }
-        ColorAnimation {
-            property: "color"
-            duration: 150
-        }
-    }
-    ]
-}
diff --git a/examples/declarative/modelviews/webview/content/Mapping/Map.qml b/examples/declarative/modelviews/webview/content/Mapping/Map.qml
index be708ee..99f8479 100644
--- a/examples/declarative/modelviews/webview/content/Mapping/Map.qml
+++ b/examples/declarative/modelviews/webview/content/Mapping/Map.qml
@@ -43,14 +43,17 @@ import org.webkit 1.0
 
 Item {
     id: page
+
     property real latitude: -34.397
     property real longitude: 150.644
     property string address: ""
     property alias status: js.status
+
     WebView {
         id: map
         anchors.fill: parent
         url: "map.html"
+        pressGrabTime: 0
         javaScriptWindowObjects: QtObject {
             id: js
             WebView.windowObjectName: "qml"
@@ -58,9 +61,13 @@ Item {
             property real lng: page.longitude
             property string address: page.address
             property string status: "Loading"
-            onAddressChanged: { if (map.url != "" && map.progress==1) map.evaluateJavaScript("goToAddress()") }
+
+            onAddressChanged: { 
+                if (map.url != "" && map.progress == 1) 
+                    map.evaluateJavaScript("goToAddress()") 
+            }
         }
-        pressGrabTime: 0
+
         onLoadFinished: { evaluateJavaScript("goToAddress()"); }
     }
 }
diff --git a/examples/declarative/modelviews/webview/content/SpinSquare.qml b/examples/declarative/modelviews/webview/content/SpinSquare.qml
deleted file mode 100644
index ec83056..0000000
--- a/examples/declarative/modelviews/webview/content/SpinSquare.qml
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-
-Item {
-    property variant period : 250
-    property variant color : "black"
-    id: root
-
-    Item {
-        x: root.width/2
-        y: root.height/2
-        Rectangle {
-            color: root.color
-            x: -width/2
-            y: -height/2
-            width: root.width
-            height: width
-        }
-        NumberAnimation on rotation {
-            from: 0
-            to: 360
-            loops: Animation.Infinite
-            duration: root.period
-        }
-    }
-}
diff --git a/examples/declarative/modelviews/webview/googleMaps.qml b/examples/declarative/modelviews/webview/googleMaps.qml
deleted file mode 100644
index 1c99940..0000000
--- a/examples/declarative/modelviews/webview/googleMaps.qml
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// This example demonstrates how Web services such as Google Maps can be
-// abstracted as QML types. Here we have a "Mapping" module with a "Map"
-// type. The Map type has an address property. Setting that property moves
-// the map. The underlying implementation uses WebView and the Google Maps
-// API, but users from QML don't need to understand the implementation in
-// order to create a Map.
-
-import Qt 4.7
-import org.webkit 1.0
-import "content/Mapping"
-
-Map {
-    id: map
-    width: 300
-    height: 300
-    address: "Paris"
-
-    Rectangle {
-        x: 70
-        width: input.width + 20
-        height: input.height + 4
-        anchors.bottom: parent.bottom; anchors.bottomMargin: 5
-        radius: 5
-        opacity: map.status == "Ready" ? 1 : 0
-
-        TextInput {
-            id: input
-            text: map.address
-            anchors.centerIn: parent
-            Keys.onReturnPressed: map.address = input.text
-        }
-    }
-
-    Text {
-        id: loading
-        anchors.centerIn: parent
-        text: map.status == "Error" ? "Error" : "Loading"
-        opacity: map.status == "Ready" ? 0 : 1
-        font.pixelSize: 30
-
-        Behavior on opacity { NumberAnimation{} }
-    }
-}
diff --git a/examples/declarative/modelviews/webview/googlemaps.qml b/examples/declarative/modelviews/webview/googlemaps.qml
new file mode 100644
index 0000000..1c99940
--- /dev/null
+++ b/examples/declarative/modelviews/webview/googlemaps.qml
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// This example demonstrates how Web services such as Google Maps can be
+// abstracted as QML types. Here we have a "Mapping" module with a "Map"
+// type. The Map type has an address property. Setting that property moves
+// the map. The underlying implementation uses WebView and the Google Maps
+// API, but users from QML don't need to understand the implementation in
+// order to create a Map.
+
+import Qt 4.7
+import org.webkit 1.0
+import "content/Mapping"
+
+Map {
+    id: map
+    width: 300
+    height: 300
+    address: "Paris"
+
+    Rectangle {
+        x: 70
+        width: input.width + 20
+        height: input.height + 4
+        anchors.bottom: parent.bottom; anchors.bottomMargin: 5
+        radius: 5
+        opacity: map.status == "Ready" ? 1 : 0
+
+        TextInput {
+            id: input
+            text: map.address
+            anchors.centerIn: parent
+            Keys.onReturnPressed: map.address = input.text
+        }
+    }
+
+    Text {
+        id: loading
+        anchors.centerIn: parent
+        text: map.status == "Error" ? "Error" : "Loading"
+        opacity: map.status == "Ready" ? 0 : 1
+        font.pixelSize: 30
+
+        Behavior on opacity { NumberAnimation{} }
+    }
+}
diff --git a/examples/declarative/modelviews/webview/inline-html.qml b/examples/declarative/modelviews/webview/inline-html.qml
deleted file mode 100644
index 875c903..0000000
--- a/examples/declarative/modelviews/webview/inline-html.qml
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-import org.webkit 1.0
-
-// Inline HTML with loose formatting can be
-// set on the html property.
-WebView {
-    html:"\
-        <body bgcolor=white>\
-        <table border=1>\
-            <tr><th><th>One<th>Two<th>Three\
-            <tr><th>1<td>X<td>1<td>X\
-            <tr><th>2<td>0<td>X<td>0\
-            <tr><th>3<td>X<td>1<td>X\
-        </table>"
-}
diff --git a/examples/declarative/modelviews/webview/inlinehtml.qml b/examples/declarative/modelviews/webview/inlinehtml.qml
new file mode 100644
index 0000000..237bd8f
--- /dev/null
+++ b/examples/declarative/modelviews/webview/inlinehtml.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+import org.webkit 1.0
+
+// Inline HTML with loose formatting can be
+// set on the html property.
+WebView {
+    html:"\
+        <body>
+        <table border=1>
+            <tr><th><th>One<th>Two<th>Three
+            <tr><th>1<td>X<td>1<td>X
+            <tr><th>2<td>0<td>X<td>0
+            <tr><th>3<td>X<td>1<td>X
+        </table>"
+}
diff --git a/examples/declarative/text/edit/edit.qml b/examples/declarative/text/edit/edit.qml
index 4668ab2..1ba3e18 100644
--- a/examples/declarative/text/edit/edit.qml
+++ b/examples/declarative/text/edit/edit.qml
@@ -55,8 +55,8 @@ Rectangle {
             source: "pics/startHandle.sci"
             opacity: 0.0
             width: 10
-            x: edit.positionToRectangle(edit.selectionStart).x-flick.contentX-width
-            y: edit.positionToRectangle(edit.selectionStart).y-flick.contentY
+            x: edit.positionToRectangle(edit.selectionStart).x - flick.contentX-width
+            y: edit.positionToRectangle(edit.selectionStart).y - flick.contentY
             height: edit.positionToRectangle(edit.selectionStart).height
         }
 
@@ -65,8 +65,8 @@ Rectangle {
             source: "pics/endHandle.sci"
             opacity: 0.0
             width: 10
-            x: edit.positionToRectangle(edit.selectionEnd).x-flick.contentX
-            y: edit.positionToRectangle(edit.selectionEnd).y-flick.contentY
+            x: edit.positionToRectangle(edit.selectionEnd).x - flick.contentX
+            y: edit.positionToRectangle(edit.selectionEnd).y - flick.contentY
             height: edit.positionToRectangle(edit.selectionEnd).height
         }
 
@@ -79,8 +79,7 @@ Rectangle {
             interactive: true
             clip: true
 
-            function ensureVisible(r)
-            {
+            function ensureVisible(r) {
                 if (contentX >= r.x)
                     contentX = r.x;
                 else if (contentX+width <= r.x+r.width)
@@ -97,20 +96,25 @@ Rectangle {
                 height: flick.height
                 focus: true
                 wrapMode: TextEdit.Wrap
+
                 onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
+
                 text: "<h1>Text Selection</h1>"
                     +"<p>This example is a whacky text selection mechanisms, showing how these can be implemented in the TextEdit element, to cater for whatever style is appropriate for the target platform."
                     +"<p><b>Press-and-hold</b> to select a word, then drag the selection handles."
                     +"<p><b>Drag outside the selection</b> to scroll the text."
                     +"<p><b>Click inside the selection</b> to cut/copy/paste/cancel selection."
                     +"<p>It's too whacky to let you paste if there is no current selection."
+
                 MouseArea {
+                    property string drag: ""
+                    property int pressPos
+
                     x: -startHandle.width
                     y: 0
                     width: parent.width+startHandle.width+endHandle.width
                     height: parent.height
-                    property string drag: "";
-                    property int pressPos;
+
                     onPressAndHold: {
                         if (editor.state == "") {
                             edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
@@ -118,6 +122,7 @@ Rectangle {
                             editor.state = "selection"
                         }
                     }
+
                     onClicked: {
                         if (editor.state == "") {
                             edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
@@ -126,7 +131,11 @@ Rectangle {
                             edit.openSoftwareInputPanel();
                         }
                     }
-                    function hitHandle(h,x,y) { return x>=h.x+flick.contentX && x<h.x+flick.contentX+h.width && y>=h.y+flick.contentY && y<h.y+flick.contentY+h.height }
+
+                    function hitHandle(h,x,y) { 
+                        return x>=h.x+flick.contentX && x<h.x+flick.contentX+h.width && y>=h.y+flick.contentY && y<h.y+flick.contentY+h.height 
+                    }
+
                     onPressed: {
                         if (editor.state == "selection") {
                             if (hitHandle(startHandle,mouse.x+x,mouse.y+y)) {
@@ -147,6 +156,7 @@ Rectangle {
                             }
                         }
                     }
+
                     onReleased: {
                         if (editor.state == "selection") {
                             if (drag == "selection") {
@@ -156,6 +166,7 @@ Rectangle {
                         }
                         flick.interactive = true
                     }
+
                     onPositionChanged: {
                         if (editor.state == "selection" && drag != "") {
                             if (drag == "start") {
@@ -183,6 +194,7 @@ Rectangle {
             width: 100
             height: 120
             anchors.centerIn: parent
+
             Rectangle {
                 border.width: 1
                 border.color: "darkBlue"
@@ -190,48 +202,73 @@ Rectangle {
                 color: "#806080FF"
                 anchors.fill: parent
             }
+
             Column {
                 anchors.centerIn: parent
                 spacing: 8
+
                 Rectangle {
                     border.width: 1
                     border.color: "darkBlue"
                     color: "#ff7090FF"
                     width: 60
                     height: 16
+
                     Text { anchors.centerIn: parent; text: "Cut" }
-                    MouseArea { anchors.fill: parent;
-                        onClicked: { edit.cut(); editor.state = "" } }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { edit.cut(); editor.state = "" } 
+                    }
                 }
+
                 Rectangle {
                     border.width: 1
                     border.color: "darkBlue"
                     color: "#ff7090FF"
                     width: 60
                     height: 16
+
                     Text { anchors.centerIn: parent; text: "Copy" }
-                    MouseArea { anchors.fill: parent;
-                        onClicked: { edit.copy(); editor.state = "selection" } }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { edit.copy(); editor.state = "selection" } 
+                    }
                 }
+
                 Rectangle {
                     border.width: 1
                     border.color: "darkBlue"
                     color: "#ff7090FF"
                     width: 60
                     height: 16
+
                     Text { anchors.centerIn: parent; text: "Paste" }
-                    MouseArea { anchors.fill: parent;
-                        onClicked: { edit.paste(); edit.cursorPosition = edit.selectionEnd; editor.state = "" } }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { edit.paste(); edit.cursorPosition = edit.selectionEnd; editor.state = "" } 
+                    }
                 }
+
                 Rectangle {
                     border.width: 1
                     border.color: "darkBlue"
                     color: "#ff7090FF"
                     width: 60
                     height: 16
+
                     Text { anchors.centerIn: parent; text: "Deselect" }
-                    MouseArea { anchors.fill: parent;
-                        onClicked: { edit.cursorPosition = edit.selectionEnd; edit.select(edit.cursorPosition,edit.cursorPosition); editor.state = "" } }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { 
+                            edit.cursorPosition = edit.selectionEnd;
+                            edit.select(edit.cursorPosition, edit.cursorPosition);
+                            editor.state = "" 
+                        } 
+                    }
                 }
             }
         }
diff --git a/examples/declarative/ui-components/flipable/content/Card.qml b/examples/declarative/ui-components/flipable/content/Card.qml
index 91a442b..fc60ce4 100644
--- a/examples/declarative/ui-components/flipable/content/Card.qml
+++ b/examples/declarative/ui-components/flipable/content/Card.qml
@@ -49,11 +49,13 @@ Flipable {
     property int yAxis: 0
     property int angle: 0
 
-    width: front.width; height: front.height; state: "back"
+    width: front.width; height: front.height 
 
     front: Image { id: frontImage; smooth: true }
     back: Image { source: "back.png"; smooth: true }
 
+    state: "back"
+
     MouseArea { anchors.fill: parent; onClicked: container.flipped = !container.flipped }
 
     transform: Rotation {
diff --git a/examples/declarative/ui-components/scrollbar/ScrollBar.qml b/examples/declarative/ui-components/scrollbar/ScrollBar.qml
index ba9a52a..9927ecb 100644
--- a/examples/declarative/ui-components/scrollbar/ScrollBar.qml
+++ b/examples/declarative/ui-components/scrollbar/ScrollBar.qml
@@ -60,6 +60,7 @@ Item {
         color: "white"
         opacity: 0.3
     }
+
     // Size the bar to the required size, depending upon the orientation.
     Rectangle {
         x: orientation == Qt.Vertical ? 1 : (scrollBar.position * (scrollBar.width-2) + 1)
diff --git a/examples/declarative/ui-components/scrollbar/main.qml b/examples/declarative/ui-components/scrollbar/main.qml
index 1f7992b..8f5033b 100644
--- a/examples/declarative/ui-components/scrollbar/main.qml
+++ b/examples/declarative/ui-components/scrollbar/main.qml
@@ -66,7 +66,6 @@ Rectangle {
         }
 
         transitions: Transition {
-            from: "*"; to: "*"
             NumberAnimation { properties: "opacity"; duration: 400 }
         }
     }
diff --git a/examples/declarative/ui-components/searchbox/SearchBox.qml b/examples/declarative/ui-components/searchbox/SearchBox.qml
index eaa6b6b..e6b9c8f 100644
--- a/examples/declarative/ui-components/searchbox/SearchBox.qml
+++ b/examples/declarative/ui-components/searchbox/SearchBox.qml
@@ -66,7 +66,10 @@ FocusScope {
         font.italic: true
     }
 
-    MouseArea { anchors.fill: parent; onClicked: { focusScope.focus = true; textInput.openSoftwareInputPanel(); } }
+    MouseArea { 
+        anchors.fill: parent
+        onClicked: { focusScope.focus = true; textInput.openSoftwareInputPanel(); } 
+    }
 
     TextInput {
         id: textInput
@@ -77,7 +80,7 @@ FocusScope {
     Image {
         id: clear
         anchors { right: parent.right; rightMargin: 8; verticalCenter: parent.verticalCenter }
-        source: "images/edit-clear-locationbar-rtl.png"
+        source: "images/clear.png"
         opacity: 0
 
         MouseArea { 
diff --git a/examples/declarative/ui-components/searchbox/images/clear.png b/examples/declarative/ui-components/searchbox/images/clear.png
new file mode 100644
index 0000000..91eb270
Binary files /dev/null and b/examples/declarative/ui-components/searchbox/images/clear.png differ
diff --git a/examples/declarative/ui-components/searchbox/images/edit-clear-locationbar-rtl.png b/examples/declarative/ui-components/searchbox/images/edit-clear-locationbar-rtl.png
deleted file mode 100644
index 91eb270..0000000
Binary files a/examples/declarative/ui-components/searchbox/images/edit-clear-locationbar-rtl.png and /dev/null differ
diff --git a/examples/declarative/ui-components/slideswitch/content/Switch.qml b/examples/declarative/ui-components/slideswitch/content/Switch.qml
index b0ce0c0..2a89177 100644
--- a/examples/declarative/ui-components/slideswitch/content/Switch.qml
+++ b/examples/declarative/ui-components/slideswitch/content/Switch.qml
@@ -53,12 +53,13 @@ Item {
     function toggle() {
         if (toggleswitch.state == "on")
             toggleswitch.state = "off";
-        else toggleswitch.state = "on";
+        else 
+            toggleswitch.state = "on";
     }
 //![2]
 
 //![3]
-    function dorelease() {
+    function releaseSwitch() {
         if (knob.x == 1) {
             if (toggleswitch.state == "off") return;
         }
@@ -87,7 +88,7 @@ Item {
             anchors.fill: parent
             drag.target: knob; drag.axis: Drag.XAxis; drag.minimumX: 1; drag.maximumX: 78
             onClicked: toggle()
-            onReleased: dorelease()
+            onReleased: releaseSwitch()
         }
     }
 //![5]
diff --git a/examples/declarative/ui-components/spinner/content/Spinner.qml b/examples/declarative/ui-components/spinner/content/Spinner.qml
index 55fc542..1c41239 100644
--- a/examples/declarative/ui-components/spinner/content/Spinner.qml
+++ b/examples/declarative/ui-components/spinner/content/Spinner.qml
@@ -45,21 +45,26 @@ Image {
     property alias delegate: view.delegate
     property alias currentIndex: view.currentIndex
     property real itemHeight: 30
+
     source: "spinner-bg.png"
     clip: true
+
     PathView {
         id: view
         anchors.fill: parent
+
         pathItemCount: height/itemHeight
         preferredHighlightBegin: 0.5
         preferredHighlightEnd: 0.5
         highlight: Image { source: "spinner-select.png"; width: view.width; height: itemHeight+4 }
         dragMargin: view.width/2
+
         path: Path {
             startX: view.width/2; startY: -itemHeight/2
             PathLine { x: view.width/2; y: view.pathItemCount*itemHeight + itemHeight }
         }
     }
+
     Keys.onDownPressed: view.incrementCurrentIndex()
     Keys.onUpPressed: view.decrementCurrentIndex()
 }
diff --git a/examples/declarative/ui-components/spinner/main.qml b/examples/declarative/ui-components/spinner/main.qml
index 4403ada..37dd912 100644
--- a/examples/declarative/ui-components/spinner/main.qml
+++ b/examples/declarative/ui-components/spinner/main.qml
@@ -43,8 +43,10 @@ import "content"
 
 Rectangle {
     width: 240; height: 320
+
     Column {
         y: 20; x: 20; spacing: 20
+
         Spinner {
             id: spinner
             width: 200; height: 240
@@ -53,6 +55,7 @@ Rectangle {
             itemHeight: 30
             delegate: Text { font.pixelSize: 25; text: index; height: 30 }
         }
+
         Text { text: "Current item index: " + spinner.currentIndex }
     }
 }
diff --git a/examples/declarative/ui-components/tabwidget/TabWidget.qml b/examples/declarative/ui-components/tabwidget/TabWidget.qml
index 93db4ff..9642e04 100644
--- a/examples/declarative/ui-components/tabwidget/TabWidget.qml
+++ b/examples/declarative/ui-components/tabwidget/TabWidget.qml
@@ -49,16 +49,17 @@ Item {
     onCurrentChanged: setOpacities()
     Component.onCompleted: setOpacities()
 
-    function setOpacities()
-    {
+    function setOpacities() {
         for (var i = 0; i < stack.children.length; ++i) {
-            stack.children[i].opacity = i == current ? 1 : 0
+            stack.children[i].opacity = (i == current ? 1 : 0)
         }
     }
 
     Row {
         id: header
+
         Repeater {
+            model: stack.children.length
             delegate: Rectangle {
                 width: tabWidget.width / stack.children.length; height: 36
 
@@ -85,7 +86,6 @@ Item {
                     onClicked: tabWidget.current = index
                 }
             }
-            model: stack.children.length
         }
     }
 
diff --git a/examples/declarative/xml/xmlhttprequest/data.xml b/examples/declarative/xml/xmlhttprequest/data.xml
new file mode 100644
index 0000000..8b7f1e1
--- /dev/null
+++ b/examples/declarative/xml/xmlhttprequest/data.xml
@@ -0,0 +1,5 @@
+<data>
+    <element1 />
+    <element2 />
+</data>
+
diff --git a/examples/declarative/xml/xmlhttprequest/test.qml b/examples/declarative/xml/xmlhttprequest/test.qml
deleted file mode 100644
index e5f0875..0000000
--- a/examples/declarative/xml/xmlhttprequest/test.qml
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import Qt 4.7
-
-Rectangle {
-    width: 800; height: 600
-
-    MouseArea {
-        anchors.fill: parent
-
-        onClicked: { 
-            var doc = new XMLHttpRequest();
-            doc.onreadystatechange = function() {
-                if (doc.readyState == XMLHttpRequest.HEADERS_RECEIVED) {
-                    console.log("Headers -->");
-                    console.log(doc.getAllResponseHeaders ());
-                    console.log("Last modified -->");
-                    console.log(doc.getResponseHeader ("Last-Modified"));
-                }
-                else if (doc.readyState == XMLHttpRequest.DONE) {
-
-                    var a = doc.responseXML.documentElement;
-                    for (var ii = 0; ii < a.childNodes.length; ++ii) {
-                        console.log(a.childNodes[ii].nodeName);
-                    }
-                    console.log("Headers -->");
-                    console.log(doc.getAllResponseHeaders ());
-                    console.log("Last modified -->");
-                    console.log(doc.getResponseHeader ("Last-Modified"));
-
-                }
-            }
-
-            doc.open("GET", "test.xml");
-            doc.send();
-        }
-    }
-}
diff --git a/examples/declarative/xml/xmlhttprequest/test.xml b/examples/declarative/xml/xmlhttprequest/test.xml
deleted file mode 100644
index 8b7f1e1..0000000
--- a/examples/declarative/xml/xmlhttprequest/test.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<data>
-    <element1 />
-    <element2 />
-</data>
-
diff --git a/examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml b/examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml
new file mode 100644
index 0000000..b302729
--- /dev/null
+++ b/examples/declarative/xml/xmlhttprequest/xmlhttprequest-example.qml
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+
+Rectangle {
+    width: 350; height: 400
+
+    function showRequestInfo(text) {
+        log.text = log.text + "\n" + text
+        console.log(text)
+    }
+
+    Text { id: log; anchors.fill: parent; anchors.margins: 10 }
+
+    Rectangle {
+        id: button
+        anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom; anchors.margins: 10
+        width: buttonText.width + 10; height: buttonText.height + 10
+        border.width: mouseArea.pressed ? 2 : 1
+        radius : 5; smooth: true
+
+        Text { id: buttonText; anchors.centerIn: parent; text: "Request data.xml" }
+
+        MouseArea {
+            id: mouseArea
+            anchors.fill: parent
+            onClicked: {
+                log.text = ""
+                console.log("\n")
+
+                var doc = new XMLHttpRequest();
+                doc.onreadystatechange = function() {
+                    if (doc.readyState == XMLHttpRequest.HEADERS_RECEIVED) {
+                        showRequestInfo("Headers -->");
+                        showRequestInfo(doc.getAllResponseHeaders ());
+                        showRequestInfo("Last modified -->");
+                        showRequestInfo(doc.getResponseHeader ("Last-Modified"));
+
+                    } else if (doc.readyState == XMLHttpRequest.DONE) {
+                        var a = doc.responseXML.documentElement;
+                        for (var ii = 0; ii < a.childNodes.length; ++ii) {
+                            showRequestInfo(a.childNodes[ii].nodeName);
+                        }
+                        showRequestInfo("Headers -->");
+                        showRequestInfo(doc.getAllResponseHeaders ());
+                        showRequestInfo("Last modified -->");
+                        showRequestInfo(doc.getResponseHeader ("Last-Modified"));
+                    }
+                }
+
+                doc.open("GET", "data.xml");
+                doc.send();
+            }
+        }
+    }
+}
+
-- 
cgit v0.12


From 38ca1b7e65dfeb154a913c493199bfbdf0561526 Mon Sep 17 00:00:00 2001
From: Bea Lam <bea.lam@nokia.com>
Date: Mon, 21 Jun 2010 15:41:32 +1000
Subject: Rename example: edit -> textselection

---
 examples/declarative/text/edit/edit.qml            | 290 ---------------------
 examples/declarative/text/edit/pics/endHandle.png  | Bin 185 -> 0 bytes
 examples/declarative/text/edit/pics/endHandle.sci  |   5 -
 .../declarative/text/edit/pics/startHandle.png     | Bin 178 -> 0 bytes
 .../declarative/text/edit/pics/startHandle.sci     |   5 -
 .../text/textselection/pics/endHandle.png          | Bin 0 -> 185 bytes
 .../text/textselection/pics/endHandle.sci          |   5 +
 .../text/textselection/pics/startHandle.png        | Bin 0 -> 178 bytes
 .../text/textselection/pics/startHandle.sci        |   5 +
 .../text/textselection/textselection.qml           | 290 +++++++++++++++++++++
 .../text/textselection/textselection.qmlproject    |  16 ++
 11 files changed, 316 insertions(+), 300 deletions(-)
 delete mode 100644 examples/declarative/text/edit/edit.qml
 delete mode 100644 examples/declarative/text/edit/pics/endHandle.png
 delete mode 100644 examples/declarative/text/edit/pics/endHandle.sci
 delete mode 100644 examples/declarative/text/edit/pics/startHandle.png
 delete mode 100644 examples/declarative/text/edit/pics/startHandle.sci
 create mode 100644 examples/declarative/text/textselection/pics/endHandle.png
 create mode 100644 examples/declarative/text/textselection/pics/endHandle.sci
 create mode 100644 examples/declarative/text/textselection/pics/startHandle.png
 create mode 100644 examples/declarative/text/textselection/pics/startHandle.sci
 create mode 100644 examples/declarative/text/textselection/textselection.qml
 create mode 100644 examples/declarative/text/textselection/textselection.qmlproject

diff --git a/examples/declarative/text/edit/edit.qml b/examples/declarative/text/edit/edit.qml
deleted file mode 100644
index 1ba3e18..0000000
--- a/examples/declarative/text/edit/edit.qml
+++ /dev/null
@@ -1,290 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-import Qt 4.7
-
-Rectangle {
-    id: editor
-    color: "lightGrey"
-    width: 640; height: 480
-
-    Rectangle {
-        color: "white"
-        anchors.fill: parent
-        anchors.margins: 20
-
-        BorderImage {
-            id: startHandle
-            source: "pics/startHandle.sci"
-            opacity: 0.0
-            width: 10
-            x: edit.positionToRectangle(edit.selectionStart).x - flick.contentX-width
-            y: edit.positionToRectangle(edit.selectionStart).y - flick.contentY
-            height: edit.positionToRectangle(edit.selectionStart).height
-        }
-
-        BorderImage {
-            id: endHandle
-            source: "pics/endHandle.sci"
-            opacity: 0.0
-            width: 10
-            x: edit.positionToRectangle(edit.selectionEnd).x - flick.contentX
-            y: edit.positionToRectangle(edit.selectionEnd).y - flick.contentY
-            height: edit.positionToRectangle(edit.selectionEnd).height
-        }
-
-        Flickable {
-            id: flick
-
-            anchors.fill: parent
-            contentWidth: edit.paintedWidth
-            contentHeight: edit.paintedHeight
-            interactive: true
-            clip: true
-
-            function ensureVisible(r) {
-                if (contentX >= r.x)
-                    contentX = r.x;
-                else if (contentX+width <= r.x+r.width)
-                    contentX = r.x+r.width-width;
-                if (contentY >= r.y)
-                    contentY = r.y;
-                else if (contentY+height <= r.y+r.height)
-                    contentY = r.y+r.height-height;
-            }
-
-            TextEdit {
-                id: edit
-                width: flick.width
-                height: flick.height
-                focus: true
-                wrapMode: TextEdit.Wrap
-
-                onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
-
-                text: "<h1>Text Selection</h1>"
-                    +"<p>This example is a whacky text selection mechanisms, showing how these can be implemented in the TextEdit element, to cater for whatever style is appropriate for the target platform."
-                    +"<p><b>Press-and-hold</b> to select a word, then drag the selection handles."
-                    +"<p><b>Drag outside the selection</b> to scroll the text."
-                    +"<p><b>Click inside the selection</b> to cut/copy/paste/cancel selection."
-                    +"<p>It's too whacky to let you paste if there is no current selection."
-
-                MouseArea {
-                    property string drag: ""
-                    property int pressPos
-
-                    x: -startHandle.width
-                    y: 0
-                    width: parent.width+startHandle.width+endHandle.width
-                    height: parent.height
-
-                    onPressAndHold: {
-                        if (editor.state == "") {
-                            edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
-                            edit.selectWord();
-                            editor.state = "selection"
-                        }
-                    }
-
-                    onClicked: {
-                        if (editor.state == "") {
-                            edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
-                            if (!edit.focus)
-                                edit.focus = true;
-                            edit.openSoftwareInputPanel();
-                        }
-                    }
-
-                    function hitHandle(h,x,y) { 
-                        return x>=h.x+flick.contentX && x<h.x+flick.contentX+h.width && y>=h.y+flick.contentY && y<h.y+flick.contentY+h.height 
-                    }
-
-                    onPressed: {
-                        if (editor.state == "selection") {
-                            if (hitHandle(startHandle,mouse.x+x,mouse.y+y)) {
-                                drag = "start"
-                                flick.interactive = false
-                            } else if (hitHandle(endHandle,mouse.x+x,mouse.y+y)) {
-                                drag = "end"
-                                flick.interactive = false
-                            } else {
-                                var pos = edit.positionAt(mouse.x+x,mouse.y+y);
-                                if (pos >= edit.selectionStart && pos <= edit.selectionEnd) {
-                                    drag = "selection"
-                                    flick.interactive = false
-                                } else {
-                                    drag = ""
-                                    flick.interactive = true
-                                }
-                            }
-                        }
-                    }
-
-                    onReleased: {
-                        if (editor.state == "selection") {
-                            if (drag == "selection") {
-                                editor.state = "menu"
-                            }
-                            drag = ""
-                        }
-                        flick.interactive = true
-                    }
-
-                    onPositionChanged: {
-                        if (editor.state == "selection" && drag != "") {
-                            if (drag == "start") {
-                                var pos = edit.positionAt(mouse.x+x+startHandle.width/2,mouse.y+y);
-                                var e = edit.selectionEnd;
-                                if (e < pos)
-                                    e = pos;
-                                edit.select(pos,e);
-                            } else if (drag == "end") {
-                                var pos = edit.positionAt(mouse.x+x-endHandle.width/2,mouse.y+y);
-                                var s = edit.selectionStart;
-                                if (s > pos)
-                                    s = pos;
-                                edit.select(s,pos);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        Item {
-            id: menu
-            opacity: 0.0
-            width: 100
-            height: 120
-            anchors.centerIn: parent
-
-            Rectangle {
-                border.width: 1
-                border.color: "darkBlue"
-                radius: 15
-                color: "#806080FF"
-                anchors.fill: parent
-            }
-
-            Column {
-                anchors.centerIn: parent
-                spacing: 8
-
-                Rectangle {
-                    border.width: 1
-                    border.color: "darkBlue"
-                    color: "#ff7090FF"
-                    width: 60
-                    height: 16
-
-                    Text { anchors.centerIn: parent; text: "Cut" }
-
-                    MouseArea { 
-                        anchors.fill: parent
-                        onClicked: { edit.cut(); editor.state = "" } 
-                    }
-                }
-
-                Rectangle {
-                    border.width: 1
-                    border.color: "darkBlue"
-                    color: "#ff7090FF"
-                    width: 60
-                    height: 16
-
-                    Text { anchors.centerIn: parent; text: "Copy" }
-
-                    MouseArea { 
-                        anchors.fill: parent
-                        onClicked: { edit.copy(); editor.state = "selection" } 
-                    }
-                }
-
-                Rectangle {
-                    border.width: 1
-                    border.color: "darkBlue"
-                    color: "#ff7090FF"
-                    width: 60
-                    height: 16
-
-                    Text { anchors.centerIn: parent; text: "Paste" }
-
-                    MouseArea { 
-                        anchors.fill: parent
-                        onClicked: { edit.paste(); edit.cursorPosition = edit.selectionEnd; editor.state = "" } 
-                    }
-                }
-
-                Rectangle {
-                    border.width: 1
-                    border.color: "darkBlue"
-                    color: "#ff7090FF"
-                    width: 60
-                    height: 16
-
-                    Text { anchors.centerIn: parent; text: "Deselect" }
-
-                    MouseArea { 
-                        anchors.fill: parent
-                        onClicked: { 
-                            edit.cursorPosition = edit.selectionEnd;
-                            edit.select(edit.cursorPosition, edit.cursorPosition);
-                            editor.state = "" 
-                        } 
-                    }
-                }
-            }
-        }
-    }
-
-    states: [
-        State {
-            name: "selection"
-            PropertyChanges { target: startHandle; opacity: 1.0 }
-            PropertyChanges { target: endHandle; opacity: 1.0 }
-        },
-        State {
-            name: "menu"
-            PropertyChanges { target: startHandle; opacity: 0.5 }
-            PropertyChanges { target: endHandle; opacity: 0.5 }
-            PropertyChanges { target: menu; opacity: 1.0 }
-        }
-    ]
-}
diff --git a/examples/declarative/text/edit/pics/endHandle.png b/examples/declarative/text/edit/pics/endHandle.png
deleted file mode 100644
index 1a4bc5d..0000000
Binary files a/examples/declarative/text/edit/pics/endHandle.png and /dev/null differ
diff --git a/examples/declarative/text/edit/pics/endHandle.sci b/examples/declarative/text/edit/pics/endHandle.sci
deleted file mode 100644
index 4f51f24..0000000
--- a/examples/declarative/text/edit/pics/endHandle.sci
+++ /dev/null
@@ -1,5 +0,0 @@
-border.left: 0
-border.top: 6
-border.bottom: 6
-border.right: 6
-source: endHandle.png
diff --git a/examples/declarative/text/edit/pics/startHandle.png b/examples/declarative/text/edit/pics/startHandle.png
deleted file mode 100644
index deedcd5..0000000
Binary files a/examples/declarative/text/edit/pics/startHandle.png and /dev/null differ
diff --git a/examples/declarative/text/edit/pics/startHandle.sci b/examples/declarative/text/edit/pics/startHandle.sci
deleted file mode 100644
index f9eae20..0000000
--- a/examples/declarative/text/edit/pics/startHandle.sci
+++ /dev/null
@@ -1,5 +0,0 @@
-border.left: 6
-border.top: 6
-border.bottom: 6
-border.right: 0
-source: startHandle.png
diff --git a/examples/declarative/text/textselection/pics/endHandle.png b/examples/declarative/text/textselection/pics/endHandle.png
new file mode 100644
index 0000000..1a4bc5d
Binary files /dev/null and b/examples/declarative/text/textselection/pics/endHandle.png differ
diff --git a/examples/declarative/text/textselection/pics/endHandle.sci b/examples/declarative/text/textselection/pics/endHandle.sci
new file mode 100644
index 0000000..4f51f24
--- /dev/null
+++ b/examples/declarative/text/textselection/pics/endHandle.sci
@@ -0,0 +1,5 @@
+border.left: 0
+border.top: 6
+border.bottom: 6
+border.right: 6
+source: endHandle.png
diff --git a/examples/declarative/text/textselection/pics/startHandle.png b/examples/declarative/text/textselection/pics/startHandle.png
new file mode 100644
index 0000000..deedcd5
Binary files /dev/null and b/examples/declarative/text/textselection/pics/startHandle.png differ
diff --git a/examples/declarative/text/textselection/pics/startHandle.sci b/examples/declarative/text/textselection/pics/startHandle.sci
new file mode 100644
index 0000000..f9eae20
--- /dev/null
+++ b/examples/declarative/text/textselection/pics/startHandle.sci
@@ -0,0 +1,5 @@
+border.left: 6
+border.top: 6
+border.bottom: 6
+border.right: 0
+source: startHandle.png
diff --git a/examples/declarative/text/textselection/textselection.qml b/examples/declarative/text/textselection/textselection.qml
new file mode 100644
index 0000000..1ba3e18
--- /dev/null
+++ b/examples/declarative/text/textselection/textselection.qml
@@ -0,0 +1,290 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import Qt 4.7
+
+Rectangle {
+    id: editor
+    color: "lightGrey"
+    width: 640; height: 480
+
+    Rectangle {
+        color: "white"
+        anchors.fill: parent
+        anchors.margins: 20
+
+        BorderImage {
+            id: startHandle
+            source: "pics/startHandle.sci"
+            opacity: 0.0
+            width: 10
+            x: edit.positionToRectangle(edit.selectionStart).x - flick.contentX-width
+            y: edit.positionToRectangle(edit.selectionStart).y - flick.contentY
+            height: edit.positionToRectangle(edit.selectionStart).height
+        }
+
+        BorderImage {
+            id: endHandle
+            source: "pics/endHandle.sci"
+            opacity: 0.0
+            width: 10
+            x: edit.positionToRectangle(edit.selectionEnd).x - flick.contentX
+            y: edit.positionToRectangle(edit.selectionEnd).y - flick.contentY
+            height: edit.positionToRectangle(edit.selectionEnd).height
+        }
+
+        Flickable {
+            id: flick
+
+            anchors.fill: parent
+            contentWidth: edit.paintedWidth
+            contentHeight: edit.paintedHeight
+            interactive: true
+            clip: true
+
+            function ensureVisible(r) {
+                if (contentX >= r.x)
+                    contentX = r.x;
+                else if (contentX+width <= r.x+r.width)
+                    contentX = r.x+r.width-width;
+                if (contentY >= r.y)
+                    contentY = r.y;
+                else if (contentY+height <= r.y+r.height)
+                    contentY = r.y+r.height-height;
+            }
+
+            TextEdit {
+                id: edit
+                width: flick.width
+                height: flick.height
+                focus: true
+                wrapMode: TextEdit.Wrap
+
+                onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
+
+                text: "<h1>Text Selection</h1>"
+                    +"<p>This example is a whacky text selection mechanisms, showing how these can be implemented in the TextEdit element, to cater for whatever style is appropriate for the target platform."
+                    +"<p><b>Press-and-hold</b> to select a word, then drag the selection handles."
+                    +"<p><b>Drag outside the selection</b> to scroll the text."
+                    +"<p><b>Click inside the selection</b> to cut/copy/paste/cancel selection."
+                    +"<p>It's too whacky to let you paste if there is no current selection."
+
+                MouseArea {
+                    property string drag: ""
+                    property int pressPos
+
+                    x: -startHandle.width
+                    y: 0
+                    width: parent.width+startHandle.width+endHandle.width
+                    height: parent.height
+
+                    onPressAndHold: {
+                        if (editor.state == "") {
+                            edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
+                            edit.selectWord();
+                            editor.state = "selection"
+                        }
+                    }
+
+                    onClicked: {
+                        if (editor.state == "") {
+                            edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y);
+                            if (!edit.focus)
+                                edit.focus = true;
+                            edit.openSoftwareInputPanel();
+                        }
+                    }
+
+                    function hitHandle(h,x,y) { 
+                        return x>=h.x+flick.contentX && x<h.x+flick.contentX+h.width && y>=h.y+flick.contentY && y<h.y+flick.contentY+h.height 
+                    }
+
+                    onPressed: {
+                        if (editor.state == "selection") {
+                            if (hitHandle(startHandle,mouse.x+x,mouse.y+y)) {
+                                drag = "start"
+                                flick.interactive = false
+                            } else if (hitHandle(endHandle,mouse.x+x,mouse.y+y)) {
+                                drag = "end"
+                                flick.interactive = false
+                            } else {
+                                var pos = edit.positionAt(mouse.x+x,mouse.y+y);
+                                if (pos >= edit.selectionStart && pos <= edit.selectionEnd) {
+                                    drag = "selection"
+                                    flick.interactive = false
+                                } else {
+                                    drag = ""
+                                    flick.interactive = true
+                                }
+                            }
+                        }
+                    }
+
+                    onReleased: {
+                        if (editor.state == "selection") {
+                            if (drag == "selection") {
+                                editor.state = "menu"
+                            }
+                            drag = ""
+                        }
+                        flick.interactive = true
+                    }
+
+                    onPositionChanged: {
+                        if (editor.state == "selection" && drag != "") {
+                            if (drag == "start") {
+                                var pos = edit.positionAt(mouse.x+x+startHandle.width/2,mouse.y+y);
+                                var e = edit.selectionEnd;
+                                if (e < pos)
+                                    e = pos;
+                                edit.select(pos,e);
+                            } else if (drag == "end") {
+                                var pos = edit.positionAt(mouse.x+x-endHandle.width/2,mouse.y+y);
+                                var s = edit.selectionStart;
+                                if (s > pos)
+                                    s = pos;
+                                edit.select(s,pos);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        Item {
+            id: menu
+            opacity: 0.0
+            width: 100
+            height: 120
+            anchors.centerIn: parent
+
+            Rectangle {
+                border.width: 1
+                border.color: "darkBlue"
+                radius: 15
+                color: "#806080FF"
+                anchors.fill: parent
+            }
+
+            Column {
+                anchors.centerIn: parent
+                spacing: 8
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Cut" }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { edit.cut(); editor.state = "" } 
+                    }
+                }
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Copy" }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { edit.copy(); editor.state = "selection" } 
+                    }
+                }
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Paste" }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { edit.paste(); edit.cursorPosition = edit.selectionEnd; editor.state = "" } 
+                    }
+                }
+
+                Rectangle {
+                    border.width: 1
+                    border.color: "darkBlue"
+                    color: "#ff7090FF"
+                    width: 60
+                    height: 16
+
+                    Text { anchors.centerIn: parent; text: "Deselect" }
+
+                    MouseArea { 
+                        anchors.fill: parent
+                        onClicked: { 
+                            edit.cursorPosition = edit.selectionEnd;
+                            edit.select(edit.cursorPosition, edit.cursorPosition);
+                            editor.state = "" 
+                        } 
+                    }
+                }
+            }
+        }
+    }
+
+    states: [
+        State {
+            name: "selection"
+            PropertyChanges { target: startHandle; opacity: 1.0 }
+            PropertyChanges { target: endHandle; opacity: 1.0 }
+        },
+        State {
+            name: "menu"
+            PropertyChanges { target: startHandle; opacity: 0.5 }
+            PropertyChanges { target: endHandle; opacity: 0.5 }
+            PropertyChanges { target: menu; opacity: 1.0 }
+        }
+    ]
+}
diff --git a/examples/declarative/text/textselection/textselection.qmlproject b/examples/declarative/text/textselection/textselection.qmlproject
new file mode 100644
index 0000000..d4909f8
--- /dev/null
+++ b/examples/declarative/text/textselection/textselection.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+    /* List of plugin directories passed to QML runtime */
+    // importPaths: [ " ../exampleplugin " ]
+}
-- 
cgit v0.12


From 2e0b872ed3f15db3f54fcf0cff7f2e412ba56e46 Mon Sep 17 00:00:00 2001
From: Bea Lam <bea.lam@nokia.com>
Date: Tue, 22 Jun 2010 11:21:45 +1000
Subject: Add screenshots for most examples and demos

---
 doc/src/declarative/examples.qdoc                  |  28 ++-
 doc/src/examples/qml-examples.qdoc                 | 236 +++++++++++++++++++--
 doc/src/examples/qml-webbrowser.qdoc               |  52 +++++
 doc/src/images/declarative-folderlistmodel.png     | Bin 17764 -> 14963 bytes
 doc/src/images/qml-behaviors-example.png           | Bin 0 -> 6367 bytes
 doc/src/images/qml-borderimage-example.png         | Bin 0 -> 25204 bytes
 doc/src/images/qml-borderimage-shadows-example.png | Bin 0 -> 2606 bytes
 doc/src/images/qml-calculator-example.png          | Bin 33956 -> 33892 bytes
 doc/src/images/qml-coloranim-example.png           | Bin 0 -> 6184 bytes
 doc/src/images/qml-dynamicscene-example.png        | Bin 65247 -> 71620 bytes
 doc/src/images/qml-easing-example.png              | Bin 0 -> 29397 bytes
 doc/src/images/qml-focus-example.png               | Bin 26833 -> 43921 bytes
 .../images/qml-fonts-availableFonts-example.png    | Bin 0 -> 33674 bytes
 doc/src/images/qml-fonts-banner-example.png        | Bin 0 -> 8502 bytes
 doc/src/images/qml-fonts-fonts-example.png         | Bin 0 -> 41568 bytes
 doc/src/images/qml-fonts-hello-example.png         | Bin 0 -> 3213 bytes
 doc/src/images/qml-gridview-example.png            | Bin 0 -> 24321 bytes
 doc/src/images/qml-i18n-example.png                | Bin 0 -> 7683 bytes
 doc/src/images/qml-layoutitem-example.png          | Bin 0 -> 3817 bytes
 .../images/qml-listview-dynamiclist-example.png    | Bin 0 -> 33091 bytes
 .../qml-listview-expandingdelegates-example.png    | Bin 0 -> 46012 bytes
 doc/src/images/qml-listview-highlight-example.png  | Bin 0 -> 14216 bytes
 .../qml-listview-highlightranges-example.png       | Bin 0 -> 44290 bytes
 doc/src/images/qml-mousearea-example.png           | Bin 0 -> 5527 bytes
 doc/src/images/qml-objectlistmodel-example.png     | Bin 0 -> 1618 bytes
 doc/src/images/qml-package-example.png             | Bin 0 -> 4597 bytes
 doc/src/images/qml-parallax-example.png            | Bin 0 -> 145854 bytes
 doc/src/images/qml-plugins-example.png             | Bin 0 -> 15773 bytes
 doc/src/images/qml-positioners-example.png         | Bin 0 -> 26813 bytes
 doc/src/images/qml-propertyanim-example.png        | Bin 0 -> 5028 bytes
 doc/src/images/qml-qgraphicsgridlayout-example.png | Bin 0 -> 34384 bytes
 .../images/qml-qgraphicslinearlayout-example.png   | Bin 0 -> 21677 bytes
 doc/src/images/qml-qwidgets-example.png            | Bin 0 -> 13394 bytes
 doc/src/images/qml-rssnews-demo.png                | Bin 143314 -> 128307 bytes
 doc/src/images/qml-samegame-demo.png               | Bin 285415 -> 213137 bytes
 doc/src/images/qml-scrollbar-example.png           | Bin 0 -> 266986 bytes
 doc/src/images/qml-states-example.png              | Bin 0 -> 4344 bytes
 doc/src/images/qml-stringlistmodel-example.png     | Bin 0 -> 1612 bytes
 doc/src/images/qml-tabwidget-example.png           | Bin 6487 -> 5298 bytes
 doc/src/images/qml-textselection-example.png       | Bin 0 -> 21889 bytes
 doc/src/images/qml-transitions-example.png         | Bin 0 -> 4377 bytes
 doc/src/images/qml-tvtennis-example.png            | Bin 2070 -> 1385 bytes
 doc/src/images/qml-visualitemmodel-example.png     | Bin 0 -> 2166 bytes
 doc/src/images/qml-webbrowser-demo.png             | Bin 0 -> 85107 bytes
 doc/src/images/qml-webview-alert-example.png       | Bin 0 -> 5417 bytes
 doc/src/images/qml-webview-autosize-example.png    | Bin 0 -> 11370 bytes
 doc/src/images/qml-webview-googlemaps-example.png  | Bin 0 -> 133411 bytes
 doc/src/images/qml-webview-inlinehtml-example.png  | Bin 0 -> 3877 bytes
 doc/src/images/qml-webview-newwindows-example.png  | Bin 0 -> 6152 bytes
 doc/src/images/qml-xmlhttprequest-example.png      | Bin 0 -> 21311 bytes
 50 files changed, 283 insertions(+), 33 deletions(-)
 create mode 100644 doc/src/examples/qml-webbrowser.qdoc
 create mode 100644 doc/src/images/qml-behaviors-example.png
 create mode 100644 doc/src/images/qml-borderimage-example.png
 create mode 100644 doc/src/images/qml-borderimage-shadows-example.png
 create mode 100644 doc/src/images/qml-coloranim-example.png
 create mode 100644 doc/src/images/qml-easing-example.png
 create mode 100644 doc/src/images/qml-fonts-availableFonts-example.png
 create mode 100644 doc/src/images/qml-fonts-banner-example.png
 create mode 100644 doc/src/images/qml-fonts-fonts-example.png
 create mode 100644 doc/src/images/qml-fonts-hello-example.png
 create mode 100644 doc/src/images/qml-gridview-example.png
 create mode 100644 doc/src/images/qml-i18n-example.png
 create mode 100644 doc/src/images/qml-layoutitem-example.png
 create mode 100644 doc/src/images/qml-listview-dynamiclist-example.png
 create mode 100644 doc/src/images/qml-listview-expandingdelegates-example.png
 create mode 100644 doc/src/images/qml-listview-highlight-example.png
 create mode 100644 doc/src/images/qml-listview-highlightranges-example.png
 create mode 100644 doc/src/images/qml-mousearea-example.png
 create mode 100644 doc/src/images/qml-objectlistmodel-example.png
 create mode 100644 doc/src/images/qml-package-example.png
 create mode 100644 doc/src/images/qml-parallax-example.png
 create mode 100644 doc/src/images/qml-plugins-example.png
 create mode 100644 doc/src/images/qml-positioners-example.png
 create mode 100644 doc/src/images/qml-propertyanim-example.png
 create mode 100644 doc/src/images/qml-qgraphicsgridlayout-example.png
 create mode 100644 doc/src/images/qml-qgraphicslinearlayout-example.png
 create mode 100644 doc/src/images/qml-qwidgets-example.png
 create mode 100644 doc/src/images/qml-scrollbar-example.png
 create mode 100644 doc/src/images/qml-states-example.png
 create mode 100644 doc/src/images/qml-stringlistmodel-example.png
 create mode 100644 doc/src/images/qml-textselection-example.png
 create mode 100644 doc/src/images/qml-transitions-example.png
 create mode 100644 doc/src/images/qml-visualitemmodel-example.png
 create mode 100644 doc/src/images/qml-webbrowser-demo.png
 create mode 100644 doc/src/images/qml-webview-alert-example.png
 create mode 100644 doc/src/images/qml-webview-autosize-example.png
 create mode 100644 doc/src/images/qml-webview-googlemaps-example.png
 create mode 100644 doc/src/images/qml-webview-inlinehtml-example.png
 create mode 100644 doc/src/images/qml-webview-newwindows-example.png
 create mode 100644 doc/src/images/qml-xmlhttprequest-example.png

diff --git a/doc/src/declarative/examples.qdoc b/doc/src/declarative/examples.qdoc
index ad8c10c..dcd0362 100644
--- a/doc/src/declarative/examples.qdoc
+++ b/doc/src/declarative/examples.qdoc
@@ -72,7 +72,7 @@ For example, from your build directory, run:
 \list
 \o \l{declarative/animation/basics}{Basics}
 \o \l{declarative/animation/behaviors}{Behaviors}
-\o \l{declarative/animation/easing}{Easing types}
+\o \l{declarative/animation/easing}{Easing}
 \o \l{declarative/animation/states}{States}
 \endlist
 
@@ -82,6 +82,12 @@ For example, from your build directory, run:
 \o \l{declarative/imageelements/image}{Image}
 \endlist
 
+\section2 Text
+\list
+\o \l{declarative/text/fonts}{Fonts}
+\o \l{declarative/text/textselection}{Text Selection}
+\endlist
+
 \section2 Positioners
 \list
 \o \l{declarative/positioners}{Example}
@@ -122,6 +128,15 @@ For example, from your build directory, run:
 \o \l{declarative/modelviews/webview}{WebView}
 \endlist
 
+\section2 Toys
+\list
+\o \l{declarative/toys/clocks}{Clocks}
+\o \l{declarative/toys/corkboards}{Corkboards}
+\o \l{declarative/toys/dynamicscene}{Dynamic Scene}
+\o \l{declarative/toys/tic-tac-toe}{Tic Tac Toe}
+\o \l{declarative/toys/tvtennis}{TV Tennis}
+\endlist
+
 \section2 XML
 \list
 \o \l{declarative/xml/xmlhttprequest}{XmlHttpRequest}
@@ -153,15 +168,6 @@ For example, from your build directory, run:
 \o \l{declarative/cppextensions/networkaccessmanagerfactory}{Network access manager factory}
 \endlist
 
-\section2 Toys
-\list
-\o \l{declarative/toys/clocks}{Clocks}
-\o \l{declarative/toys/corkboards}{Corkboards}
-\o \l{declarative/toys/dynamicscene}{Dynamic Scene}
-\o \l{declarative/toys/tic-tac-toe}{Tic Tac Toe}
-\o \l{declarative/toys/tvtennis}{TV Tennis}
-\endlist
-
 
 \section1 Demos
 
@@ -173,6 +179,8 @@ For example, from your build directory, run:
 \o \l{demos/declarative/rssnews}{RSS News Reader}
 \o \l{demos/declarative/samegame}{Same Game}
 \o \l{demos/declarative/snake}{Snake}
+\o \l{demos/declarative/twitter}{Twitter}
+\o \l{demos/declarative/webbrowser}{Web Browser}
 \endlist
 
 \section1 Labs
diff --git a/doc/src/examples/qml-examples.qdoc b/doc/src/examples/qml-examples.qdoc
index ee708a8..1c0680d 100644
--- a/doc/src/examples/qml-examples.qdoc
+++ b/doc/src/examples/qml-examples.qdoc
@@ -43,7 +43,21 @@
     \title Animation: Basics
     \example declarative/animation/basics
 
-    This example shows how to create \l{QML Animation}{animations} in QML.
+    This example shows how to create and combine \l{QML Animation}{animations} in QML.
+
+    \table
+    \row
+    \o \image qml-coloranim-example.png
+    \row
+    \o color-animation.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-propertyanim-example.png
+    \row
+    \o property-animation.qml
+    \endtable
 */
 
 /*!
@@ -51,34 +65,69 @@
     \example declarative/animation/behaviors
 
     This example shows how to use QML behaviors. 
+
+    \image qml-behaviors-example.png
 */
 
 /*!
-    \title Animation: Easing types
+    \title Animation: Easing 
     \example declarative/animation/easing
 
     This example shows the different easing modes available for \l{QML Animation}{animations}.
+
+    \image qml-easing-example.png
 */
 
 /*!
     \title Animation: States
     \example declarative/animation/states
 
-    This example shows how to use \l{States}{states} and \l{Transitions}{transitions}.
+    These examples show how to use \l{States}{states} and \l{Transitions}{transitions}.
+
+    The \c states.qml example shows how an item can change between states, and \c transitions.qml
+    shows how these state changes can be animated.
+
+    \table
+    \row
+    \o \image qml-states-example.png
+    \row
+    \o states.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-transitions-example.png
+    \row
+    \o transitions.qml
+    \endtable
 */
 
 /*!
     \title Image Elements: Border Image
     \example declarative/imageelements/borderimage
 
-    This example shows how to use the BorderImage element.
+    These examples show how to use the BorderImage element.
+
+    \table
+    \row
+    \o \image qml-borderimage-example.png
+    \row
+    \o borderimage.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-borderimage-shadows-example.png
+    \row
+    \o shadows.qml
+    \endtable
 */
 
 /*!
     \title Image Elements: Image
     \example declarative/imageelements/image
 
-    This example shows how to use the Image element and its \l{Image::fillMode}{fillModes}.
+    This example shows how to use the \l Image element and its \l{Image::fillMode}{fillModes}.
 
     \image qml-image-example.png
 */
@@ -116,6 +165,8 @@
     \example declarative/cppextensions/plugins
 
     This example shows how to create a C++ plugin extension by subclassing QDeclarativeExtensionPlugin.
+
+    \image qml-plugins-example.png
 */
 
 /*!
@@ -124,6 +175,8 @@
 
     This example show how to use the LayoutItem element to integrate QML items into an existing 
     \l{Graphics View Framework}{Graphics View}-based application.
+
+    \image qml-layoutitem-example.png
 */
 /*!
     \title QGraphicsGridLayout
@@ -132,6 +185,8 @@
     This example shows how to use QGraphicsGridLayout to lay out QML items. This is 
     useful if you need to integrate Qt \l{Graphics View Framework}{Graphics View} layouts with
     QML.
+
+    \image qml-qgraphicsgridlayout-example.png
 */
 /*!
     \title QGraphicsLinearLayout
@@ -140,6 +195,8 @@
     This example shows how to use QGraphicsLinearLayout to lay out QML items. This is 
     useful if you need to integrate Qt \l{Graphics View Framework}{Graphics View} layouts with
     QML.
+    
+    \image qml-qgraphicslinearlayout-example.png
 */
 /*!
     \page declarative-cppextensions-qgraphicslayouts.html
@@ -160,6 +217,8 @@
     \example declarative/cppextensions/qwidgets
 
     This example shows how to embed QWidget-based objects into QML using QGraphicsProxyWidget.
+
+    \image qml-qwidgets-example.png
 */
 
 /*!
@@ -171,7 +230,7 @@
 */
 
 /*!
-    \title C++ Extensions: Network access manager
+    \title C++ Extensions: Network access manager factory
     \example declarative/cppextensions/networkaccessmanagerfactory
 
     This example shows how to use QDeclarativeNetworkAccessManagerFactory to create a QNetworkAccessManager
@@ -183,21 +242,25 @@
     \example declarative/i18n
 
     This example shows how to enable text translation in QML.
+
+    \image qml-i18n-example.png
 */
 
 /*!
     \title Positioners
     \example declarative/positioners
 
-    This example shows how to use positioner elements such as Row, Column,
-    Grid and Flow.
+    This example shows how to use positioner elements such as \l Row, \l Column,
+    \l Grid and \l Flow.
+
+    \image qml-positioners-example.png
 */
 
 /*!
     \title Key Interaction: Focus
     \example declarative/keyinteraction/focus
 
-    This example shows how to handle keys and focus in QML.
+    This example shows how to handle keyboard input and focus in QML.
 
     \image qml-focus-example.png
 */
@@ -207,6 +270,8 @@
     \example declarative/modelviews/gridview
 
     This example shows how to use the GridView element.
+
+    \image qml-gridview-example.png
 */
 
 /*!
@@ -214,6 +279,41 @@
     \example declarative/modelviews/listview
 
     These examples show how to use the ListView element.
+
+    \table
+    \row
+    \o \image qml-listview-dynamiclist-example.png
+    \row
+    \o dynamiclist.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-listview-expandingdelegates-example.png
+    \row
+    \o expandingdelegates.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-listview-highlight-example.png
+    \row
+    \o highlight.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-listview-highlightranges-example.png
+    \row
+    \o highlightranges.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-listview-sections-example.png
+    \row
+    \o sections.qml
+    \endtable
 */
 
 /*!
@@ -222,13 +322,17 @@
 
     This example shows how to create a C++ extension that exposes a
     QList<QObject*> as a model in QML.
+
+    \image qml-objectlistmodel-example.png
 */
 
 /*!
     \title Models and Views: Package
     \example declarative/modelviews/package
 
-    This example shows how to use the Package element.
+    This example shows how to use the \l Package element.
+
+    \image qml-package-example.png
 */
 
 /*!
@@ -236,6 +340,8 @@
     \example declarative/modelviews/parallax
 
     This example shows how to combine and switch between views.
+
+    \image qml-parallax-example.png
 */
 
 /*!
@@ -244,6 +350,8 @@
 
     This example shows how to create a C++ extension that exposes a
     QStringList as a model in QML.
+
+    \image qml-stringlistmodel-example.png
 */
 
 /*!
@@ -251,13 +359,50 @@
     \example declarative/modelviews/visualitemmodel
 
     This example shows how to use the VisualItemModel element.
+
+    \image qml-visualitemmodel-example.png
 */
 
 /*!
     \title Models and Views: WebView
     \example declarative/modelviews/webview
 
-    This example shows how to use the WebView element.
+    These examples shows how to use the WebView element.
+
+    \table
+    \row
+    \o \image qml-webview-alert-example.png
+    \row
+    \o alert.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-webview-autosize-example.png
+    \row
+    \o autosize.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-webview-googlemaps-example.png
+    \row
+    \o googlemaps.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-webview-inlinehtml-example.png
+    \row
+    \o inlinehtml.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-webview-newwindows-example.png
+    \row
+    \o newwindows.qml
+    \endtable
 */
 
 /*!
@@ -271,8 +416,46 @@
     \title Text: Fonts
     \example declarative/text/fonts
 
-    This example shows how to discover available fonts from QML and use
-    fonts in different ways.
+    These examples show how to discover available fonts from QML and manipulate
+    text in various ways.
+
+    \table
+    \row
+    \o \image qml-fonts-availableFonts-example.png
+    \row
+    \o availableFonts.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-fonts-banner-example.png
+    \row
+    \o banner.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-fonts-fonts-example.png
+    \row
+    \o fonts.qml
+    \endtable
+
+    \table
+    \row
+    \o \image qml-fonts-hello-example.png
+    \row
+    \o hello.qml
+    \endtable
+*/
+
+/*!
+    \title Text: Text Selection
+    \example declarative/text/textselection
+
+    This example shows how text selection, copy and paste operations
+    can be implemented on top of the TextEdit element.
+
+    \image qml-textselection-example.png
 */
 
 /*!
@@ -350,18 +533,22 @@
 */
 
 /*!
-    \title Touch Interaction: Mouse Area
+    \title Touch Interaction: MouseArea
     \example declarative/touchinteraction/mousearea
 
-    This example shows how to use the MouseArea element.
+    This example shows how to use the MouseArea element to access information
+    about mouse input.
+
+    \image qml-mousearea-example.png
 */
 
 /*!
     \title UI Components: Dial
     \example declarative/ui-components/dialcontrol
 
-    This example presents an interactive speedometer-type dial by combining
-    \l Image elements with \l Rotation transforms and \l SpringFollow animations.
+    This example shows how to create a dial-type control. It combines
+    \l Image elements with \l Rotation transforms and \l SpringFollow animations
+    to produce an interactive speedometer-type dial.
 
     \image qml-dialcontrol-example.png
 */
@@ -371,7 +558,7 @@
     \title UI Components: Flipable
     \example declarative/ui-components/flipable
 
-    This example shows how to use the Flipable element.
+    This example shows how to use the \l Flipable element.
 
     \image qml-flipable-example.png
 */
@@ -389,7 +576,7 @@
     \title UI Components: Scroll Bar
     \example declarative/ui-components/scrollbar
 
-    This example shows how to create scroll bars for a Flickable element
+    This example shows how to create scroll bars for a \l Flickable element
     using the \l {Flickable::visibleArea.xPosition}{Flickable::visibleArea}
     properties.
 
@@ -400,7 +587,8 @@
     \title UI Components: Search Box
     \example declarative/ui-components/searchbox
 
-    This example shows how to create a search box.
+    This example shows how to combine TextInput, FocusScope and BorderImage
+    elements to display multiple text input fields.
 
     \image qml-searchbox-example.png
 */
@@ -409,7 +597,7 @@
     \title UI Components: Slide Switch
     \example declarative/ui-components/slideswitch
 
-    This example shows how to create a slide switch.
+    This example shows how to create a slide switch control.
 
     \image qml-slideswitch-example.png
 */
@@ -418,7 +606,7 @@
     \title UI Components: Spinner
     \example declarative/ui-components/spinner
 
-    This example shows how to create a spinner-type component.
+    This example shows how to create a spinner-type component using the PathView element.
 
     \image qml-spinner-example.png
 */
@@ -436,5 +624,7 @@
     \title XML: XMLHttpRequest
     \example declarative/xml/xmlhttprequest
 
-    This example shows how to use \l XmlHttpRequest in QML.
+    This example shows how to use the \l XmlHttpRequest API in QML.
+
+    \image qml-xmlhttprequest-example.png
 */
diff --git a/doc/src/examples/qml-webbrowser.qdoc b/doc/src/examples/qml-webbrowser.qdoc
new file mode 100644
index 0000000..da6f600
--- /dev/null
+++ b/doc/src/examples/qml-webbrowser.qdoc
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+    \title Web Browser
+    \example demos/declarative/webbrowser
+
+    This demo shows how to write a simple web browser in QML by combining the
+    WebView element with other components including scroll bars, 
+    \l Flickable views and TextInput fields.
+
+    \image qml-webbrowser-demo.png
+*/
+
diff --git a/doc/src/images/declarative-folderlistmodel.png b/doc/src/images/declarative-folderlistmodel.png
index a469f96..fbed4f8 100644
Binary files a/doc/src/images/declarative-folderlistmodel.png and b/doc/src/images/declarative-folderlistmodel.png differ
diff --git a/doc/src/images/qml-behaviors-example.png b/doc/src/images/qml-behaviors-example.png
new file mode 100644
index 0000000..aee5c2b
Binary files /dev/null and b/doc/src/images/qml-behaviors-example.png differ
diff --git a/doc/src/images/qml-borderimage-example.png b/doc/src/images/qml-borderimage-example.png
new file mode 100644
index 0000000..7e488f2
Binary files /dev/null and b/doc/src/images/qml-borderimage-example.png differ
diff --git a/doc/src/images/qml-borderimage-shadows-example.png b/doc/src/images/qml-borderimage-shadows-example.png
new file mode 100644
index 0000000..4700868
Binary files /dev/null and b/doc/src/images/qml-borderimage-shadows-example.png differ
diff --git a/doc/src/images/qml-calculator-example.png b/doc/src/images/qml-calculator-example.png
index 19ce1b6..0f9ced8 100644
Binary files a/doc/src/images/qml-calculator-example.png and b/doc/src/images/qml-calculator-example.png differ
diff --git a/doc/src/images/qml-coloranim-example.png b/doc/src/images/qml-coloranim-example.png
new file mode 100644
index 0000000..12edc99
Binary files /dev/null and b/doc/src/images/qml-coloranim-example.png differ
diff --git a/doc/src/images/qml-dynamicscene-example.png b/doc/src/images/qml-dynamicscene-example.png
index 1f725d1..4179ebe 100644
Binary files a/doc/src/images/qml-dynamicscene-example.png and b/doc/src/images/qml-dynamicscene-example.png differ
diff --git a/doc/src/images/qml-easing-example.png b/doc/src/images/qml-easing-example.png
new file mode 100644
index 0000000..fef5b70
Binary files /dev/null and b/doc/src/images/qml-easing-example.png differ
diff --git a/doc/src/images/qml-focus-example.png b/doc/src/images/qml-focus-example.png
index 5a114a0..0ec2bff 100644
Binary files a/doc/src/images/qml-focus-example.png and b/doc/src/images/qml-focus-example.png differ
diff --git a/doc/src/images/qml-fonts-availableFonts-example.png b/doc/src/images/qml-fonts-availableFonts-example.png
new file mode 100644
index 0000000..4d8440c
Binary files /dev/null and b/doc/src/images/qml-fonts-availableFonts-example.png differ
diff --git a/doc/src/images/qml-fonts-banner-example.png b/doc/src/images/qml-fonts-banner-example.png
new file mode 100644
index 0000000..b415161
Binary files /dev/null and b/doc/src/images/qml-fonts-banner-example.png differ
diff --git a/doc/src/images/qml-fonts-fonts-example.png b/doc/src/images/qml-fonts-fonts-example.png
new file mode 100644
index 0000000..4481397
Binary files /dev/null and b/doc/src/images/qml-fonts-fonts-example.png differ
diff --git a/doc/src/images/qml-fonts-hello-example.png b/doc/src/images/qml-fonts-hello-example.png
new file mode 100644
index 0000000..18da867
Binary files /dev/null and b/doc/src/images/qml-fonts-hello-example.png differ
diff --git a/doc/src/images/qml-gridview-example.png b/doc/src/images/qml-gridview-example.png
new file mode 100644
index 0000000..8a092b5
Binary files /dev/null and b/doc/src/images/qml-gridview-example.png differ
diff --git a/doc/src/images/qml-i18n-example.png b/doc/src/images/qml-i18n-example.png
new file mode 100644
index 0000000..8e734ea
Binary files /dev/null and b/doc/src/images/qml-i18n-example.png differ
diff --git a/doc/src/images/qml-layoutitem-example.png b/doc/src/images/qml-layoutitem-example.png
new file mode 100644
index 0000000..b3c778a
Binary files /dev/null and b/doc/src/images/qml-layoutitem-example.png differ
diff --git a/doc/src/images/qml-listview-dynamiclist-example.png b/doc/src/images/qml-listview-dynamiclist-example.png
new file mode 100644
index 0000000..6acc3d9
Binary files /dev/null and b/doc/src/images/qml-listview-dynamiclist-example.png differ
diff --git a/doc/src/images/qml-listview-expandingdelegates-example.png b/doc/src/images/qml-listview-expandingdelegates-example.png
new file mode 100644
index 0000000..e7ffc33
Binary files /dev/null and b/doc/src/images/qml-listview-expandingdelegates-example.png differ
diff --git a/doc/src/images/qml-listview-highlight-example.png b/doc/src/images/qml-listview-highlight-example.png
new file mode 100644
index 0000000..4f95c13
Binary files /dev/null and b/doc/src/images/qml-listview-highlight-example.png differ
diff --git a/doc/src/images/qml-listview-highlightranges-example.png b/doc/src/images/qml-listview-highlightranges-example.png
new file mode 100644
index 0000000..f499caa
Binary files /dev/null and b/doc/src/images/qml-listview-highlightranges-example.png differ
diff --git a/doc/src/images/qml-mousearea-example.png b/doc/src/images/qml-mousearea-example.png
new file mode 100644
index 0000000..c6e52d6
Binary files /dev/null and b/doc/src/images/qml-mousearea-example.png differ
diff --git a/doc/src/images/qml-objectlistmodel-example.png b/doc/src/images/qml-objectlistmodel-example.png
new file mode 100644
index 0000000..c0fc490
Binary files /dev/null and b/doc/src/images/qml-objectlistmodel-example.png differ
diff --git a/doc/src/images/qml-package-example.png b/doc/src/images/qml-package-example.png
new file mode 100644
index 0000000..f7749aa
Binary files /dev/null and b/doc/src/images/qml-package-example.png differ
diff --git a/doc/src/images/qml-parallax-example.png b/doc/src/images/qml-parallax-example.png
new file mode 100644
index 0000000..2df52ed
Binary files /dev/null and b/doc/src/images/qml-parallax-example.png differ
diff --git a/doc/src/images/qml-plugins-example.png b/doc/src/images/qml-plugins-example.png
new file mode 100644
index 0000000..c2d4886
Binary files /dev/null and b/doc/src/images/qml-plugins-example.png differ
diff --git a/doc/src/images/qml-positioners-example.png b/doc/src/images/qml-positioners-example.png
new file mode 100644
index 0000000..721c1b3
Binary files /dev/null and b/doc/src/images/qml-positioners-example.png differ
diff --git a/doc/src/images/qml-propertyanim-example.png b/doc/src/images/qml-propertyanim-example.png
new file mode 100644
index 0000000..46efc64
Binary files /dev/null and b/doc/src/images/qml-propertyanim-example.png differ
diff --git a/doc/src/images/qml-qgraphicsgridlayout-example.png b/doc/src/images/qml-qgraphicsgridlayout-example.png
new file mode 100644
index 0000000..1a3bd47
Binary files /dev/null and b/doc/src/images/qml-qgraphicsgridlayout-example.png differ
diff --git a/doc/src/images/qml-qgraphicslinearlayout-example.png b/doc/src/images/qml-qgraphicslinearlayout-example.png
new file mode 100644
index 0000000..3964f5b
Binary files /dev/null and b/doc/src/images/qml-qgraphicslinearlayout-example.png differ
diff --git a/doc/src/images/qml-qwidgets-example.png b/doc/src/images/qml-qwidgets-example.png
new file mode 100644
index 0000000..262b3df
Binary files /dev/null and b/doc/src/images/qml-qwidgets-example.png differ
diff --git a/doc/src/images/qml-rssnews-demo.png b/doc/src/images/qml-rssnews-demo.png
index 948ef4d..b4143b4 100644
Binary files a/doc/src/images/qml-rssnews-demo.png and b/doc/src/images/qml-rssnews-demo.png differ
diff --git a/doc/src/images/qml-samegame-demo.png b/doc/src/images/qml-samegame-demo.png
index c17b4e0..945f2b9 100644
Binary files a/doc/src/images/qml-samegame-demo.png and b/doc/src/images/qml-samegame-demo.png differ
diff --git a/doc/src/images/qml-scrollbar-example.png b/doc/src/images/qml-scrollbar-example.png
new file mode 100644
index 0000000..4cf7c2c
Binary files /dev/null and b/doc/src/images/qml-scrollbar-example.png differ
diff --git a/doc/src/images/qml-states-example.png b/doc/src/images/qml-states-example.png
new file mode 100644
index 0000000..30514ec
Binary files /dev/null and b/doc/src/images/qml-states-example.png differ
diff --git a/doc/src/images/qml-stringlistmodel-example.png b/doc/src/images/qml-stringlistmodel-example.png
new file mode 100644
index 0000000..c8c888b
Binary files /dev/null and b/doc/src/images/qml-stringlistmodel-example.png differ
diff --git a/doc/src/images/qml-tabwidget-example.png b/doc/src/images/qml-tabwidget-example.png
index 05887f3..847052d 100644
Binary files a/doc/src/images/qml-tabwidget-example.png and b/doc/src/images/qml-tabwidget-example.png differ
diff --git a/doc/src/images/qml-textselection-example.png b/doc/src/images/qml-textselection-example.png
new file mode 100644
index 0000000..284ef53
Binary files /dev/null and b/doc/src/images/qml-textselection-example.png differ
diff --git a/doc/src/images/qml-transitions-example.png b/doc/src/images/qml-transitions-example.png
new file mode 100644
index 0000000..8656bfe
Binary files /dev/null and b/doc/src/images/qml-transitions-example.png differ
diff --git a/doc/src/images/qml-tvtennis-example.png b/doc/src/images/qml-tvtennis-example.png
index ac2b527..1a38034 100644
Binary files a/doc/src/images/qml-tvtennis-example.png and b/doc/src/images/qml-tvtennis-example.png differ
diff --git a/doc/src/images/qml-visualitemmodel-example.png b/doc/src/images/qml-visualitemmodel-example.png
new file mode 100644
index 0000000..c716a59
Binary files /dev/null and b/doc/src/images/qml-visualitemmodel-example.png differ
diff --git a/doc/src/images/qml-webbrowser-demo.png b/doc/src/images/qml-webbrowser-demo.png
new file mode 100644
index 0000000..9ff471e
Binary files /dev/null and b/doc/src/images/qml-webbrowser-demo.png differ
diff --git a/doc/src/images/qml-webview-alert-example.png b/doc/src/images/qml-webview-alert-example.png
new file mode 100644
index 0000000..c1cddce
Binary files /dev/null and b/doc/src/images/qml-webview-alert-example.png differ
diff --git a/doc/src/images/qml-webview-autosize-example.png b/doc/src/images/qml-webview-autosize-example.png
new file mode 100644
index 0000000..5cec614
Binary files /dev/null and b/doc/src/images/qml-webview-autosize-example.png differ
diff --git a/doc/src/images/qml-webview-googlemaps-example.png b/doc/src/images/qml-webview-googlemaps-example.png
new file mode 100644
index 0000000..d6c77a1
Binary files /dev/null and b/doc/src/images/qml-webview-googlemaps-example.png differ
diff --git a/doc/src/images/qml-webview-inlinehtml-example.png b/doc/src/images/qml-webview-inlinehtml-example.png
new file mode 100644
index 0000000..426cf8a
Binary files /dev/null and b/doc/src/images/qml-webview-inlinehtml-example.png differ
diff --git a/doc/src/images/qml-webview-newwindows-example.png b/doc/src/images/qml-webview-newwindows-example.png
new file mode 100644
index 0000000..bd98b57
Binary files /dev/null and b/doc/src/images/qml-webview-newwindows-example.png differ
diff --git a/doc/src/images/qml-xmlhttprequest-example.png b/doc/src/images/qml-xmlhttprequest-example.png
new file mode 100644
index 0000000..68e7d27
Binary files /dev/null and b/doc/src/images/qml-xmlhttprequest-example.png differ
-- 
cgit v0.12