From 2d8dd892f5f58610ac98404f4bcc9f4bcdc2c65a Mon Sep 17 00:00:00 2001
From: Jason McDonald <jason.mcdonald@nokia.com>
Date: Sat, 14 Nov 2009 15:30:37 +1000
Subject: Update known issues.

Refer to new bug tracker and remove known issue for VS Integration (as
it has been replaced by the VS Add-in).

Reviewed-by: Trust Me
---
 doc/src/known-issues.qdoc | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/doc/src/known-issues.qdoc b/doc/src/known-issues.qdoc
index 313fa40..c56ae80 100644
--- a/doc/src/known-issues.qdoc
+++ b/doc/src/known-issues.qdoc
@@ -46,8 +46,7 @@
     \brief A summary of known issues in Qt %VERSION% at the time of release.
 
     An up-to-date list of known issues with Qt %VERSION% can be found via the
-    \l{Task Tracker} on the Qt website which provides additional information
-    about known issues and tasks related to Qt.
+    \l{http://bugreports.qt.nokia.com/}{Qt Bug Tracker}.
 
     \section1 General Issues
 
@@ -116,13 +115,6 @@
          }
         \endcode
 
-    \o  Under certain circumstances Visual Studio Integration v1.4.0 will not
-        be able to install the integration for Visual Studio 2005 on Windows
-        Vista. An error message states that .NET Framework v2.0 Service Pack 1
-        is not installed. This is due to a problem with the built-in
-        installation of this on Windows Vista. This issue can be fixed by
-        installing .NET Framework version 3.5.
-
     \o  With NVIDIA GeForce 7950 GT (driver version 6.14.11.7824), a fullscreen
         QGLWidget flickers when child widgets are shown/hidden. The workaround
         for this is to use \l{QWidget::}{setGeometry()} with a width/height 1
-- 
cgit v0.12


From a8daa8fc4e8a7508634a48c749ad574ab2f85772 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Mon, 16 Nov 2009 14:33:35 +0100
Subject: fix baseline for "backslashes"

this is a windows-only test, so it never failed for the "usual suspects"
...
---
 .../auto/linguist/lupdate/testdata/good/backslashes/project.ts.result | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result
index be6b93c..d3a5fdf 100644
--- a/tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="1.1">
+<TS version="2.0">
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../src/main.cpp" line="54"/>
+        <location filename="../src/main.cpp" line="51"/>
         <source>QT_LAYOUT_DIRECTION</source>
         <comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
         <translation type="unfinished"></translation>
-- 
cgit v0.12


From ee0690cdf553b6cf22432488ea113209203fe1ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Thu, 26 Nov 2009 15:47:49 +0100
Subject: Fixed a crash in the GL engine when trying to draw invalid pixmaps.

Task-number: QTBUG-6226
Reviewed-by: Eskil
---
 src/gui/painting/qpainter.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 97f3dd4..d048d51 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5182,7 +5182,7 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm)
 
     Q_D(QPainter);
 
-    if (!d->engine)
+    if (!d->engine || pm.isNull())
         return;
 
 #ifndef QT_NO_DEBUG
-- 
cgit v0.12


From a539ce478800c3dacf8456d206e8fd6dc700ac5c Mon Sep 17 00:00:00 2001
From: Kent Hansen <khansen@trolltech.com>
Date: Fri, 5 Jun 2009 17:38:39 +0200
Subject: make signal handlers understand QVariant again

Also, issue a warning if a type is not known to the meta-type system.
Backport of 508c9cd681244a5ad566c12733aa70f5bd522b57

Task-number: QTBUG-5060
---
 src/script/qscriptextqobject.cpp                   | 21 +++++++++++++---
 .../qscriptextqobject/tst_qscriptextqobject.cpp    | 29 ++++++++++++++++++++++
 2 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/src/script/qscriptextqobject.cpp b/src/script/qscriptextqobject.cpp
index b3b9a548..4be6b72 100644
--- a/src/script/qscriptextqobject.cpp
+++ b/src/script/qscriptextqobject.cpp
@@ -1657,12 +1657,27 @@ void QScript::QObjectConnectionManager::execute(int slotIndex, void **argv)
         activation_data->m_members[i].object(nameId, i,
                                              QScriptValue::Undeletable
                                              | QScriptValue::SkipInEnumeration);
