summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure49
-rw-r--r--doc/src/frameworks-technologies/activeqt.qdoc5
-rw-r--r--doc/src/modules.qdoc11
-rw-r--r--doc/src/snippets/declarative/flipable.qml37
-rw-r--r--examples/declarative/animations/property-animation.qml4
-rw-r--r--examples/declarative/behaviors/SideRect.qml (renamed from examples/declarative/behaviours/SideRect.qml)7
-rw-r--r--examples/declarative/behaviors/behavior-example.qml (renamed from examples/declarative/behaviours/behavior-example.qml)45
-rw-r--r--examples/declarative/clocks/clocks.qml7
-rw-r--r--examples/declarative/clocks/content/Clock.qml4
-rw-r--r--examples/declarative/declarative.pro2
-rw-r--r--examples/declarative/flipable/back.pngbin5048 -> 0 bytes
-rw-r--r--examples/declarative/flipable/content/5_heart.pngbin0 -> 3872 bytes
-rw-r--r--examples/declarative/flipable/content/9_club.pngbin0 -> 6135 bytes
-rw-r--r--examples/declarative/flipable/content/Card.qml38
-rw-r--r--examples/declarative/flipable/content/back.pngbin0 -> 1418 bytes
-rw-r--r--examples/declarative/flipable/flipable-example.qml40
-rw-r--r--examples/declarative/flipable/front.pngbin6431 -> 0 bytes
-rw-r--r--examples/declarative/webview/alerts.html5
-rw-r--r--examples/declarative/webview/alerts.qml58
-rw-r--r--imports/.gitignore5
-rw-r--r--imports/Qt/.gitignore2
-rw-r--r--src/3rdparty/phonon/mmf/abstractvideooutput.cpp8
-rw-r--r--src/3rdparty/phonon/mmf/abstractvideoplayer.cpp8
-rw-r--r--src/3rdparty/phonon/mmf/videooutput_dsa.cpp6
-rw-r--r--src/3rdparty/phonon/mmf/videoplayer_dsa.cpp25
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/ChangeLog28
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp47
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp132
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h120
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflipable.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp46
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea.cpp1
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp59
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp10
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicswidget.h2
-rw-r--r--src/gui/styles/qs60style.cpp2
-rw-r--r--src/gui/text/qfontengine_win.cpp2
-rw-r--r--src/gui/text/qfontengine_win_p.h2
-rw-r--r--src/imports/webkit/qdeclarativewebview.cpp8
-rw-r--r--src/openvg/qpaintengine_vg.cpp41
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml44
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp39
-rw-r--r--tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp2
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml20
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp36
-rw-r--r--tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml5
-rw-r--r--tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp26
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.0.png)bin1563 -> 1563 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.1.png)bin1570 -> 1570 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.2.png)bin1553 -> 1553 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.3.png)bin1563 -> 1563 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.4.png)bin1569 -> 1569 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.5.png)bin1569 -> 1569 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.6.png)bin1566 -> 1566 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.7.png)bin1566 -> 1566 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.8.png)bin1567 -> 1567 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.0.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.0.png)bin471 -> 471 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.1.png)bin474 -> 474 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.10.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.11.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.12.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.13.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.14.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.15.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.16.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.17.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.18.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.19.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.2.png)bin474 -> 474 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.20.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.21.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.22.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.3.png)bin474 -> 474 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.4.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.5.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.6.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.7.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.8.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.9.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/drag.qml)5
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativemouseregion/mouseregion.qml)11
-rw-r--r--tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp6
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp3
-rw-r--r--tests/auto/qsharedpointer/externaltests.cpp17
-rw-r--r--tests/auto/qsharedpointer/externaltests.h3
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp2
-rw-r--r--tools/linguist/linguist.pro2
-rw-r--r--tools/qml/main.cpp2
-rw-r--r--tools/qml/qdeclarativetester.cpp (renamed from tools/qml/qfxtester.cpp)8
-rw-r--r--tools/qml/qdeclarativetester.h (renamed from tools/qml/qfxtester.h)6
-rw-r--r--tools/qml/qml.pro4
-rw-r--r--tools/qml/qmlruntime.cpp2
103 files changed, 906 insertions, 239 deletions
diff --git a/configure b/configure
index 4ffc457..0dbf98f 100755
--- a/configure
+++ b/configure
@@ -173,6 +173,12 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+# detect the "echo without newline" style. usage: echo $ECHO_N "<string>$ECHO_C"
+if echo '\c' | grep '\c' >/dev/null; then
+ ECHO_N=-n
+else
+ ECHO_C='\c'
+fi
#-------------------------------------------------------------------------------
# window system detection
@@ -399,11 +405,7 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
else
if [ -z "$LicenseKeyExt" ]; then
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Please enter your license key: "
- else
- echo "Please enter your license key: \c"
- fi
+ echo $ECHO_N "Please enter your license key: $ECHO_C"
read LicenseKeyExt
Licensee="Unknown user"
fi
@@ -4064,11 +4066,7 @@ elif [ "$Edition" = "OpenSource" ]; then
echo "Type 'yes' to accept this license offer."
echo "Type 'no' to decline this license offer."
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Do you accept the terms of $affix license? "
- else
- echo "Do you accept the terms of $affix license? \c"
- fi
+ echo $ECHO_N "Do you accept the terms of $affix license? $ECHO_C"
read acceptance
fi
echo
@@ -4099,11 +4097,7 @@ elif [ "$Edition" = "Preview" ]; then
echo "Type 'yes' to accept this license offer."
echo "Type 'no' to decline this license offer."
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Do you accept the terms of the license? "
- else
- echo "Do you accept the terms of the license? \c"
- fi
+ echo $ECHO_N "Do you accept the terms of the license? $ECHO_C"
read acceptance
fi
echo
@@ -4189,11 +4183,7 @@ elif [ "$Edition" != "OpenSource" ]; then
echo "Type 'yes' to accept this license offer."
echo "Type 'no' to decline this license offer."
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Do you accept the terms of the $TheLicense? "
- else
- echo "Do you accept the terms of the $TheLicense? \c"
- fi
+ echo $ECHO_N "Do you accept the terms of the $TheLicense? $ECHO_C"
read acceptance
fi
echo
@@ -7653,11 +7643,7 @@ else
fi
if [ "$OPT_VERBOSE" = "yes" ]; then
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "qmake vars ............. "
- else
- echo "qmake vars ............. \c"
- fi
+ echo $ECHO_N "qmake vars .......... $ECHO_C"
cat "$QMAKE_VARS_FILE" | tr '\n' ' '
echo "qmake switches ......... $QMAKE_SWITCHES"
fi
@@ -8040,21 +8026,12 @@ for file in .projects .projects.3; do
continue;
fi
QMAKE_SPEC_ARGS="-spec $SPEC"
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n " for $a"
- else
- echo " for $a\c"
- fi
+ echo $ECHO_N " for $a$ECHO_C"
QMAKE="$outpath/bin/qmake"
QMAKE_ARGS="$QMAKE_SWITCHES $QMAKE_SPEC_ARGS"
if [ "$file" = ".projects.3" ]; then
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n " (fast)"
- else
- echo " (fast)\c"
- fi
- echo
+ echo " (fast)"
cat >"${OUTDIR}/Makefile" <<EOF
# ${OUTDIR}/Makefile: generated by configure
diff --git a/doc/src/frameworks-technologies/activeqt.qdoc b/doc/src/frameworks-technologies/activeqt.qdoc
index a79430d..b752122 100644
--- a/doc/src/frameworks-technologies/activeqt.qdoc
+++ b/doc/src/frameworks-technologies/activeqt.qdoc
@@ -70,7 +70,10 @@
controls.
\endlist
- The ActiveQt framework consists of two frameworks:
+ For more information about using ActiveX with Qt, see
+ \l{Building ActiveX servers and controls with Qt}.
+
+ The ActiveQt framework consists of two modules:
\list
\o The \l{Using ActiveX controls and COM objects in Qt}{QAxContainer}
diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc
index 76a52b4..b13861f 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.qdoc
@@ -493,6 +493,13 @@
\snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 1
+ \section1 Further Links
+
+ General overviews of XQuery and XSchema can be found in the
+ \l{Using XML Technologies} document.
+
+ An introduction to the XQuery language can be found in \l{A Short Path to XQuery}.
+
\section1 License Information
The XML Schema implementation provided by this module contains the \c xml.xsd file
@@ -810,6 +817,8 @@
\brief The QAxContainer module is a Windows-only extension for
accessing ActiveX controls and COM objects.
+ QAxServer is part of the \l{ActiveQt Framework}.
+
\section1 License Information
The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
@@ -860,6 +869,8 @@
\brief The QAxServer module is a Windows-only static library that
you can use to turn a standard Qt binary into a COM server.
+ QAxServer is part of the \l{ActiveQt Framework}.
+
\section1 License Information
The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
diff --git a/doc/src/snippets/declarative/flipable.qml b/doc/src/snippets/declarative/flipable.qml
new file mode 100644
index 0000000..c837ebc
--- /dev/null
+++ b/doc/src/snippets/declarative/flipable.qml
@@ -0,0 +1,37 @@
+//! [0]
+import Qt 4.6
+
+Flipable {
+ id: flipable
+ width: 240
+ height: 240
+
+ property int angle: 0
+ property bool flipped: false
+
+ front: Image { source: "front.png" }
+ back: Image { source: "back.png" }
+
+ transform: Rotation {
+ origin.x: flipable.width/2; origin.y: flipable.height/2
+ axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis
+ angle: flipable.angle
+ }
+
+ states: State {
+ name: "back"
+ PropertyChanges { target: flipable; angle: 180 }
+ when: flipable.flipped
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "angle"; duration: 1000 }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: flipable.flipped = !flipable.flipped
+ }
+}
+//! [0]
+
diff --git a/examples/declarative/animations/property-animation.qml b/examples/declarative/animations/property-animation.qml
index 401feb5..fd5eb3c 100644
--- a/examples/declarative/animations/property-animation.qml
+++ b/examples/declarative/animations/property-animation.qml
@@ -40,7 +40,7 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
source: "images/face-smile.png"; y: minHeight
- // Animate the y property. Setting repeat to true makes the
+ // Animate the y property. Setting loops to Animation.Infinite makes the
// animation repeat indefinitely, otherwise it would only run once.
SequentialAnimation on y {
loops: Animation.Infinite
@@ -50,7 +50,7 @@ Item {
from: smiley.minHeight; to: smiley.maxHeight
easing.type: "OutExpo"; duration: 300
}
-
+
// Then move back to minHeight in 1 second, using the OutBounce easing function
NumberAnimation {
from: smiley.maxHeight; to: smiley.minHeight
diff --git a/examples/declarative/behaviours/SideRect.qml b/examples/declarative/behaviors/SideRect.qml
index 63b7db2..7caac45 100644
--- a/examples/declarative/behaviours/SideRect.qml
+++ b/examples/declarative/behaviors/SideRect.qml
@@ -5,10 +5,9 @@ Rectangle {
property string text
- color: "black"
- width: 75; height: 50
- radius: 5
- border.width: 10; border.color: "white";
+ width: 75; height: 50; radius: 6
+ color: "#646464"; border.width: 4; border.color: "white"
+
MouseArea {
anchors.fill: parent
hoverEnabled: true
diff --git a/examples/declarative/behaviours/behavior-example.qml b/examples/declarative/behaviors/behavior-example.qml
index c84bf62..8da1ada 100644
--- a/examples/declarative/behaviours/behavior-example.qml
+++ b/examples/declarative/behaviors/behavior-example.qml
@@ -1,15 +1,14 @@
import Qt 4.6
Rectangle {
- color: "black"
- width: 400; height: 400
+ color: "#343434"
+ width: 600; height: 400
Rectangle {
- color: "transparent"
anchors.centerIn: parent
- width: 200; height: 200
- radius: 30
- border.width: 10; border.color: "white";
+ width: 200; height: 200; radius: 30
+ color: "transparent"; border.width: 4; border.color: "white"
+
SideRect {
id: leftRect
@@ -45,27 +44,35 @@ Rectangle {
property string text
- color: "red"
- width: 75; height: 50
- radius: 5
- border.width: 10; border.color: "white";
- x: 100-37; y: 100-25
- Behavior on x { NumberAnimation { duration: 300 } }
- Behavior on y { NumberAnimation { duration: 300 } }
+ color: "firebrick"
+ x: 62.5; y: 75; width: 75; height: 50
+ radius: 6; border.width: 4; border.color: "white"
+
+ // Setting an 'elastic' behavior on the focusRect's x property.
+ Behavior on x {
+ NumberAnimation { easing.type: "OutElastic"; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
+ }
+
+ // Setting an 'elastic' behavior on the focusRect's y property.
+ Behavior on y {
+ NumberAnimation { easing.type: "OutElastic"; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
+ }
+
Text {
id: focusText
- text: focusRect.text;
+ text: focusRect.text
+ anchors.centerIn: parent
+ color: "white"; font.pixelSize: 16; font.bold: true
+
+ // Setting 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 {}
+ PropertyAction { }
NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 }
}
}
- anchors.centerIn: parent;
- color: "white";
- font.pixelSize: 16
- font.bold: true
}
}
}
diff --git a/examples/declarative/clocks/clocks.qml b/examples/declarative/clocks/clocks.qml
index 624748a..c5aa1dc 100644
--- a/examples/declarative/clocks/clocks.qml
+++ b/examples/declarative/clocks/clocks.qml
@@ -2,12 +2,11 @@ import Qt 4.6
import "content"
Rectangle {
- width: childrenRect.width
- height: childrenRect.height
+ width: 640; height: 240
color: "#646464"
- Grid {
- columns: 3
+ Row {
+ anchors.centerIn: parent
Clock { city: "New York"; shift: -4 }
Clock { city: "Mumbai"; shift: 5.5 }
Clock { city: "Tokyo"; shift: 9 }
diff --git a/examples/declarative/clocks/content/Clock.qml b/examples/declarative/clocks/content/Clock.qml
index 75a1cf5..90c6be8 100644
--- a/examples/declarative/clocks/content/Clock.qml
+++ b/examples/declarative/clocks/content/Clock.qml
@@ -74,7 +74,7 @@ Item {
}
Text {
- id: cityLabel; font.bold: true; font.pixelSize: 14; y:200; color: "white"
- anchors.horizontalCenter: parent.horizontalCenter
+ id: cityLabel; font.bold: true; font.pixelSize: 14; y: 200; color: "white"
+ anchors.horizontalCenter: parent.horizontalCenter; style: Text.Raised; styleColor: "black"
}
}
diff --git a/examples/declarative/declarative.pro b/examples/declarative/declarative.pro
index 0f58738..5fc1cf0 100644
--- a/examples/declarative/declarative.pro
+++ b/examples/declarative/declarative.pro
@@ -12,7 +12,7 @@ SUBDIRS = \
sources.files = \
animations \
aspectratio \
- behaviours \
+ behaviors \
border-image \
clocks \
connections \
diff --git a/examples/declarative/flipable/back.png b/examples/declarative/flipable/back.png
deleted file mode 100644
index 0b4cafc..0000000
--- a/examples/declarative/flipable/back.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/flipable/content/5_heart.png b/examples/declarative/flipable/content/5_heart.png
new file mode 100644
index 0000000..fb59d81
--- /dev/null
+++ b/examples/declarative/flipable/content/5_heart.png
Binary files differ
diff --git a/examples/declarative/flipable/content/9_club.png b/examples/declarative/flipable/content/9_club.png
new file mode 100644
index 0000000..2545001
--- /dev/null
+++ b/examples/declarative/flipable/content/9_club.png
Binary files differ
diff --git a/examples/declarative/flipable/content/Card.qml b/examples/declarative/flipable/content/Card.qml
new file mode 100644
index 0000000..6b8fa69
--- /dev/null
+++ b/examples/declarative/flipable/content/Card.qml
@@ -0,0 +1,38 @@
+import Qt 4.6
+
+Flipable {
+ id: container
+
+ property alias image: frontImage.source
+ property bool flipped: true
+ property int xAxis: 0
+ property int yAxis: 0
+ property int angle: 0
+
+ width: front.width; height: front.height; state: "back"
+
+ front: Image { id: frontImage; smooth: true }
+ back: Image { source: "back.png"; smooth: true }
+
+ MouseArea { anchors.fill: parent; onClicked: container.flipped = !container.flipped }
+
+ transform: Rotation {
+ id: rotation; origin.x: container.width / 2; origin.y: container.height / 2
+ axis.x: container.xAxis; axis.y: container.yAxis; axis.z: 0
+ }
+
+ states: State {
+ name: "back"; when: container.flipped
+ PropertyChanges { target: rotation; angle: container.angle }
+ }
+
+ transitions: Transition {
+ ParallelAnimation {
+ NumberAnimation { target: rotation; properties: "angle"; duration: 600 }
+ SequentialAnimation {
+ NumberAnimation { target: container; property: "scale"; to: 0.75; duration: 300 }
+ NumberAnimation { target: container; property: "scale"; to: 1.0; duration: 300 }
+ }
+ }
+ }
+}
diff --git a/examples/declarative/flipable/content/back.png b/examples/declarative/flipable/content/back.png
new file mode 100644
index 0000000..f715d74
--- /dev/null
+++ b/examples/declarative/flipable/content/back.png
Binary files differ
diff --git a/examples/declarative/flipable/flipable-example.qml b/examples/declarative/flipable/flipable-example.qml
index c837ebc..eebc721 100644
--- a/examples/declarative/flipable/flipable-example.qml
+++ b/examples/declarative/flipable/flipable-example.qml
@@ -1,37 +1,13 @@
-//! [0]
import Qt 4.6
+import "content"
-Flipable {
- id: flipable
- width: 240
- height: 240
+Rectangle {
+ id: window; width: 480; height: 320
+ color: "darkgreen"
- property int angle: 0
- property bool flipped: false
-
- front: Image { source: "front.png" }
- back: Image { source: "back.png" }
-
- transform: Rotation {
- origin.x: flipable.width/2; origin.y: flipable.height/2
- axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis
- angle: flipable.angle
- }
-
- states: State {
- name: "back"
- PropertyChanges { target: flipable; angle: 180 }
- when: flipable.flipped
- }
-
- transitions: Transition {
- NumberAnimation { properties: "angle"; duration: 1000 }
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: flipable.flipped = !flipable.flipped
+ Row {
+ anchors.centerIn: parent; spacing: 30
+ Card { image: "content/9_club.png"; angle: 180; yAxis: 1 }
+ Card { image: "content/5_heart.png"; angle: 540; xAxis: 1 }
}
}
-//! [0]
-
diff --git a/examples/declarative/flipable/front.png b/examples/declarative/flipable/front.png
deleted file mode 100644
index 796b605..0000000
--- a/examples/declarative/flipable/front.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/webview/alerts.html b/examples/declarative/webview/alerts.html
new file mode 100644
index 0000000..82caddf
--- /dev/null
+++ b/examples/declarative/webview/alerts.html
@@ -0,0 +1,5 @@
+<html>
+<body onclick="alert('This is an alert')">
+<p>This is a web page. It fires an alert when clicked.
+</body>
+</html>
diff --git a/examples/declarative/webview/alerts.qml b/examples/declarative/webview/alerts.qml
new file mode 100644
index 0000000..ab2e860
--- /dev/null
+++ b/examples/declarative/webview/alerts.qml
@@ -0,0 +1,58 @@
+import Qt 4.6
+import org.webkit 1.0
+
+WebView {
+ id: webView
+ onAlert: popup.show(message)
+ width: 120
+ height: 150
+ url: "alerts.html"
+
+ Rectangle {
+ id: popup
+
+ color: "red"
+ border.color: "black"
+ border.width: 2
+ radius: 4
+
+ y: parent.height // off "screen"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: label.width+5
+ height: label.height+5
+
+ opacity: 0
+
+ function show(t) {
+ label.text = t
+ popup.state = "visible"
+ timer.start()
+ }
+ states: State {
+ name: "visible"
+ PropertyChanges { target: popup; opacity: 1 }
+ PropertyChanges { target: popup; y: (webView.height-popup.height)/2 }
+ }
+
+ transitions: [
+ Transition { from: ""; PropertyAnimation { properties: "opacity,y"; duration: 65 } },
+ Transition { from: "visible"; PropertyAnimation { properties: "opacity,y"; duration: 500 } }
+ ]
+
+ Timer {
+ id: timer
+ interval: 1000
+ onTriggered: popup.state = ""
+ }
+
+ Text {
+ id: label
+ anchors.centerIn: parent
+ color: "white"
+ font.pixelSize: 20
+ width: webView.width*0.75
+ wrap: true
+ horizontalAlignment: "AlignHCenter"
+ }
+ }
+}
diff --git a/imports/.gitignore b/imports/.gitignore
new file mode 100644
index 0000000..3b18f12
--- /dev/null
+++ b/imports/.gitignore
@@ -0,0 +1,5 @@
+*.dll
+*.dso
+*.so
+*.so.debug
+qmldir
diff --git a/imports/Qt/.gitignore b/imports/Qt/.gitignore
deleted file mode 100644
index bc54bd5..0000000
--- a/imports/Qt/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.dll
-*.dso
diff --git a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
index 3fe66fc..a8aabfd 100644
--- a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
+++ b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
@@ -28,6 +28,8 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include <QMoveEvent>
#include <QResizeEvent>
+#include <QApplication> // for QApplication::activeWindow
+
#include <coecntrl.h>
QT_BEGIN_NAMESPACE
@@ -162,6 +164,12 @@ void MMF::AbstractVideoOutput::dump() const
QScopedPointer<ObjectDump::QVisitor> visitor(new ObjectDump::QVisitor);
visitor->setPrefix("Phonon::MMF"); // to aid searchability of logs
ObjectDump::addDefaultAnnotators(*visitor);
+
+ if (QWidget *window = QApplication::activeWindow()) {
+ TRACE("Dumping from root window 0x%08x:", window);
+ ObjectDump::dumpTreeFromLeaf(*window, *visitor);
+ }
+
TRACE("Dumping tree from leaf 0x%08x:", this);
ObjectDump::dumpTreeFromLeaf(*this, *visitor);
diff --git a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp
index 8cb9db5..c2bcce0 100644
--- a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp
+++ b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp
@@ -193,11 +193,14 @@ qint64 MMF::AbstractVideoPlayer::totalTime() const
void MMF::AbstractVideoPlayer::videoWindowChanged()
{
- TRACE_CONTEXT(AbstractVideoPlayer::videoOutputRegionChanged, EVideoInternal);
+ TRACE_CONTEXT(AbstractVideoPlayer::videoWindowChanged, EVideoInternal);
TRACE_ENTRY("state %d", state());
m_window = m_videoOutput ? m_videoOutput->videoWindow() : 0;
+ if (m_videoOutput)
+ m_videoOutput->dump();
+
handleVideoWindowChanged();
TRACE_EXIT_0();
@@ -253,6 +256,9 @@ void MMF::AbstractVideoPlayer::MvpuoPrepareComplete(TInt aError)
TRAPD(err, getVideoClipParametersL(aError));
if (KErrNone == err) {
+ if (m_videoOutput)
+ m_videoOutput->dump();
+
maxVolumeChanged(m_player->MaxVolume());
if (m_videoOutput)
diff --git a/src/3rdparty/phonon/mmf/videooutput_dsa.cpp b/src/3rdparty/phonon/mmf/videooutput_dsa.cpp
index a5e2ac8..4f9ad7f 100644
--- a/src/3rdparty/phonon/mmf/videooutput_dsa.cpp
+++ b/src/3rdparty/phonon/mmf/videooutput_dsa.cpp
@@ -101,11 +101,17 @@ void MMF::DsaVideoOutput::ancestorMoved()
void MMF::DsaVideoOutput::beginNativePaintEvent(const QRect & /*controlRect*/)
{
+ TRACE_CONTEXT(DsaVideoOutput::beginNativePaintEvent, EVideoInternal);
+ TRACE_ENTRY_0();
+
emit beginVideoWindowNativePaint();
}
void MMF::DsaVideoOutput::endNativePaintEvent(const QRect & /*controlRect*/)
{
+ TRACE_CONTEXT(DsaVideoOutput::endNativePaintEvent, EVideoInternal);
+ TRACE_ENTRY_0();
+
// Ensure that draw ops are executed into the WSERV output framebuffer
CCoeEnv::Static()->WsSession().Flush();
diff --git a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
index 732d2d9..226d079 100644
--- a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
+++ b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
@@ -190,6 +190,9 @@ public:
void getDsaRegion(RWsSession &session, const RWindowBase &window)
{
+ // Dump complete window tree
+ session.LogCommand(RWsSession::ELoggingStatusDump);
+
RDirectScreenAccess dsa(session);
TInt err = dsa.Construct();
CDummyAO ao;
@@ -214,7 +217,7 @@ void getDsaRegion(RWsSession &session, const RWindowBase &window)
void MMF::DsaVideoPlayer::handleParametersChanged(VideoParameters parameters)
{
TRACE_CONTEXT(DsaVideoPlayer::handleParametersChanged, EVideoInternal);
- TRACE_ENTRY_0();
+ TRACE_ENTRY("parameters 0x%x", parameters);
if (!m_window)
return;
@@ -265,17 +268,32 @@ void MMF::DsaVideoPlayer::handleParametersChanged(VideoParameters parameters)
void MMF::DsaVideoPlayer::startDirectScreenAccess()
{
+ TRACE_CONTEXT(DsaVideoPlayer::startDirectScreenAccess, EVideoInternal);
+ TRACE_ENTRY("dsaActive %d", m_dsaActive);
+
+ int err = KErrNone;
+
if (!m_dsaActive) {
- TRAPD(err, m_player->StartDirectScreenAccessL());
+ TRAP(err, m_player->StartDirectScreenAccessL());
if (KErrNone == err)
m_dsaActive = true;
else
setError(tr("Video display error"), err);
}
+
+ if (m_videoOutput)
+ m_videoOutput->dump();
+
+ TRACE_EXIT("error %d", err);
}
bool MMF::DsaVideoPlayer::stopDirectScreenAccess()
{
+ TRACE_CONTEXT(DsaVideoPlayer::stopDirectScreenAccess, EVideoInternal);
+ TRACE_ENTRY("dsaActive %d", m_dsaActive);
+
+ int err = KErrNone;
+
const bool dsaWasActive = m_dsaActive;
if (m_dsaActive) {
TRAPD(err, m_player->StopDirectScreenAccessL());
@@ -284,6 +302,9 @@ bool MMF::DsaVideoPlayer::stopDirectScreenAccess()
else
setError(tr("Video display error"), err);
}
+
+ TRACE_EXIT("error %d", err);
+
return dsaWasActive;
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
index 6446773..8932b3b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
@@ -1,3 +1,31 @@
+2010-03-22 Siddharth Mathur <siddharth.mathur@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Symbian] More efficient aligned memory allocation for JSC Collector
+ https://bugs.webkit.org/show_bug.cgi?id=34350
+
+ * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage
+
+ * runtime/Collector.cpp: Reduced port-specific code and added private data member
+ (JSC::Heap::Heap):
+ (JSC::Heap::~Heap):
+ (JSC::Heap::destroy):
+ (JSC::Heap::allocateBlock):
+ (JSC::Heap::freeBlockPtr):
+
+ * runtime/Collector.h: Added private data member
+
+ * wtf/symbian: Added.
+ * wtf/symbian/BlockAllocatorSymbian.cpp: Added.
+ (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate
+ aligned blocks more efficiently as required by Collector
+ (WTF::AlignedBlockAllocator::alloc):
+ (WTF::AlignedBlockAllocator::free):
+ (WTF::AlignedBlockAllocator::destroy):
+ (WTF::AlignedBlockAllocator::~AlignedBlockAllocator):
+ * wtf/symbian/BlockAllocatorSymbian.h: Added.
+
2010-02-09 Janne Koskinen <janne.p.koskinen@digia.com>
Reviewed by Laszlo Gombos.
diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
index bb531e5..a0f9f8e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
+++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
@@ -9,6 +9,10 @@ CONFIG(debug, debug|release) {
OBJECTS_DIR = obj/release
}
+symbian {
+ LIBS += -lhal
+}
+
INCLUDEPATH = \
$$PWD \
$$PWD/.. \
@@ -23,6 +27,7 @@ INCLUDEPATH = \
$$PWD/runtime \
$$PWD/wrec \
$$PWD/wtf \
+ $$PWD/wtf/symbian \
$$PWD/wtf/unicode \
$$PWD/yarr \
$$PWD/API \
@@ -243,6 +248,7 @@ SOURCES += \
profiler/TreeProfile.cpp \
wtf/DateMath.cpp \
wtf/FastMalloc.cpp \
+ wtf/symbian/BlockAllocatorSymbian.cpp \
wtf/Threading.cpp \
wtf/qt/MainThreadQt.cpp
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
index 8b647a0..6626182 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
@@ -52,11 +52,6 @@
#include <mach/thread_act.h>
#include <mach/vm_map.h>
-#elif PLATFORM(SYMBIAN)
-#include <e32std.h>
-#include <e32cmn.h>
-#include <unistd.h>
-
#elif PLATFORM(WIN_OS)
#include <windows.h>
@@ -124,11 +119,6 @@ const size_t ALLOCATIONS_PER_COLLECTION = 4000;
// a PIC branch in Mach-O binaries, see <rdar://problem/5971391>.
#define MIN_ARRAY_SIZE (static_cast<size_t>(14))
-#if PLATFORM(SYMBIAN)
-const size_t MAX_NUM_BLOCKS = 256; // Max size of collector heap set to 16 MB
-static RHeap* userChunk = 0;
-#endif
-
#if ENABLE(JSC_MULTIPLE_THREADS)
#if PLATFORM(DARWIN)
@@ -165,29 +155,11 @@ Heap::Heap(JSGlobalData* globalData)
, m_currentThreadRegistrar(0)
#endif
, m_globalData(globalData)
+#if PLATFORM(SYMBIAN)
+ , m_blockallocator(JSCCOLLECTOR_VIRTUALMEM_RESERVATION, BLOCK_SIZE)
+#endif
{
ASSERT(globalData);
-
-#if PLATFORM(SYMBIAN)
- // Symbian OpenC supports mmap but currently not the MAP_ANON flag.
- // Using fastMalloc() does not properly align blocks on 64k boundaries
- // and previous implementation was flawed/incomplete.
- // UserHeap::ChunkHeap allows allocation of continuous memory and specification
- // of alignment value for (symbian) cells within that heap.
- //
- // Clarification and mapping of terminology:
- // RHeap (created by UserHeap::ChunkHeap below) is continuos memory chunk,
- // which can dynamically grow up to 8 MB,
- // that holds all CollectorBlocks of this session (static).
- // Each symbian cell within RHeap maps to a 64kb aligned CollectorBlock.
- // JSCell objects are maintained as usual within CollectorBlocks.
- if (!userChunk) {
- userChunk = UserHeap::ChunkHeap(0, 0, MAX_NUM_BLOCKS * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE);
- if (!userChunk)
- CRASH();
- }
-#endif // PLATFORM(SYMBIAN)
-
memset(&primaryHeap, 0, sizeof(CollectorHeap));
memset(&numberHeap, 0, sizeof(CollectorHeap));
}
@@ -233,7 +205,9 @@ void Heap::destroy()
t = next;
}
#endif
-
+#if PLATFORM(SYMBIAN)
+ m_blockallocator.destroy();
+#endif
m_globalData = 0;
}
@@ -247,12 +221,9 @@ NEVER_INLINE CollectorBlock* Heap::allocateBlock()
// FIXME: tag the region as a JavaScriptCore heap when we get a registered VM tag: <rdar://problem/6054788>.
vm_map(current_task(), &address, BLOCK_SIZE, BLOCK_OFFSET_MASK, VM_FLAGS_ANYWHERE | VM_TAG_FOR_COLLECTOR_MEMORY, MEMORY_OBJECT_NULL, 0, FALSE, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_DEFAULT);
#elif PLATFORM(SYMBIAN)
- // Allocate a 64 kb aligned CollectorBlock
- unsigned char* mask = reinterpret_cast<unsigned char*>(userChunk->Alloc(BLOCK_SIZE));
- if (!mask)
+ void* address = m_blockallocator.alloc();
+ if (!address)
CRASH();
- uintptr_t address = reinterpret_cast<uintptr_t>(mask);
-
memset(reinterpret_cast<void*>(address), 0, BLOCK_SIZE);
#elif PLATFORM(WINCE)
void* address = VirtualAlloc(NULL, BLOCK_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
@@ -339,7 +310,7 @@ NEVER_INLINE void Heap::freeBlock(CollectorBlock* block)
#if PLATFORM(DARWIN) && !PLATFORM(QT)
vm_deallocate(current_task(), reinterpret_cast<vm_address_t>(block), BLOCK_SIZE);
#elif PLATFORM(SYMBIAN)
- userChunk->Free(reinterpret_cast<TAny*>(block));
+ m_blockallocator.free(reinterpret_cast<void*>(block));
#elif PLATFORM(WINCE)
VirtualFree(block, 0, MEM_RELEASE);
#elif PLATFORM(WIN_OS)
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
index 9ca9d18..086e519 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
@@ -35,6 +35,10 @@
#include <pthread.h>
#endif
+#if PLATFORM(SYMBIAN)
+#include <wtf/symbian/BlockAllocatorSymbian.h>
+#endif
+
#define ASSERT_CLASS_FITS_IN_CELL(class) COMPILE_ASSERT(sizeof(class) <= CELL_SIZE, class_fits_in_cell)
namespace JSC {
@@ -157,6 +161,11 @@ namespace JSC {
pthread_key_t m_currentThreadRegistrar;
#endif
+#if PLATFORM(SYMBIAN)
+ // Allocates collector blocks with correct alignment
+ WTF::AlignedBlockAllocator m_blockallocator;
+#endif
+
JSGlobalData* m_globalData;
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp
new file mode 100644
index 0000000..cc8fd15
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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.
+ */
+
+#include "config.h"
+
+#if PLATFORM(SYMBIAN)
+
+#include "BlockAllocatorSymbian.h"
+
+
+namespace WTF {
+
+/** Efficiently allocates blocks of size blockSize with blockSize alignment.
+ * Primarly designed for JSC Collector's needs.
+ * Not thread-safe.
+ */
+AlignedBlockAllocator::AlignedBlockAllocator(TUint32 reservationSize, TUint32 blockSize )
+ : m_reservation(reservationSize),
+ m_blockSize(blockSize)
+{
+
+ // Get system's page size value.
+ SYMBIAN_PAGESIZE(m_pageSize);
+
+ // We only accept multiples of system page size for both initial reservation and the alignment/block size
+ m_reservation = SYMBIAN_ROUNDUPTOMULTIPLE(m_reservation, m_pageSize);
+ __ASSERT_ALWAYS(SYMBIAN_ROUNDUPTOMULTIPLE(m_blockSize, m_pageSize), User::Panic(_L("AlignedBlockAllocator1"), KErrArgument));
+
+ // Calculate max. bit flags we need to carve a reservationSize range into blockSize-sized blocks
+ m_map.numBits = m_reservation / m_blockSize;
+ const TUint32 bitsPerWord = 8*sizeof(TUint32);
+ const TUint32 numWords = (m_map.numBits + bitsPerWord -1) / bitsPerWord;
+
+ m_map.bits = new TUint32[numWords];
+ __ASSERT_ALWAYS(m_map.bits, User::Panic(_L("AlignedBlockAllocator2"), KErrNoMemory));
+ m_map.clearAll();
+
+ // Open a Symbian RChunk, and reserve requested virtual address range
+ // Any thread in this process can operate this rchunk due to EOwnerProcess access rights.
+ TInt ret = m_chunk.CreateDisconnectedLocal(0 , 0, (TInt)m_reservation , EOwnerProcess);
+ if (ret != KErrNone)
+ User::Panic(_L("AlignedBlockAllocator3"), ret);
+
+ // This is the offset to m_chunk.Base() required to make it m_blockSize-aligned
+ m_offset = SYMBIAN_ROUNDUPTOMULTIPLE(TUint32(m_chunk.Base()), m_blockSize) - TUint(m_chunk.Base());
+
+}
+
+void* AlignedBlockAllocator::alloc()
+{
+
+ TInt freeRam = 0;
+ void* address = 0;
+
+ // Look up first free slot in bit map
+ const TInt freeIdx = m_map.findFree();
+
+ // Pseudo OOM: We ate up the address space we reserved..
+ // ..even though the device may have free RAM left
+ if (freeIdx < 0)
+ return 0;
+
+ TInt ret = m_chunk.Commit(m_offset + (m_blockSize * freeIdx), m_blockSize);
+ if (ret != KErrNone)
+ return 0; // True OOM: Device didn't have physical RAM to spare
+
+ // Updated bit to mark region as in use.
+ m_map.set(freeIdx);
+
+ // Calculate address of committed region (block)
+ address = (void*)( (m_chunk.Base() + m_offset) + (TUint)(m_blockSize * freeIdx) );
+
+ return address;
+}
+
+void AlignedBlockAllocator::free(void* block)
+{
+ // Calculate index of block to be freed
+ TInt idx = TUint(static_cast<TUint8*>(block) - m_chunk.Base() - m_offset) / m_blockSize;
+
+ __ASSERT_DEBUG(idx >= 0 && idx < m_map.numBits, User::Panic(_L("AlignedBlockAllocator4"), KErrCorrupt)); // valid index check
+ __ASSERT_DEBUG(m_map.get(idx), User::Panic(_L("AlignedBlockAllocator5"), KErrCorrupt)); // in-use flag check
+
+ // Return committed region to system RAM pool (the physical RAM becomes usable by others)
+ TInt ret = m_chunk.Decommit(m_offset + m_blockSize * idx, m_blockSize);
+
+ // mark this available again
+ m_map.clear(idx);
+}
+
+void AlignedBlockAllocator::destroy()
+{
+ // release everything!
+ m_chunk.Decommit(0, m_chunk.MaxSize());
+ m_map.clearAll();
+}
+
+AlignedBlockAllocator::~AlignedBlockAllocator()
+{
+ destroy();
+ m_chunk.Close();
+ delete [] m_map.bits;
+}
+
+} // end of namespace
+
+#endif // SYMBIAN
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h
new file mode 100644
index 0000000..21422f6
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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.
+ */
+
+#ifndef BlockAllocatorSymbian_h
+#define BlockAllocatorSymbian_h
+
+#include <e32cmn.h>
+#include <e32std.h>
+#include <hal.h>
+
+
+#define SYMBIAN_PAGESIZE(x) (HAL::Get(HALData::EMemoryPageSize, x));
+#define SYMBIAN_FREERAM(x) (HAL::Get(HALData::EMemoryRAMFree, x));
+#define SYMBIAN_ROUNDUPTOMULTIPLE(x, multipleof) ( (x + multipleof - 1) & ~(multipleof - 1) )
+
+// Set sane defaults if -D<flagname=value> wasn't provided via compiler args
+#ifndef JSCCOLLECTOR_VIRTUALMEM_RESERVATION
+#if defined(__WINS__)
+ // Emulator has limited virtual address space
+ #define JSCCOLLECTOR_VIRTUALMEM_RESERVATION (4*1024*1024)
+#else
+ // HW has plenty of virtual addresses
+ #define JSCCOLLECTOR_VIRTUALMEM_RESERVATION (128*1024*1024)
+#endif
+#endif
+
+namespace WTF {
+
+/**
+ * Allocates contiguous region of size blockSize with blockSize-aligned address.
+ * blockSize must be a multiple of system page size (typically 4K on Symbian/ARM)
+ *
+ * @param reservationSize Virtual address range to be reserved upon creation of chunk (bytes).
+ * @param blockSize Size of a single allocation. Returned address will also be blockSize-aligned.
+ */
+class AlignedBlockAllocator {
+ public:
+ AlignedBlockAllocator(TUint32 reservationSize, TUint32 blockSize);
+ ~AlignedBlockAllocator();
+ void destroy();
+ void* alloc();
+ void free(void* data);
+
+ private:
+ RChunk m_chunk; // Symbian chunk that lets us reserve/commit/decommit
+ TUint m_offset; // offset of first committed region from base
+ TInt m_pageSize; // cached value of system page size, typically 4K on Symbian
+ TUint32 m_reservation;
+ TUint32 m_blockSize;
+
+ // Tracks comitted/decommitted state of a blockSize region
+ struct {
+
+ TUint32 *bits; // array of bit flags
+ TUint32 numBits; // number of regions to keep track of
+
+ bool get(TUint32 n) const
+ {
+ return !!(bits[n >> 5] & (1 << (n & 0x1F)));
+ }
+
+ void set(TUint32 n)
+ {
+ bits[n >> 5] |= (1 << (n & 0x1F));
+ }
+
+ void clear(TUint32 n)
+ {
+ bits[n >> 5] &= ~(1 << (n & 0x1F));
+ }
+
+ void clearAll()
+ {
+ for (TUint32 i = 0; i < numBits; i++)
+ clear(i);
+ }
+
+ TInt findFree() const
+ {
+ for (TUint32 i = 0; i < numBits; i++) {
+ if (!get(i))
+ return i;
+ }
+ return -1;
+ }
+
+ } m_map;
+
+};
+
+}
+
+#endif // end of BlockAllocatorSymbian_h
+
+
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index a8889b3..4de7ad8 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
- e9151b11e974f0aa47fd40c225f88f35ced91496
+ ecfa4583e573ce4dff1f0df12f6bdba3022376e5
diff --git a/src/declarative/graphicsitems/qdeclarativeflipable.cpp b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
index e670d3e..ccefc70 100644
--- a/src/declarative/graphicsitems/qdeclarativeflipable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
@@ -75,7 +75,7 @@ public:
Here is a Flipable that flips whenever it is clicked:
- \snippet examples/declarative/flipable/flipable-example.qml 0
+ \snippet doc/src/snippets/declarative/flipable.qml 0
\image flipable.gif
diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp
index 12ede34..30f04f6 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp
@@ -815,7 +815,7 @@ void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
if (snapMode != QDeclarativeGridView::SnapToRow && highlightRange != QDeclarativeGridView::StrictlyEnforceRange)
data.flickTarget = maxExtent;
}
- if ((maxDistance > 0 || overShoot) && (snapMode != QDeclarativeGridView::NoSnap || highlightRange == QDeclarativeGridView::StrictlyEnforceRange)) {
+ if (maxDistance > 0 || overShoot) {
// This mode requires the grid to stop exactly on a row boundary.
qreal v = velocity;
if (maxVelocity != -1 && maxVelocity < qAbs(v)) {
@@ -1856,6 +1856,8 @@ void QDeclarativeGridView::itemsInserted(int modelIndex, int count)
if (d->currentItem)
d->currentItem->index = d->currentIndex;
emit currentIndexChanged();
+ } else if (d->currentIndex < 0) {
+ d->updateCurrent(0);
}
emit countChanged();
return;
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 23a2350..3145c43 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp
@@ -275,6 +275,10 @@ qreal QDeclarativeImage::paintedHeight() const
used by a loaded image. The image will be scaled down if its intrinsic size
is greater than this value.
+ If only one dimension of the size is set (and the other left at 0), the
+ unset dimension will be set in proportion to the set dimension to preserve
+ the source image aspect ratio. The fillMode is independent of this.
+
Unlike setting the width and height properties, which merely scale the painting
of the image, this property affects the number of pixels stored.
diff --git a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
index 7bc74ce..97a22cf 100644
--- a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
@@ -130,7 +130,6 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QDeclarativeTextEdit>("Qt",4,6,"TextEdit");
qmlRegisterType<QDeclarativeTextInput>("Qt",4,6,"TextInput");
qmlRegisterType<QDeclarativeViewSection>("Qt",4,6,"ViewSection");
- qmlRegisterType<QDeclarativeFlickableVisibleArea>("Qt",4,6,"VisibleArea");
qmlRegisterType<QDeclarativeVisualDataModel>("Qt",4,6,"VisualDataModel");
qmlRegisterType<QDeclarativeVisualItemModel>("Qt",4,6,"VisualItemModel");
@@ -148,6 +147,7 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QDeclarativeVisualModel>();
qmlRegisterType<QAction>();
qmlRegisterType<QDeclarativePen>();
+ qmlRegisterType<QDeclarativeFlickableVisibleArea>();
#ifdef QT_WEBKIT_LIB
qmlRegisterType<QDeclarativeWebSettings>();
#endif
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index cbf8eac..308612f 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -305,7 +305,7 @@ public:
if (item->index == -1)
continue;
qreal itemTop = item->position();
- if (item->index == model->count()-1 || (itemTop+item->size()/2 >= pos))
+ if (itemTop+item->size()/2 >= pos && itemTop <= pos)
return item->position();
}
if (visibleItems.count()) {
@@ -1153,7 +1153,7 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
maxDistance = qAbs(minExtent - data.move.value());
}
}
- if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
+ if (snapMode == QDeclarativeListView::NoSnap && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
data.flickTarget = minExtent;
} else {
if (data.move.value() > maxExtent) {
@@ -1164,10 +1164,10 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
maxDistance = qAbs(maxExtent - data.move.value());
}
}
- if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
+ if (snapMode == QDeclarativeListView::NoSnap && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
data.flickTarget = maxExtent;
}
- if ((maxDistance > 0 || overShoot) && (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange)) {
+ if (maxDistance > 0 || overShoot) {
// These modes require the list to stop exactly on an item boundary.
// The initial flick will estimate the boundary to stop on.
// Since list items can have variable sizes, the boundary will be
@@ -1183,18 +1183,35 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
// the initial flick - estimate boundary
qreal accel = deceleration;
qreal v2 = v * v;
- if (maxDistance > 0.0 && v2 / (2.0f * maxDistance) < accel) {
- // + averageSize/4 to encourage moving at least one item in the flick direction
- qreal dist = v2 / (accel * 2.0) + averageSize/4;
- if (v > 0)
- dist = -dist;
+ overshootDist = 0.0;
+ // + averageSize/4 to encourage moving at least one item in the flick direction
+ qreal dist = v2 / (accel * 2.0) + averageSize/4;
+ if (maxDistance > 0)
+ dist = qMin(dist, maxDistance);
+ if (v > 0)
+ dist = -dist;
+ if ((maxDistance > 0.0 && v2 / (2.0f * maxDistance) < accel) || snapMode == QDeclarativeListView::SnapOneItem) {
data.flickTarget = -snapPosAt(-(data.move.value() - highlightRangeStart) + dist) + highlightRangeStart;
+ if (overShoot) {
+ if (data.flickTarget >= minExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget += overshootDist;
+ } else if (data.flickTarget <= maxExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget -= overshootDist;
+ }
+ }
dist = -data.flickTarget + data.move.value();
accel = v2 / (2.0f * qAbs(dist));
- overshootDist = 0.0;
- } else {
- data.flickTarget = velocity > 0 ? minExtent : maxExtent;
- overshootDist = overShoot ? overShootDistance(v, vSize) : 0;
+ } else if (overShoot) {
+ data.flickTarget = data.move.value() - dist;
+ if (data.flickTarget >= minExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget += overshootDist;
+ } else if (data.flickTarget <= maxExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget -= overshootDist;
+ }
}
timeline.reset(data.move);
timeline.accel(data.move, v, accel, maxDistance + overshootDist);
@@ -2381,6 +2398,8 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count)
if (d->currentItem)
d->currentItem->index = d->currentIndex;
emit currentIndexChanged();
+ } else if (d->currentIndex < 0) {
+ d->updateCurrent(0);
}
emit countChanged();
return;
@@ -2743,7 +2762,6 @@ void QDeclarativeListView::destroyingItem(QDeclarativeItem *item)
void QDeclarativeListView::animStopped()
{
Q_D(QDeclarativeListView);
- d->moveReason = QDeclarativeListViewPrivate::Other;
d->bufferMode = QDeclarativeListViewPrivate::NoBuffer;
}
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
index dde3366..6126a6f 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp
+++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
@@ -640,6 +640,7 @@ bool QDeclarativeMouseArea::setPressed(bool p)
QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, isclick, d->longPress);
if (d->pressed) {
emit pressed(&me);
+ emit positionChanged(&me);
} else {
emit released(&me);
if (isclick)
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index bb742ee..3e570e5 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -81,6 +81,7 @@
#include <QDebug>
#include <QMetaObject>
#include <QStack>
+#include <QMap>
#include <QPluginLoader>
#include <QtCore/qlibraryinfo.h>
#include <QtCore/qthreadstorage.h>
@@ -342,7 +343,8 @@ void QDeclarativeEnginePrivate::clear(SimpleList<QDeclarativeParserStatus> &pss)
}
Q_GLOBAL_STATIC(QDeclarativeEngineDebugServer, qmlEngineDebugServer);
-Q_GLOBAL_STATIC(QSet<QString>, qmlEnginePluginsWithRegisteredTypes);
+typedef QMap<QString, QString> StringStringMap;
+Q_GLOBAL_STATIC(StringStringMap, qmlEnginePluginsWithRegisteredTypes); // stores the uri
void QDeclarativeEnginePrivate::init()
{
@@ -1788,7 +1790,13 @@ void QDeclarativeEngine::addImportPath(const QString& path)
if (qmlImportTrace())
qDebug() << "QDeclarativeEngine::addImportPath" << path;
Q_D(QDeclarativeEngine);
- d->fileImportPath.prepend(path);
+ QUrl url = QUrl(path);
+ if (url.isRelative() || url.scheme() == QString::fromLocal8Bit("file")) {
+ QDir dir = QDir(path);
+ d->fileImportPath.prepend(dir.canonicalPath());
+ } else {
+ d->fileImportPath.prepend(path);
+ }
}
@@ -1838,34 +1846,43 @@ bool QDeclarativeEngine::importExtension(const QString &fileName, const QString
qDebug() << "QDeclarativeEngine::importExtension" << uri << "from" << fileName;
QFileInfo fileInfo(fileName);
const QString absoluteFilePath = fileInfo.absoluteFilePath();
- QPluginLoader loader(absoluteFilePath);
- if (QDeclarativeExtensionInterface *iface = qobject_cast<QDeclarativeExtensionInterface *>(loader.instance())) {
- const QByteArray bytes = uri.toUtf8();
- const char *moduleId = bytes.constData();
+ QDeclarativeEnginePrivate *d = QDeclarativeEnginePrivate::get(this);
+ bool engineInitialized = d->initializedPlugins.contains(absoluteFilePath);
+ bool typesRegistered = qmlEnginePluginsWithRegisteredTypes()->contains(absoluteFilePath);
- // ### this code should probably be protected with a mutex.
- if (! qmlEnginePluginsWithRegisteredTypes()->contains(absoluteFilePath)) {
- // types should only be registered once (they're global).
+ if (typesRegistered) {
+ Q_ASSERT_X(qmlEnginePluginsWithRegisteredTypes()->value(absoluteFilePath) == uri,
+ "QDeclarativeEngine::importExtension",
+ "Internal error: Plugin imported previously with different uri");
+ }
- qmlEnginePluginsWithRegisteredTypes()->insert(absoluteFilePath);
- iface->registerTypes(moduleId);
- }
+ if (!engineInitialized || !typesRegistered) {
+ QPluginLoader loader(absoluteFilePath);
- QDeclarativeEnginePrivate *d = QDeclarativeEnginePrivate::get(this);
+ if (QDeclarativeExtensionInterface *iface = qobject_cast<QDeclarativeExtensionInterface *>(loader.instance())) {
- if (! d->initializedPlugins.contains(absoluteFilePath)) {
- // things on the engine (eg. adding new global objects) have to be done for every engine.
+ const QByteArray bytes = uri.toUtf8();
+ const char *moduleId = bytes.constData();
+ if (!typesRegistered) {
- // protect against double initialization
- d->initializedPlugins.insert(absoluteFilePath);
- iface->initializeEngine(this, moduleId);
- }
+ // ### this code should probably be protected with a mutex.
+ qmlEnginePluginsWithRegisteredTypes()->insert(absoluteFilePath, uri);
+ iface->registerTypes(moduleId);
+ }
+ if (!engineInitialized) {
+ // things on the engine (eg. adding new global objects) have to be done for every engine.
- return true;
+ // protect against double initialization
+ d->initializedPlugins.insert(absoluteFilePath);
+ iface->initializeEngine(this, moduleId);
+ }
+ } else {
+ return false;
+ }
}
- return false;
+ return true;
}
/*!
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index 2f1933c..8a6190f 100644
--- a/src/gui/dialogs/qfilesystemmodel.cpp
+++ b/src/gui/dialogs/qfilesystemmodel.cpp
@@ -1373,6 +1373,16 @@ QModelIndex QFileSystemModel::setRootPath(const QString &newPath)
if (!showDrives && !newPathDir.exists())
return d->index(rootPath());
+ //We remove the watcher on the previous path
+ if (!rootPath().isEmpty() && rootPath() != QLatin1String(".")) {
+ //This remove the watcher for the old rootPath
+ d->fileInfoGatherer.removePath(rootPath());
+ //This line "marks" the node as dirty, so the next fetchMore
+ //call on the path will ask the gatherer to install a watcher again
+ //But it doesn't re-fetch everything
+ d->node(rootPath())->populatedChildren = false;
+ }
+
// We have a new valid root path
d->rootDir = newPathDir;
QModelIndex newRootIndex;
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index e5471b0..20c9faa 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -11054,7 +11054,7 @@ QPixmap QGraphicsItemEffectSourcePrivate::pixmap(Qt::CoordinateSystem system, QP
&newEffectTransform, false, true);
} else if (deviceCoordinates) {
// Device coordinates with info.
- scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, info->exposedRegion,
+ scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, 0,
info->widget, info->opacity, &effectTransform, info->wasDirtySceneTransform,
info->drawItem);
} else {
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index c5ec01c..8e439be 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -807,6 +807,7 @@ void QGraphicsWidget::setLayout(QGraphicsLayout *l)
l->setParentLayoutItem(this);
l->d_func()->reparentChildItems(this);
l->invalidate();
+ emit layoutChanged();
}
/*!
diff --git a/src/gui/graphicsview/qgraphicswidget.h b/src/gui/graphicsview/qgraphicswidget.h
index 87c669b..a22b642 100644
--- a/src/gui/graphicsview/qgraphicswidget.h
+++ b/src/gui/graphicsview/qgraphicswidget.h
@@ -83,6 +83,7 @@ class Q_GUI_EXPORT QGraphicsWidget : public QGraphicsObject, public QGraphicsLay
Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle)
Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry NOTIFY geometryChanged)
Q_PROPERTY(bool autoFillBackground READ autoFillBackground WRITE setAutoFillBackground)
+ Q_PROPERTY(QGraphicsLayout* layout READ layout WRITE setLayout NOTIFY layoutChanged)
public:
QGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0);
~QGraphicsWidget();
@@ -180,6 +181,7 @@ public:
Q_SIGNALS:
void geometryChanged();
+ void layoutChanged();
public Q_SLOTS:
bool close();
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 000696c..f49acc4 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -2433,7 +2433,7 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt,
const int contentHeight =
qMax(qMax(iconHeight, decoratorHeight) + pixelMetric(PM_ButtonMargin),
textHeight + 2*pixelMetric(PM_ButtonMargin));
- sz.setHeight(contentHeight);
+ sz.setHeight(qMax(sz.height(), contentHeight));
sz += QSize(2 * pixelMetric(PM_ButtonMargin), 0);
}
break;
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 93a7c75..a805612 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -654,6 +654,7 @@ static const ushort char_table[] = {
static const int char_table_entries = sizeof(char_table)/sizeof(ushort);
+#ifndef Q_CC_MINGW
void QFontEngineWin::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
{
HDC hdc = shared_dc();
@@ -678,6 +679,7 @@ void QFontEngineWin::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *
}
#endif
}
+#endif // Q_CC_MINGW
qreal QFontEngineWin::minLeftBearing() const
{
diff --git a/src/gui/text/qfontengine_win_p.h b/src/gui/text/qfontengine_win_p.h
index f19e48e..68b53b5 100644
--- a/src/gui/text/qfontengine_win_p.h
+++ b/src/gui/text/qfontengine_win_p.h
@@ -106,7 +106,9 @@ public:
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &xform);
virtual QImage alphaRGBMapForGlyph(glyph_t t, int margin, const QTransform &xform);
+#ifndef Q_CC_MINGW
virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0);
+#endif
int getGlyphIndexes(const QChar *ch, int numChars, QGlyphLayout *glyphs, bool mirrored) const;
void getCMap();
diff --git a/src/imports/webkit/qdeclarativewebview.cpp b/src/imports/webkit/qdeclarativewebview.cpp
index be3fca2..1ff1078 100644
--- a/src/imports/webkit/qdeclarativewebview.cpp
+++ b/src/imports/webkit/qdeclarativewebview.cpp
@@ -1218,6 +1218,14 @@ QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QStri
return oldFile;
}
+/*!
+ \qmlsignal WebView::alert(message)
+
+ This signal is emitted when the web engine sends a JavaScript alert. The \a message is the text
+ to be displayed in the alert to the user.
+*/
+
+
void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg)
{
Q_UNUSED(originatingFrame)
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index b3b923d..d1e899a 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -182,6 +182,7 @@ public:
qreal penScale; // Pen scaling factor from "transform".
QTransform pathTransform; // Calculated VG path transformation.
+ QTransform glyphTransform; // Calculated VG glyph transformation.
QTransform imageTransform; // Calculated VG image transformation.
bool pathTransformSet; // True if path transform set in the VG context.
@@ -499,24 +500,31 @@ extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale);
void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
{
- VGfloat devh = pdev->height() - 1;
+ VGfloat devh = pdev->height();
// Construct the VG transform by combining the Qt transform with
// the following viewport transformation:
- // | 1 0 0 | | 1 0 0.5 | | 1 0 0.5 |
- // | 0 -1 devh | * | 0 1 -0.5 | = | 0 -1 (0.5 + devh) |
- // | 0 0 1 | | 0 0 1 | | 0 0 1 |
+ // | 1 0 0 |
+ // | 0 -1 devh |
+ // | 0 0 1 |
+ // The glyph transform uses a slightly different transformation:
+ // | 1 0 0 | | 1 0 0.5 | | 1 0 0.5 |
+ // | 0 -1 devh - 1 | * | 0 1 -0.5 | = | 0 -1 (devh - 0.5) |
+ // | 0 0 1 | | 0 0 1 | | 0 0 1 |
// The full VG transform is effectively:
// 1. Apply the user's transformation matrix.
- // 2. Translate by (0.5, -0.5) to correct for Qt and VG putting
- // the centre of the pixel at different positions.
+ // 2. Translate glyphs by an extra (0.5, -0.5).
// 3. Flip the co-ordinate system upside down.
QTransform viewport(1.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
- 0.5f, devh + 0.5f, 1.0f);
+ 0.0f, devh, 1.0f);
+ QTransform gviewport(1.0f, 0.0f, 0.0f,
+ 0.0f, -1.0f, 0.0f,
+ 0.5f, devh - 0.5f, 1.0f);
// Compute the path transform and determine if it is projective.
pathTransform = transform * viewport;
+ glyphTransform = transform * gviewport;
bool projective = (pathTransform.m13() != 0.0f ||
pathTransform.m23() != 0.0f ||
pathTransform.m33() != 1.0f);
@@ -525,6 +533,7 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
// so we will have to convert the co-ordinates ourselves.
// Change the matrix to just the viewport transformation.
pathTransform = viewport;
+ glyphTransform = gviewport;
simpleTransform = false;
} else {
simpleTransform = true;
@@ -532,13 +541,7 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
pathTransformSet = false;
// The image transform is always the full transformation,
- // because it can be projective. It also does not need the
- // (0.5, -0.5) translation because vgDrawImage() implicitly
- // adds 0.5 to each co-ordinate.
- QTransform viewport2(1.0f, 0.0f, 0.0f,
- 0.0f, -1.0f, 0.0f,
- 0.0f, devh + 1, 1.0f);
- imageTransform = transform * viewport2;
+ imageTransform = transform * viewport;
// Calculate the scaling factor to use for turning cosmetic pens
// into ordinary non-cosmetic pens.
@@ -3331,7 +3334,7 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
}
// Set the transformation to use for drawing the current glyphs.
- QTransform glyphTransform(d->pathTransform);
+ QTransform glyphTransform(d->glyphTransform);
glyphTransform.translate(p.x(), p.y());
#if defined(QVG_NO_IMAGE_GLYPHS)
glyphTransform.scale(glyphCache->scaleX, glyphCache->scaleY);
@@ -3669,10 +3672,10 @@ void QVGCompositionHelper::fillBackground
} else {
// Set the path transform to the default viewport transformation.
- VGfloat devh = screenSize.height() - 1;
+ VGfloat devh = screenSize.height();
QTransform viewport(1.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
- -0.5f, devh + 0.5f, 1.0f);
+ 0.0f, devh, 1.0f);
d->setTransform(VG_MATRIX_PATH_USER_TO_SURFACE, viewport);
// Set the brush to use to fill the background.
@@ -3708,10 +3711,10 @@ void QVGCompositionHelper::drawCursorPixmap
}
// Set the image transformation and modes.
- VGfloat devh = screenSize.height() - 1;
+ VGfloat devh = screenSize.height();
QTransform transform(1.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
- -0.5f, devh + 0.5f, 1.0f);
+ 0.0f, devh, 1.0f);
transform.translate(offset.x(), offset.y());
d->setTransform(VG_MATRIX_IMAGE_USER_TO_SURFACE, transform);
d->setImageMode(VG_DRAW_IMAGE_NORMAL);
diff --git a/src/xmlpatterns/api/qxmlresultitems.cpp b/src/xmlpatterns/api/qxmlresultitems.cpp
index c474082..98c5bdc 100644
--- a/src/xmlpatterns/api/qxmlresultitems.cpp
+++ b/src/xmlpatterns/api/qxmlresultitems.cpp
@@ -70,6 +70,10 @@ QT_BEGIN_NAMESPACE
sequence and returns it, and current() always returns the QXmlItem
that next() returned the last time it was called.
+ \note When using the QXmlResultItems overload of QXmlQuery::evaluateTo()
+ to execute a query, it is advisable to create a new instance of this
+ class for each new set of results rather than reusing an old instance.
+
\sa QXmlItem::isNode(), QXmlItem::isAtomicValue(), QXmlNodeModelIndex
*/
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml b/tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml
new file mode 100644
index 0000000..2fec9da
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml
@@ -0,0 +1,44 @@
+import Qt 4.6
+
+QtObject {
+ //real
+ property real test1: a + b
+ property real test2: a - b
+ property bool test3: (a < b)
+ property bool test4: (a > b)
+ property bool test5: (a == b)
+ property bool test6: (a != b)
+
+ //int
+ property int test7: c + d
+ property int test8: d - c
+ property bool test9: (c < d)
+ property bool test10: (c > d)
+ property bool test11: (c == d)
+ property bool test12: (c != d)
+
+ //string
+ property string test13: e + f
+ property string test14: e + " " + f
+ property bool test15: (e == f)
+ property bool test16: (e != f)
+
+ //type conversion
+ property int test17: a
+ property real test18: d
+ property int test19: g
+ property real test20: g
+ property string test21: g
+ property string test22: h
+ property bool test23: i
+
+ property real a: 4.5
+ property real b: 11.2
+ property int c: 9
+ property int d: 176
+ property string e: "Hello"
+ property string f: "World"
+ property var g: 6.7
+ property var h: "!"
+ property var i: true
+}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index b218d30..77dd4b8 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -129,6 +129,7 @@ private slots:
void ownership();
void qlistqobjectMethods();
void strictlyEquals();
+ void compiled();
void bug1();
void dynamicCreationCrash();
@@ -2026,6 +2027,44 @@ void tst_qdeclarativeecmascript::strictlyEquals()
delete object;
}
+void tst_qdeclarativeecmascript::compiled()
+{
+ QDeclarativeComponent component(&engine, TEST_FILE("compiled.qml"));
+
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+
+ QCOMPARE(object->property("test1").toReal(), qreal(15.7));
+ QCOMPARE(object->property("test2").toReal(), qreal(-6.7));
+ QCOMPARE(object->property("test3").toBool(), true);
+ QCOMPARE(object->property("test4").toBool(), false);
+ QCOMPARE(object->property("test5").toBool(), false);
+ QCOMPARE(object->property("test6").toBool(), true);
+
+ QCOMPARE(object->property("test7").toInt(), 185);
+ QCOMPARE(object->property("test8").toInt(), 167);
+ QCOMPARE(object->property("test9").toBool(), true);
+ QCOMPARE(object->property("test10").toBool(), false);
+ QCOMPARE(object->property("test11").toBool(), false);
+ QCOMPARE(object->property("test12").toBool(), true);
+
+ QCOMPARE(object->property("test13").toString(), QLatin1String("HelloWorld"));
+ QCOMPARE(object->property("test14").toString(), QLatin1String("Hello World"));
+ QCOMPARE(object->property("test15").toBool(), false);
+ QCOMPARE(object->property("test16").toBool(), true);
+
+ QCOMPARE(object->property("test17").toInt(), 4);
+ QCOMPARE(object->property("test18").toReal(), qreal(176));
+ QEXPECT_FAIL("", "QTBUG-9538", Continue);
+ QCOMPARE(object->property("test19").toInt(), 6);
+ QCOMPARE(object->property("test20").toReal(), qreal(6.7));
+ QCOMPARE(object->property("test21").toString(), QLatin1String("6.7"));
+ QCOMPARE(object->property("test22").toString(), QLatin1String("!"));
+ QCOMPARE(object->property("test23").toBool(), true);
+
+ delete object;
+}
+
QTEST_MAIN(tst_qdeclarativeecmascript)
#include "tst_qdeclarativeecmascript.moc"
diff --git a/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp b/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp
index 879047e..412c3b7 100644
--- a/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp
+++ b/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp
@@ -130,7 +130,7 @@ void tst_QDeclarativeLayouts::test_qml()
void tst_QDeclarativeLayouts::test_cpp()
{
- //TODO: Waiting on QT-2407 to write this test
+ //TODO: This test!
}
QDeclarativeView *tst_QDeclarativeLayouts::createView(const QString &filename)
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml b/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml
new file mode 100644
index 0000000..0da7c45
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml
@@ -0,0 +1,20 @@
+import Qt 4.6
+
+Rectangle {
+ color: "#ffffff"
+ width: 320; height: 240
+ MouseArea {
+ id: mouseRegion
+ objectName: "mouseregion"
+ anchors.fill: parent
+ Rectangle {
+ id: ball
+ objectName: "ball"
+ width: 20; height: 20
+ radius: 10
+ color: "#0000ff"
+ x: { mouseRegion.mouseX }
+ y: mouseRegion.mouseY
+ }
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
index 769cf32..9b664e5 100644
--- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
+++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
@@ -42,6 +42,7 @@
#include <QtTest/QtTest>
#include <QtTest/QSignalSpy>
#include <private/qdeclarativemousearea_p.h>
+#include <private/qdeclarativerectangle_p.h>
#include <QtDeclarative/qdeclarativeview.h>
class tst_QDeclarativeMouseArea: public QObject
@@ -49,6 +50,7 @@ class tst_QDeclarativeMouseArea: public QObject
Q_OBJECT
private slots:
void dragProperties();
+ void updateMouseAreaPosOnClick();
private:
QDeclarativeView *createView(const QString &filename);
};
@@ -121,6 +123,8 @@ void tst_QDeclarativeMouseArea::dragProperties()
QCOMPARE(xmaxSpy.count(),1);
QCOMPARE(yminSpy.count(),1);
QCOMPARE(ymaxSpy.count(),1);
+
+ delete canvas;
}
QDeclarativeView *tst_QDeclarativeMouseArea::createView(const QString &filename)
@@ -133,6 +137,38 @@ QDeclarativeView *tst_QDeclarativeMouseArea::createView(const QString &filename)
return canvas;
}
+void tst_QDeclarativeMouseArea::updateMouseAreaPosOnClick()
+{
+ QDeclarativeView *canvas = createView(SRCDIR "/data/updateMousePosOnClick.qml");
+ canvas->show();
+ canvas->setFocus();
+ QVERIFY(canvas->rootObject() != 0);
+
+ QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion");
+ QVERIFY(mouseRegion != 0);
+
+ QDeclarativeRectangle *rect = canvas->rootObject()->findChild<QDeclarativeRectangle*>("ball");
+ QVERIFY(rect != 0);
+
+ QCOMPARE(mouseRegion->mouseX(), rect->x());
+ QCOMPARE(mouseRegion->mouseY(), rect->y());
+
+ QGraphicsScene *scene = canvas->scene();
+ QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
+ event.setScenePos(QPointF(100, 100));
+ event.setButton(Qt::LeftButton);
+ event.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &event);
+
+ QCOMPARE(mouseRegion->mouseX(), 100.0);
+ QCOMPARE(mouseRegion->mouseY(), 100.0);
+
+ QCOMPARE(mouseRegion->mouseX(), rect->x());
+ QCOMPARE(mouseRegion->mouseY(), rect->y());
+
+ delete canvas;
+}
+
QTEST_MAIN(tst_QDeclarativeMouseArea)
#include "tst_qdeclarativemousearea.moc"
diff --git a/tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml b/tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml
new file mode 100644
index 0000000..70bd74d
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml
@@ -0,0 +1,5 @@
+import Qt 4.6
+
+QtObject {
+ Component.onCompleted: Qt.openUrlExternally("test:url")
+}
diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp
index 4987557..48d5235 100644
--- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp
+++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp
@@ -44,6 +44,7 @@
#include <QDeclarativeEngine>
#include <QFileInfo>
#include <QDeclarativeComponent>
+#include <QDesktopServices>
#include <QDir>
#include <QVector3D>
#include <QCryptographicHash>
@@ -261,10 +262,31 @@ void tst_qdeclarativeqt::tint()
delete object;
}
+class MyUrlHandler : public QObject
+{
+ Q_OBJECT
+public:
+ MyUrlHandler() : called(0) { }
+ int called;
+ QUrl last;
+
+public slots:
+ void noteCall(const QUrl &url) { called++; last = url; }
+};
+
void tst_qdeclarativeqt::openUrlExternally()
{
- QEXPECT_FAIL("", "How do we test this?", Abort);
- QVERIFY(false);
+ MyUrlHandler handler;
+
+ QDesktopServices::setUrlHandler("test", &handler, "noteCall");
+
+ QDeclarativeComponent component(&engine, TEST_FILE("openUrlExternally.qml"));
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+ QCOMPARE(handler.called,1);
+ QCOMPARE(handler.last, QUrl("test:url"));
+
+ QDesktopServices::unsetUrlHandler("test");
}
void tst_qdeclarativeqt::md5()
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png
index cf36d60..cf36d60 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png
index 6069df8..6069df8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png
index b8bd5f3..b8bd5f3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png
index cf36d60..cf36d60 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png
index 831d6b4..831d6b4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png
index f7079dc..f7079dc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png
index a5f4451..a5f4451 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png
index e1261d0..e1261d0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png
index 653905e..653905e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml
index 5a131e9..5a131e9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/drag.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml
index cc374fd..cc374fd 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.0.png
index c249c21..c249c21 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png
index a96bf1b..a96bf1b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.10.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.11.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.11.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.12.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.12.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.13.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.13.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.14.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.14.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.15.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png
index e797cc9..e797cc9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.15.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.16.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.16.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.17.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.17.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.18.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.18.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.19.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.19.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png
index a96bf1b..a96bf1b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.20.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.20.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.21.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.21.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.22.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.22.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png
index a96bf1b..a96bf1b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/data/mouseregion.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/drag.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml
index dbb2a24..21c46d8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/drag.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml
@@ -1,5 +1,10 @@
import Qt 4.6
+/*
+this test shows a blue box being dragged around -- first roughly tracing the
+borders of the window, then doing a rough 'x'-shape, then moving to around the middle.
+*/
+
Rectangle{
width:400
height:440
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/mouseregion.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml
index 3c722d0..3019006 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemouseregion/mouseregion.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml
@@ -1,5 +1,16 @@
import Qt 4.6
+/*
+This test displays 6 red rects -- 4 in the top row, 2 in the bottom.
+
+Sequence:
+1. the bottom-left rect turns blue, then green
+2. the second rect in the top row turns blue
+3. the third rect in the top row turns blue
+4. the last rect in the top row quickly turns blue then back to red
+5. the bottom-left rect turns blue, then green
+*/
+
Rectangle {
id: root
width: 400
diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
index 2794ab8..91f8486 100644
--- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
+++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
@@ -101,6 +101,8 @@ void tst_qmlvisual::visual_data()
files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
else {
//these are tests we think are stable and useful enough to be run by the CI system
+ files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/mousearea-visual.qml";
+ files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/drag.qml";
files << QT_TEST_SOURCE_DIR "/animation/pauseAnimation/pauseAnimation-visual.qml";
files << QT_TEST_SOURCE_DIR "/animation/parentAnimation/parentAnimation-visual.qml";
files << QT_TEST_SOURCE_DIR "/animation/reanchor/reanchor.qml";
@@ -124,6 +126,10 @@ void tst_qmlvisual::visual()
arguments << "-script" << testdata
<< "-scriptopts" << "play,testimages,testerror,exitoncomplete,exitonfailure"
<< file << "-graphicssystem" << "raster";
+#ifdef Q_WS_QWS
+ arguments << "-qws";
+#endif
+
QProcess p;
p.start(qmlruntime, arguments);
QVERIFY(p.waitForFinished());
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index 4c0bc78..3313240 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -943,6 +943,7 @@ void tst_QGraphicsWidget::layout()
layout->addItem(item);
children.append(item);
}
+ QSignalSpy spy(&widget, SIGNAL(layoutChanged()));
widget.setLayout(layout);
QTRY_COMPARE(widget.layout(), static_cast<QGraphicsLayout*>(layout));
@@ -951,7 +952,7 @@ void tst_QGraphicsWidget::layout()
QCOMPARE(item->parentWidget(), (QGraphicsWidget *)&widget);
QVERIFY(item->geometry() != QRectF(0, 0, -1, -1));
}
-
+ QCOMPARE(spy.count(), 1);
// don't crash
widget.setLayout(0);
}
diff --git a/tests/auto/qsharedpointer/externaltests.cpp b/tests/auto/qsharedpointer/externaltests.cpp
index 7eae3c1..e685cd3 100644
--- a/tests/auto/qsharedpointer/externaltests.cpp
+++ b/tests/auto/qsharedpointer/externaltests.cpp
@@ -140,7 +140,6 @@ namespace QTest {
QExternalTestPrivate()
: qtModules(QExternalTest::QtCore | QExternalTest::QtGui | QExternalTest::QtTest),
appType(QExternalTest::AutoApplication),
- debugMode(true),
exitCode(-1)
{
}
@@ -156,7 +155,6 @@ namespace QTest {
QByteArray programHeader;
QExternalTest::QtModules qtModules;
QExternalTest::ApplicationType appType;
- bool debugMode;
QString temporaryDir;
QByteArray sourceCode;
@@ -190,16 +188,6 @@ namespace QTest {
delete d;
}
- bool QExternalTest::isDebugMode() const
- {
- return d->debugMode;
- }
-
- void QExternalTest::setDebugMode(bool enable)
- {
- d->debugMode = enable;
- }
-
QList<QByteArray> QExternalTest::qmakeSettings() const
{
return d->qmakeLines;
@@ -524,10 +512,11 @@ namespace QTest {
"INCLUDEPATH += . ");
projectFile.write(QFile::encodeName(QDir::currentPath()));
- if (debugMode)
+#ifndef QT_NO_DEBUG
projectFile.write("\nCONFIG += debug\n");
- else
+#else
projectFile.write("\nCONFIG += release\n");
+#endif
QByteArray extraSources = QFile::encodeName(extraProgramSources.join(" "));
if (!extraSources.isEmpty()) {
diff --git a/tests/auto/qsharedpointer/externaltests.h b/tests/auto/qsharedpointer/externaltests.h
index 5e79a7d..1170cd5 100644
--- a/tests/auto/qsharedpointer/externaltests.h
+++ b/tests/auto/qsharedpointer/externaltests.h
@@ -91,9 +91,6 @@ namespace QTest {
QApplicationGuiServer
};
- bool isDebugMode() const;
- void setDebugMode(bool enable);
-
QList<QByteArray> qmakeSettings() const;
void setQmakeSettings(const QList<QByteArray> &settings);
diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
index 07df707..4e23cb1 100644
--- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
@@ -1817,11 +1817,11 @@ void tst_QSharedPointer::invalidConstructs()
#endif
QTest::QExternalTest test;
- test.setDebugMode(true);
test.setQtModules(QTest::QExternalTest::QtCore);
test.setExtraProgramSources(QStringList() << SRCDIR "forwarddeclared.cpp");
test.setProgramHeader(
"#define QT_SHAREDPOINTER_TRACK_POINTERS\n"
+ "#define QT_DEBUG\n"
"#include <QtCore/qsharedpointer.h>\n"
"#include <QtCore/qcoreapplication.h>\n"
"\n"
diff --git a/tools/linguist/linguist.pro b/tools/linguist/linguist.pro
index e1c8a63..85ecd5a 100644
--- a/tools/linguist/linguist.pro
+++ b/tools/linguist/linguist.pro
@@ -4,5 +4,3 @@ SUBDIRS = \
lrelease \
lupdate \
lconvert
-CONFIG += ordered
-
diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp
index 8062e8e..5099e49 100644
--- a/tools/qml/main.cpp
+++ b/tools/qml/main.cpp
@@ -47,7 +47,7 @@
#include <QApplication>
#include <QTranslator>
#include <QDebug>
-#include "qfxtester.h"
+#include "qdeclarativetester.h"
#include "qdeclarativefolderlistmodel.h"
QT_USE_NAMESPACE
diff --git a/tools/qml/qfxtester.cpp b/tools/qml/qdeclarativetester.cpp
index 28bbf5e..6245124 100644
--- a/tools/qml/qfxtester.cpp
+++ b/tools/qml/qdeclarativetester.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include <qfxtester.h>
+#include <qdeclarativetester.h>
#include <QDebug>
#include <QApplication>
#include <qdeclarativeview.h>
@@ -311,9 +311,9 @@ void QDeclarativeTester::updateCurrentTime(int msec)
} else if (frame->msec() == msec) {
if (!frame->hash().isEmpty() && frame->hash().toUtf8() != fe.hash.toHex()) {
if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) {
- qWarning() << "QDeclarativeTester: Mismatched frame hash. Seen:"
- << fe.hash.toHex() << "Expected:"
- << frame->hash().toUtf8();
+ qWarning() << "QDeclarativeTester: Mismatched frame hash at" << msec
+ << ". Seen:" << fe.hash.toHex()
+ << "Expected:" << frame->hash().toUtf8();
imagefailure();
}
}
diff --git a/tools/qml/qfxtester.h b/tools/qml/qdeclarativetester.h
index 6521409..d49c9b8 100644
--- a/tools/qml/qfxtester.h
+++ b/tools/qml/qdeclarativetester.h
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef QFXTESTER_H
-#define QFXTESTER_H
+#ifndef QDECLARATIVETESTER_H
+#define QDECLARATIVETESTER_H
#include <QEvent>
#include <QMouseEvent>
@@ -283,4 +283,4 @@ private:
QT_END_NAMESPACE
-#endif // QFXTESTER_H
+#endif // QDECLARATIVETESTER_H
diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro
index a7eb6f5..ba283b6 100644
--- a/tools/qml/qml.pro
+++ b/tools/qml/qml.pro
@@ -15,13 +15,13 @@ contains(QT_CONFIG, opengl) {
# Input
HEADERS += qmlruntime.h \
proxysettings.h \
- qfxtester.h \
+ qdeclarativetester.h \
deviceorientation.h \
qdeclarativefolderlistmodel.h
SOURCES += main.cpp \
qmlruntime.cpp \
proxysettings.cpp \
- qfxtester.cpp \
+ qdeclarativetester.cpp \
qdeclarativefolderlistmodel.cpp
RESOURCES = qmlruntime.qrc
maemo5 {
diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp
index 44cab97..1ab528e 100644
--- a/tools/qml/qmlruntime.cpp
+++ b/tools/qml/qmlruntime.cpp
@@ -95,7 +95,7 @@
#include <QGLWidget>
#endif
-#include <qfxtester.h>
+#include <qdeclarativetester.h>
#if defined (Q_OS_SYMBIAN)
#define SYMBIAN_NETWORK_INIT