+        QScriptValueImpl actual;
         if (i < argc) {
-            int argType = QMetaType::type(parameterTypes.at(i));
-            activation_data->m_values[i] = eng->create(argType, argv[i + 1]);
+            void *arg = argv[i + 1];
+            QByteArray typeName = parameterTypes.at(i);
+            int argType = QMetaType::type(typeName);
+            if (!argType) {
+                if (typeName == "QVariant") {
+                    actual = eng->valueFromVariant(*reinterpret_cast<QVariant*>(arg));
+                } else {
+                    qWarning("QScriptEngine: Unable to handle unregistered datatype '%s' "
+                             "when invoking handler of signal %s::%s",
+                             typeName.constData(), meta->className(), method.signature());
+                    actual = eng->undefinedValue();
+                }
+            } else {
+                actual = eng->create(argType, arg);
+            }
         } else {
-            activation_data->m_values[i] = eng->undefinedValue();
+            actual = eng->undefinedValue();
         }
+        activation_data->m_values[i] = actual;
     }
 
     QScriptValueImpl senderObject;
diff --git a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
index 8768d0e..5816b94 100644
--- a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
+++ b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
@@ -326,6 +326,10 @@ public:
         { emit mySignalWithDefaultArg(arg); }
     void emitMySignalWithDefaultArg()
         { emit mySignalWithDefaultArg(); }
+    void emitMySignalWithVariantArg(const QVariant &arg)
+        { emit mySignalWithVariantArg(arg); }
+    void emitMySignalWithScriptEngineArg(QScriptEngine *arg)
+        { emit mySignalWithScriptEngineArg(arg); }
 
 public Q_SLOTS:
     void mySlot()
@@ -388,6 +392,8 @@ Q_SIGNALS:
     void myOtherOverloadedSignal(const QString &arg);
     void myOtherOverloadedSignal(int arg);
     void mySignalWithDefaultArg(int arg = 123);
+    void mySignalWithVariantArg(const QVariant &arg);
+    void mySignalWithScriptEngineArg(QScriptEngine *arg);
 
 protected:
     void connectNotify(const char *signal) {
@@ -1501,6 +1507,29 @@ void tst_QScriptExtQObject::connectAndDisconnect()
     m_myObject->emitMyOtherOverloadedSignal(123);
     QVERIFY(!m_engine->evaluate("gotSignal").toBoolean());
 
+    // signal with QVariant arg: argument conversion should work
+    m_myObject->clearConnectedSignal();
+    QVERIFY(m_engine->evaluate("myObject.mySignalWithVariantArg.connect(myHandler)").isUndefined());
+    QCOMPARE(m_myObject->connectedSignal().constData(), SIGNAL(mySignalWithVariantArg(QVariant)));
+    m_engine->evaluate("gotSignal = false");
+    m_myObject->emitMySignalWithVariantArg(123);
+    QCOMPARE(m_engine->evaluate("gotSignal").toBoolean(), true);
+    QCOMPARE(m_engine->evaluate("signalArgs.length").toNumber(), 1.0);
+    QCOMPARE(m_engine->evaluate("signalArgs[0]").toNumber(), 123.0);
+    QVERIFY(m_engine->evaluate("myObject.mySignalWithVariantArg.disconnect(myHandler)").isUndefined());
+
+    // signal with argument type that's unknown to the meta-type system
+    m_myObject->clearConnectedSignal();
+    QVERIFY(m_engine->evaluate("myObject.mySignalWithScriptEngineArg.connect(myHandler)").isUndefined());
+    QCOMPARE(m_myObject->connectedSignal().constData(), SIGNAL(mySignalWithScriptEngineArg(QScriptEngine*)));
+    m_engine->evaluate("gotSignal = false");
+    QTest::ignoreMessage(QtWarningMsg, "QScriptEngine: Unable to handle unregistered datatype 'QScriptEngine*' when invoking handler of signal MyQObject::mySignalWithScriptEngineArg(QScriptEngine*)");
+    m_myObject->emitMySignalWithScriptEngineArg(m_engine);
+    QCOMPARE(m_engine->evaluate("gotSignal").toBoolean(), true);
+    QCOMPARE(m_engine->evaluate("signalArgs.length").toNumber(), 1.0);
+    QVERIFY(m_engine->evaluate("signalArgs[0]").isUndefined());
+    QVERIFY(m_engine->evaluate("myObject.mySignalWithScriptEngineArg.disconnect(myHandler)").isUndefined());
+
     // connect(object, function)
     m_engine->evaluate("otherObject = { name:'foo' }");
     QVERIFY(m_engine->evaluate("myObject.mySignal.connect(otherObject, myHandler)").isUndefined());
-- 
cgit v0.12


From ce4522cb341340e98427d678664ea84761e3ca07 Mon Sep 17 00:00:00 2001
From: Thierry Bastian <thierry.bastian@nokia.com>
Date: Tue, 1 Dec 2009 15:32:43 +0100
Subject: Fixed a potential crash in QDockWidget

This happened when inserting the gap over a place holder item.

Task-number: QTBUG-6107
Reviewed-by: Gabi
---
 src/gui/widgets/qdockarealayout.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/gui/widgets/qdockarealayout.cpp b/src/gui/widgets/qdockarealayout.cpp
index 4970300..9422bdc 100644
--- a/src/gui/widgets/qdockarealayout.cpp
+++ b/src/gui/widgets/qdockarealayout.cpp
@@ -1167,7 +1167,8 @@ bool QDockAreaLayoutInfo::insertGap(QList<int> path, QLayoutItem *dockWidgetItem
 
             QDockAreaLayoutInfo *subinfo = item.subinfo;
             QLayoutItem *widgetItem = item.widgetItem;
-            QRect r = subinfo == 0 ? dockedGeometry(widgetItem->widget()) : subinfo->rect;
+            QPlaceHolderItem *placeHolderItem = item.placeHolderItem;
+            QRect r = subinfo == 0 ? widgetItem ? dockedGeometry(widgetItem->widget()) : placeHolderItem->topLevelRect : subinfo->rect;
 
             Qt::Orientation opposite = o == Qt::Horizontal ? Qt::Vertical : Qt::Horizontal;
 #ifdef QT_NO_TABBAR
@@ -1176,13 +1177,15 @@ bool QDockAreaLayoutInfo::insertGap(QList<int> path, QLayoutItem *dockWidgetItem
             QDockAreaLayoutInfo *new_info
                 = new QDockAreaLayoutInfo(sep, dockPos, opposite, tabBarShape, mainWindow);
 
+            //item become a new top-level
             item.subinfo = new_info;
             item.widgetItem = 0;
+            item.placeHolderItem = 0;
 
             QDockAreaLayoutItem new_item
                 = widgetItem == 0
                     ? QDockAreaLayoutItem(subinfo)
-                    : QDockAreaLayoutItem(widgetItem);
+                    : widgetItem ? QDockAreaLayoutItem(widgetItem) : QDockAreaLayoutItem(placeHolderItem);
             new_item.size = pick(opposite, r.size());
             new_item.pos = pick(opposite, r.topLeft());
             new_info->item_list.append(new_item);
-- 
cgit v0.12


From 517e50706b154254bb2b51f19b8678c6a8df2590 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Wed, 2 Dec 2009 14:35:09 +0100
Subject: Fix crash in QVector::reserve when reserving smaller size on a shared
 vector

This backport part of the commit 480b395bd652a4ac6e3f2

Task-number: QTBUG-6416
---
 src/corelib/tools/qvector.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index 6c78abb..2e88d6b 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -315,7 +315,7 @@ void QVector<T>::detach_helper()
 { realloc(d->size, d->alloc); }
 template <typename T>
 void QVector<T>::reserve(int asize)
-{ if (asize > d->alloc || d->ref != 1) realloc(d->size, asize); d->capacity = 1; }
+{ if (asize > d->alloc) realloc(d->size, asize); if (d->ref == 1) d->capacity = 1; }
 template <typename T>
 void QVector<T>::resize(int asize)
 { realloc(asize, (asize > d->alloc || (!d->capacity && asize < d->size && asize < (d->alloc >> 1))) ?
-- 
cgit v0.12