summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-10-28 06:06:29 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-10-28 06:06:29 (GMT)
commitb7a30841120afb7be26fe980489db5757f1d2ef3 (patch)
tree018e1043fb06f2034553e1c70a9a820ab26efa20
parent753f8a4f263fd44ec22c7f6b0835df1466d01f82 (diff)
parentd14b406afb2286583c4efdd32522a82f9c130d52 (diff)
downloadQt-b7a30841120afb7be26fe980489db5757f1d2ef3.zip
Qt-b7a30841120afb7be26fe980489db5757f1d2ef3.tar.gz
Qt-b7a30841120afb7be26fe980489db5757f1d2ef3.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
-rw-r--r--demos/declarative/contacts/FieldText.qml2
-rw-r--r--demos/declarative/contacts/RemoveButton.qml2
-rw-r--r--demos/declarative/flickr/common/ImageDetails.qml4
-rw-r--r--demos/declarative/flickr/flickr-desktop.qml2
-rw-r--r--demos/declarative/flickr/flickr-mobile.qml2
-rw-r--r--demos/declarative/flickr/mobile/Button.qml2
-rw-r--r--demos/declarative/flickr/mobile/ImageDetails.qml14
-rw-r--r--demos/declarative/flickr/mobile/ListDelegate.qml6
-rw-r--r--demos/declarative/flickr/mobile/TitleBar.qml4
-rw-r--r--demos/declarative/minehunt/minehunt.qml4
-rw-r--r--demos/declarative/samegame/samegame.qml2
-rw-r--r--demos/declarative/twitter/content/AuthView.qml4
-rw-r--r--demos/declarative/twitter/content/FatDelegate.qml2
-rw-r--r--demos/declarative/twitter/content/HomeTitleBar.qml6
-rw-r--r--demos/declarative/twitter/twitter.qml4
-rw-r--r--demos/declarative/webbrowser/fieldtext/FieldText.qml2
-rw-r--r--demos/declarative/webbrowser/webbrowser.qml6
-rw-r--r--examples/declarative/aspectratio/face_fit.qml1
-rw-r--r--examples/declarative/aspectratio/face_fit_animated.qml1
-rw-r--r--examples/declarative/aspectratio/pics/face.pngbin905 -> 15408 bytes
-rw-r--r--examples/declarative/aspectratio/scale_and_crop.qml1
-rw-r--r--examples/declarative/aspectratio/scale_and_crop_simple.qml3
-rw-r--r--examples/declarative/aspectratio/scale_and_sidecrop.qml1
-rw-r--r--examples/declarative/aspectratio/scale_to_fit.qml1
-rw-r--r--examples/declarative/aspectratio/scale_to_fit_simple.qml3
-rw-r--r--examples/declarative/dynamic/dynamic.qml2
-rw-r--r--examples/declarative/fillmode/fillmode.qml14
-rw-r--r--examples/declarative/fonts/fonts.qml10
-rw-r--r--examples/declarative/loader/Browser.qml4
-rw-r--r--examples/declarative/snow/ImageBatch.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame1/samegame.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame2/samegame.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame3/samegame.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame4/samegame.qml2
-rw-r--r--examples/declarative/velocity/Day.qml108
-rw-r--r--examples/declarative/velocity/velocity.qml77
-rw-r--r--examples/declarative/webview/content/FieldText.qml2
-rw-r--r--src/declarative/debugger/qmldebug.cpp17
-rw-r--r--src/declarative/fx/qfximage.cpp8
-rw-r--r--src/declarative/fx/qfxmouseregion.cpp4
-rw-r--r--src/declarative/fx/qfxpositioners.cpp16
-rw-r--r--src/declarative/fx/qfxtext.cpp28
-rw-r--r--src/declarative/fx/qfxtext.h15
-rw-r--r--src/declarative/fx/qfxtext_p.h4
-rw-r--r--src/declarative/qml/qmlbinding.cpp64
-rw-r--r--src/declarative/qml/qmlbinding_p.h6
-rw-r--r--src/declarative/qml/qmlboundsignal.cpp5
-rw-r--r--src/declarative/qml/qmlcomponent.cpp17
-rw-r--r--src/declarative/qml/qmlcontext.cpp7
-rw-r--r--src/declarative/qml/qmlengine.cpp5
-rw-r--r--src/declarative/qml/qmlengine_p.h5
-rw-r--r--src/declarative/qml/qmlenginedebug.cpp67
-rw-r--r--src/declarative/qml/qmlenginedebug_p.h4
-rw-r--r--src/declarative/qml/qmlerror.cpp42
-rw-r--r--src/declarative/qml/qmlerror.h2
-rw-r--r--src/declarative/qml/qmlexpression.cpp56
-rw-r--r--src/declarative/qml/qmlexpression.h5
-rw-r--r--src/declarative/qml/qmlexpression_p.h6
-rw-r--r--src/declarative/qml/qmlwatcher.cpp2
-rw-r--r--src/declarative/qml/qmlwatcher_p.h3
-rw-r--r--tests/auto/declarative/anchors/anchors.pro1
-rw-r--r--tests/auto/declarative/animatedimage/animatedimage.pro1
-rw-r--r--tests/auto/declarative/animations/animations.pro1
-rw-r--r--tests/auto/declarative/behaviors/behaviors.pro1
-rw-r--r--tests/auto/declarative/datetimeformatter/datetimeformatter.pro2
-rw-r--r--tests/auto/declarative/declarative.pro5
-rw-r--r--tests/auto/declarative/examples/examples.pro3
-rw-r--r--tests/auto/declarative/layouts/layouts.pro1
-rw-r--r--tests/auto/declarative/listview/listview.pro2
-rw-r--r--tests/auto/declarative/numberformatter/numberformatter.pro2
-rw-r--r--tests/auto/declarative/pathview/pathview.pro2
-rw-r--r--tests/auto/declarative/qfxloader/qfxloader.pro2
-rw-r--r--tests/auto/declarative/qfxpixmapcache/qfxpixmapcache.pro4
-rw-r--r--tests/auto/declarative/qfxtext/qfxtext.pro2
-rw-r--r--tests/auto/declarative/qfxtextedit/qfxtextedit.pro2
-rw-r--r--tests/auto/declarative/qfxtextinput/qfxtextinput.pro2
-rw-r--r--tests/auto/declarative/qfxwebview/qfxwebview.pro2
-rw-r--r--tests/auto/declarative/qmldom/qmldom.pro2
-rw-r--r--tests/auto/declarative/qmlecmascript/data/NestedTypeTransientErrors.qml11
-rw-r--r--tests/auto/declarative/qmlecmascript/data/transientErrors.qml10
-rw-r--r--tests/auto/declarative/qmlecmascript/qmlecmascript.pro1
-rw-r--r--tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp23
-rw-r--r--tests/auto/declarative/qmllanguage/qmllanguage.pro3
-rw-r--r--tests/auto/declarative/qmllist/qmllist.pro2
-rw-r--r--tests/auto/declarative/qmllistaccessor/qmllistaccessor.pro2
-rw-r--r--tests/auto/declarative/qmlmetaproperty/qmlmetaproperty.pro2
-rw-r--r--tests/auto/declarative/qmlpropertymap/qmlpropertymap.pro2
-rw-r--r--tests/auto/declarative/qmltimer/qmltimer.pro2
-rw-r--r--tests/auto/declarative/repeater/repeater.pro3
-rw-r--r--tests/auto/declarative/sql/sql.pro2
-rw-r--r--tests/auto/declarative/states/states.pro2
-rw-r--r--tests/auto/declarative/visual/visual.pro3
-rw-r--r--tools/qmldebugger/creatorplugin/qmlinspectormode.cpp9
-rw-r--r--tools/qmldebugger/standalone/engine.cpp2
-rw-r--r--tools/qmldebugger/standalone/expressionquerywidget.cpp34
-rw-r--r--tools/qmldebugger/standalone/expressionquerywidget.h10
-rw-r--r--tools/qmldebugger/standalone/objectpropertiesview.cpp76
-rw-r--r--tools/qmldebugger/standalone/objectpropertiesview.h2
-rw-r--r--tools/qmldebugger/standalone/objecttree.cpp1
-rw-r--r--tools/qmldebugger/standalone/objecttree.h4
-rw-r--r--tools/qmldebugger/standalone/watchtable.cpp3
101 files changed, 622 insertions, 318 deletions
diff --git a/demos/declarative/contacts/FieldText.qml b/demos/declarative/contacts/FieldText.qml
index 2e8b60d..1e89793 100644
--- a/demos/declarative/contacts/FieldText.qml
+++ b/demos/declarative/contacts/FieldText.qml
@@ -69,7 +69,7 @@ Rectangle {
x: 5
width: parent.width-10
anchors.verticalCenter: parent.verticalCenter
- horizontalAlignment: "AlignHCenter"
+ horizontalAlignment: Text.AlignHCenter
color: contactDetails.state == "editing" ? "#505050" : "#AAAAAA"
font.italic: true
font.bold: true
diff --git a/demos/declarative/contacts/RemoveButton.qml b/demos/declarative/contacts/RemoveButton.qml
index 2c3cc9e..0cb013e 100644
--- a/demos/declarative/contacts/RemoveButton.qml
+++ b/demos/declarative/contacts/RemoveButton.qml
@@ -73,7 +73,7 @@ Rectangle {
anchors.rightMargin: 4
font.bold: true
color: "white"
- horizontalAlignment: "AlignHCenter"
+ horizontalAlignment: Text.AlignHCenter
text: "Remove"
opacity: 0
}
diff --git a/demos/declarative/flickr/common/ImageDetails.qml b/demos/declarative/flickr/common/ImageDetails.qml
index cc00773..19cad06 100644
--- a/demos/declarative/flickr/common/ImageDetails.qml
+++ b/demos/declarative/flickr/common/ImageDetails.qml
@@ -44,7 +44,7 @@ Flipable {
onClicked: { container.state='Back' }
}
- Text { id: titleText; style: "Raised"; styleColor: "black"; color: "white"; elide: "ElideRight"
+ Text { id: titleText; style: Text.Raised; styleColor: "black"; color: "white"; elide: Text.ElideRight
x: 220; y: 30; width: parent.width - 240; text: container.photoTitle; font.pointSize: 22 }
LikeOMeter { x: 40; y: 250; rating: container.rating }
@@ -69,7 +69,7 @@ Flipable {
text: container.photoTags == "" ? "" : "<b>Tags:</b> " }
Text { id: tags; color: "white"; width: parent.width-x-20;
anchors.left: tagsLabel.right; anchors.top: date.bottom;
- elide: "ElideRight"; text: container.photoTags }
+ elide: Text.ElideRight; text: container.photoTags }
ScrollBar { id: scrollBar; x: 720; y: flickable.y; width: 7; height: flickable.height; opacity: 0;
flickableArea: flickable; clip: true }
diff --git a/demos/declarative/flickr/flickr-desktop.qml b/demos/declarative/flickr/flickr-desktop.qml
index d1ad6e1..337f77c 100644
--- a/demos/declarative/flickr/flickr-desktop.qml
+++ b/demos/declarative/flickr/flickr-desktop.qml
@@ -187,6 +187,6 @@ Item {
id: categoryText; anchors.horizontalCenter: parent.horizontalCenter; y: 15;
text: "Flickr - " +
(rssModel.tags=="" ? "Uploads from everyone" : "Recent Uploads tagged " + rssModel.tags)
- font.pointSize: 20; font.bold: true; color: "white"; style: "Raised"; styleColor: "black"
+ font.pointSize: 20; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black"
}
}
diff --git a/demos/declarative/flickr/flickr-mobile.qml b/demos/declarative/flickr/flickr-mobile.qml
index 48fe7df..0a89c4f 100644
--- a/demos/declarative/flickr/flickr-mobile.qml
+++ b/demos/declarative/flickr/flickr-mobile.qml
@@ -10,7 +10,7 @@ Item {
id: background
anchors.fill: parent; color: "#343434";
- Image { source: "mobile/images/stripes.png"; fillMode: "Tile"; anchors.fill: parent; opacity: 0.3 }
+ Image { source: "mobile/images/stripes.png"; fillMode: Image.Tile; anchors.fill: parent; opacity: 0.3 }
Common.RssModel { id: rssModel }
Common.Loading { anchors.centerIn: parent; visible: rssModel.status == 2 }
diff --git a/demos/declarative/flickr/mobile/Button.qml b/demos/declarative/flickr/mobile/Button.qml
index a4a96d4..770330c 100644
--- a/demos/declarative/flickr/mobile/Button.qml
+++ b/demos/declarative/flickr/mobile/Button.qml
@@ -26,7 +26,7 @@ Item {
Text {
color: "white"
anchors.centerIn: buttonImage; font.bold: true
- text: container.text; style: "Raised"; styleColor: "black"
+ text: container.text; style: Text.Raised; styleColor: "black"
}
states: [
State {
diff --git a/demos/declarative/flickr/mobile/ImageDetails.qml b/demos/declarative/flickr/mobile/ImageDetails.qml
index 26052b9..1963bf5 100644
--- a/demos/declarative/flickr/mobile/ImageDetails.qml
+++ b/demos/declarative/flickr/mobile/ImageDetails.qml
@@ -39,13 +39,13 @@ Flipable {
right: parent.right; rightMargin: 20
top: parent.top; topMargin: 180
}
- Text { font.bold: true; color: "white"; elide: "ElideRight"; text: container.photoTitle }
- Text { color: "white"; elide: "ElideRight"; text: "<b>Size:</b> " + container.photoWidth + 'x' + container.photoHeight }
- Text { color: "white"; elide: "ElideRight"; text: "<b>Type:</b> " + container.photoType }
- Text { color: "white"; elide: "ElideRight"; text: "<b>Author:</b> " + container.photoAuthor }
- Text { color: "white"; elide: "ElideRight"; text: "<b>Published:</b> " + container.photoDate }
- Text { color: "white"; elide: "ElideRight"; text: container.photoTags == "" ? "" : "<b>Tags:</b> " }
- Text { color: "white"; elide: "ElideRight"; elide: "ElideRight"; text: container.photoTags }
+ Text { font.bold: true; color: "white"; elide: Text.ElideRight; text: container.photoTitle }
+ Text { color: "white"; elide: Text.ElideRight; text: "<b>Size:</b> " + container.photoWidth + 'x' + container.photoHeight }
+ Text { color: "white"; elide: Text.ElideRight; text: "<b>Type:</b> " + container.photoType }
+ Text { color: "white"; elide: Text.ElideRight; text: "<b>Author:</b> " + container.photoAuthor }
+ Text { color: "white"; elide: Text.ElideRight; text: "<b>Published:</b> " + container.photoDate }
+ Text { color: "white"; elide: Text.ElideRight; text: container.photoTags == "" ? "" : "<b>Tags:</b> " }
+ Text { color: "white"; elide: Text.ElideRight; elide: Text.ElideRight; text: container.photoTags }
}
}
diff --git a/demos/declarative/flickr/mobile/ListDelegate.qml b/demos/declarative/flickr/mobile/ListDelegate.qml
index 090e91a..75c4572 100644
--- a/demos/declarative/flickr/mobile/ListDelegate.qml
+++ b/demos/declarative/flickr/mobile/ListDelegate.qml
@@ -14,9 +14,9 @@ Component {
}
Column {
x: 92; width: wrapper.ListView.view.width - 95; y: 15; spacing: 2
- Text { text: title; color: "white"; width: parent.width; font.bold: true; elide: "ElideRight"; style: "Raised"; styleColor: "black" }
- Text { text: photoAuthor; color: "white"; width: parent.width; elide: "ElideLeft"; color: "#cccccc"; style: "Raised"; styleColor: "black" }
- Text { text: photoDate; color: "white"; width: parent.width; elide: "ElideRight"; color: "#cccccc"; style: "Raised"; styleColor: "black" }
+ Text { text: title; color: "white"; width: parent.width; font.bold: true; elide: Text.ElideRight; style: Text.Raised; styleColor: "black" }
+ Text { text: photoAuthor; color: "white"; width: parent.width; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" }
+ Text { text: photoDate; color: "white"; width: parent.width; elide: Text.ElideRight; color: "#cccccc"; style: Text.Raised; styleColor: "black" }
}
}
}
diff --git a/demos/declarative/flickr/mobile/TitleBar.qml b/demos/declarative/flickr/mobile/TitleBar.qml
index 108faf7..07b9762 100644
--- a/demos/declarative/flickr/mobile/TitleBar.qml
+++ b/demos/declarative/flickr/mobile/TitleBar.qml
@@ -25,9 +25,9 @@ Item {
left: parent.left; right: tagButton.left; leftMargin: 10; rightMargin: 10
verticalCenter: parent.verticalCenter
}
- elide: "ElideLeft"
+ elide: Text.ElideLeft
text: (rssModel.tags=="" ? untaggedString : taggedString + rssModel.tags)
- font.bold: true; color: "White"; style: "Raised"; styleColor: "Black"
+ font.bold: true; color: "White"; style: Text.Raised; styleColor: "Black"
}
Button {
diff --git a/demos/declarative/minehunt/minehunt.qml b/demos/declarative/minehunt/minehunt.qml
index 72431af..e71ce90 100644
--- a/demos/declarative/minehunt/minehunt.qml
+++ b/demos/declarative/minehunt/minehunt.qml
@@ -96,7 +96,7 @@ Item {
properties: "angle"
}
ScriptAction{
- script: "if(modelData.hasMine && modelData.flipped){expl.explode = true;}"
+ script: if(modelData.hasMine && modelData.flipped){expl.explode = true;}
}
}
}
@@ -121,7 +121,7 @@ Item {
]
Image {
source: "pics/No-Ones-Laughing-3.jpg"
- fillMode: "Tile"
+ fillMode: Image.Tile
}
Description {
text: "Use the 'minehunt' executable to run this demo!"
diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml
index ea7c14c..38a781a 100644
--- a/demos/declarative/samegame/samegame.qml
+++ b/demos/declarative/samegame/samegame.qml
@@ -13,7 +13,7 @@ Rectangle {
Image {
id: background
anchors.fill: parent; source: "content/pics/background.png"
- fillMode: "PreserveAspectCrop"
+ fillMode: Image.PreserveAspectCrop
}
Item {
diff --git a/demos/declarative/twitter/content/AuthView.qml b/demos/declarative/twitter/content/AuthView.qml
index 73ce308..320eef6 100644
--- a/demos/declarative/twitter/content/AuthView.qml
+++ b/demos/declarative/twitter/content/AuthView.qml
@@ -12,7 +12,7 @@ Item {
Text {
width: 100
text: "Screen name:"
- font.pointSize: 10; font.bold: true; color: "white"; style: "Raised"; styleColor: "black"
+ font.pointSize: 10; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black"
anchors.verticalCenter: parent.verticalCenter
horizontalAlignment: Qt.AlignRight
}
@@ -42,7 +42,7 @@ Item {
Text {
width: 100
text: "Password:"
- font.pointSize: 10; font.bold: true; color: "white"; style: "Raised"; styleColor: "black"
+ font.pointSize: 10; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black"
anchors.verticalCenter: parent.verticalCenter
horizontalAlignment: Qt.AlignRight
}
diff --git a/demos/declarative/twitter/content/FatDelegate.qml b/demos/declarative/twitter/content/FatDelegate.qml
index 32a921e..194ffb3 100644
--- a/demos/declarative/twitter/content/FatDelegate.qml
+++ b/demos/declarative/twitter/content/FatDelegate.qml
@@ -38,7 +38,7 @@ Component {
+ '<a href="app://@'+userScreenName+'"><b>'+userScreenName + "</b></a> from " +source
+ "<br /><b>" + addTags(statusText) + "</b></html>";
textFormat: Qt.RichText
- color: "white"; color: "#cccccc"; style: "Raised"; styleColor: "black"; wrap: true
+ color: "white"; color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true
anchors.left: whiteRect.right; anchors.right: blackRect.right; anchors.leftMargin: 6; anchors.rightMargin: 6
onLinkActivated: handleLink(link)
}
diff --git a/demos/declarative/twitter/content/HomeTitleBar.qml b/demos/declarative/twitter/content/HomeTitleBar.qml
index 3108a9b..b0995f3 100644
--- a/demos/declarative/twitter/content/HomeTitleBar.qml
+++ b/demos/declarative/twitter/content/HomeTitleBar.qml
@@ -52,9 +52,9 @@ Item {
anchors.left: parent.left; anchors.right: tagButton.left
anchors.leftMargin: 58; anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
- elide: "ElideLeft"
+ elide: Text.ElideLeft
text: "Timeline for " + rssModel.authName
- font.pointSize: 10; font.bold: true; color: "white"; style: "Raised"; styleColor: "black"
+ font.pointSize: 10; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black"
}
Button {
@@ -67,7 +67,7 @@ Item {
id: charsLeftText; anchors.horizontalCenter: tagButton.horizontalCenter;
anchors.top: tagButton.bottom; anchors.topMargin: 2
text: {140 - editor.text.length;} visible: titleBar.state == "Posting"
- font.pointSize: 10; font.bold: true; color: "white"; style: "Raised"; styleColor: "black"
+ font.pointSize: 10; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black"
}
Item {
id: txtEdit;
diff --git a/demos/declarative/twitter/twitter.qml b/demos/declarative/twitter/twitter.qml
index e9752ff..fdeb839 100644
--- a/demos/declarative/twitter/twitter.qml
+++ b/demos/declarative/twitter/twitter.qml
@@ -29,14 +29,14 @@ Item {
id: background
anchors.fill: parent; color: "#343434";
- Image { source: "mobile/images/stripes.png"; fillMode: "Tile"; anchors.fill: parent; opacity: 0.3 }
+ Image { source: "mobile/images/stripes.png"; fillMode: Image.Tile; anchors.fill: parent; opacity: 0.3 }
Twitter.RssModel { id: rssModel }
Common.Loading { anchors.centerIn: parent; visible: rssModel.status==XmlListModel.Loading && state!='unauthed'}
Text {
width: 180
text: "Could not access twitter using this screen name and password pair.";
- color: "white"; color: "#cccccc"; style: "Raised"; styleColor: "black"; wrap: true
+ color: "white"; color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true
visible: rssModel.status==XmlListModel.Error; anchors.centerIn: parent
}
diff --git a/demos/declarative/webbrowser/fieldtext/FieldText.qml b/demos/declarative/webbrowser/fieldtext/FieldText.qml
index 2adfbbf..b1c1938 100644
--- a/demos/declarative/webbrowser/fieldtext/FieldText.qml
+++ b/demos/declarative/webbrowser/fieldtext/FieldText.qml
@@ -79,7 +79,7 @@ Item {
x: 5
width: parent.width-10
anchors.verticalCenter: parent.verticalCenter
- horizontalAlignment: "AlignHCenter"
+ horizontalAlignment: Text.AlignHCenter
color: fieldText.state == "editing" ? "#505050" : "#AAAAAA"
font.italic: true
font.bold: true
diff --git a/demos/declarative/webbrowser/webbrowser.qml b/demos/declarative/webbrowser/webbrowser.qml
index 53ac214..3b1ea57 100644
--- a/demos/declarative/webbrowser/webbrowser.qml
+++ b/demos/declarative/webbrowser/webbrowser.qml
@@ -65,11 +65,11 @@ Item {
id: headerText
text: webView.title!='' || webView.progress == 1.0 ? webView.title : 'Loading...'
- elide: "ElideRight"
+ elide: Text.ElideRight
color: "white"
styleColor: "black"
- style: "Raised"
+ style: Text.Raised
font.family: "Helvetica"
font.pointSize: 10
@@ -81,7 +81,7 @@ Item {
anchors.rightMargin: 4
anchors.top: header.top
anchors.topMargin: 4
- horizontalAlignment: "AlignHCenter"
+ horizontalAlignment: Text.AlignHCenter
}
Item {
width: parent.width
diff --git a/examples/declarative/aspectratio/face_fit.qml b/examples/declarative/aspectratio/face_fit.qml
index 3d1451c..482d1b7 100644
--- a/examples/declarative/aspectratio/face_fit.qml
+++ b/examples/declarative/aspectratio/face_fit.qml
@@ -15,6 +15,7 @@ Rectangle {
Image {
id: face
+ smooth: true
source: "pics/face.png"
x: (parent.width-width*scale)/2
y: (parent.height-height*scale)/2
diff --git a/examples/declarative/aspectratio/face_fit_animated.qml b/examples/declarative/aspectratio/face_fit_animated.qml
index f004a6c..80a762b 100644
--- a/examples/declarative/aspectratio/face_fit_animated.qml
+++ b/examples/declarative/aspectratio/face_fit_animated.qml
@@ -13,6 +13,7 @@ Rectangle {
Image {
id: face
+ smooth: true
source: "pics/face.png"
x: (parent.width-width*scale)/2
y: (parent.height-height*scale)/2
diff --git a/examples/declarative/aspectratio/pics/face.png b/examples/declarative/aspectratio/pics/face.png
index 9623b1a..3d66d72 100644
--- a/examples/declarative/aspectratio/pics/face.png
+++ b/examples/declarative/aspectratio/pics/face.png
Binary files differ
diff --git a/examples/declarative/aspectratio/scale_and_crop.qml b/examples/declarative/aspectratio/scale_and_crop.qml
index 2c9477e..283e24b 100644
--- a/examples/declarative/aspectratio/scale_and_crop.qml
+++ b/examples/declarative/aspectratio/scale_and_crop.qml
@@ -11,6 +11,7 @@ Rectangle {
Image {
id: face
+ smooth: true
source: "pics/face.png"
x: (parent.width-width*scale)/2
y: (parent.height-height*scale)/2
diff --git a/examples/declarative/aspectratio/scale_and_crop_simple.qml b/examples/declarative/aspectratio/scale_and_crop_simple.qml
index 9cc9c19..e720ce7 100644
--- a/examples/declarative/aspectratio/scale_and_crop_simple.qml
+++ b/examples/declarative/aspectratio/scale_and_crop_simple.qml
@@ -12,8 +12,9 @@ Rectangle {
Image {
id: face
+ smooth: true
source: "pics/face.png"
- fillMode: "PreserveAspectCrop"
+ fillMode: Image.PreserveAspectCrop
anchors.fill: parent
}
}
diff --git a/examples/declarative/aspectratio/scale_and_sidecrop.qml b/examples/declarative/aspectratio/scale_and_sidecrop.qml
index 67c7e29..c3ef859 100644
--- a/examples/declarative/aspectratio/scale_and_sidecrop.qml
+++ b/examples/declarative/aspectratio/scale_and_sidecrop.qml
@@ -12,6 +12,7 @@ Rectangle {
Image {
id: face
+ smooth: true
source: "pics/face.png"
x: (parent.width-width*scale)/2
y: (parent.height-height*scale)/2
diff --git a/examples/declarative/aspectratio/scale_to_fit.qml b/examples/declarative/aspectratio/scale_to_fit.qml
index c4efc29..961ac04 100644
--- a/examples/declarative/aspectratio/scale_to_fit.qml
+++ b/examples/declarative/aspectratio/scale_to_fit.qml
@@ -12,6 +12,7 @@ Rectangle {
Image {
id: face
+ smooth: true
source: "pics/face.png"
x: (parent.width-width*scale)/2
y: (parent.height-height*scale)/2
diff --git a/examples/declarative/aspectratio/scale_to_fit_simple.qml b/examples/declarative/aspectratio/scale_to_fit_simple.qml
index f7fcd8b..7389581 100644
--- a/examples/declarative/aspectratio/scale_to_fit_simple.qml
+++ b/examples/declarative/aspectratio/scale_to_fit_simple.qml
@@ -12,8 +12,9 @@ Rectangle {
Image {
id: face
+ smooth: true
source: "pics/face.png"
- fillMode: "PreserveAspectFit"
+ fillMode: Image.PreserveAspectFit
anchors.fill: parent
}
}
diff --git a/examples/declarative/dynamic/dynamic.qml b/examples/declarative/dynamic/dynamic.qml
index e083a5b..885e037 100644
--- a/examples/declarative/dynamic/dynamic.qml
+++ b/examples/declarative/dynamic/dynamic.qml
@@ -68,14 +68,12 @@ Item {
Text{ text: "Drag an item into the scene." }
Row{ id: toolRow
spacing: 8;
- height: childrenRect.height//TODO: Put bug in JIRA when it comes back up
PaletteItem{
anchors.verticalCenter: parent.verticalCenter
file: "Sun.qml";
image: "images/sun.png"
}
PaletteItem{
- anchors.verticalCenter: parent.verticalCenter
file: "GenericItem.qml"
image: "images/moon.png"
}
diff --git a/examples/declarative/fillmode/fillmode.qml b/examples/declarative/fillmode/fillmode.qml
index 0fdacbf..d3a28e2 100644
--- a/examples/declarative/fillmode/fillmode.qml
+++ b/examples/declarative/fillmode/fillmode.qml
@@ -7,22 +7,22 @@ Image {
fillMode: SequentialAnimation {
running: true
repeat: true
- PropertyAction { value: "Stretch" }
+ PropertyAction { value: Image.Stretch }
PropertyAction { target: label; property: "text"; value: "Stretch" }
PauseAnimation { duration: 1000 }
- PropertyAction { value: "PreserveAspectFit" }
+ PropertyAction { value: Image.PreserveAspectFit }
PropertyAction { target: label; property: "text"; value: "PreserveAspectFit" }
PauseAnimation { duration: 1000 }
- PropertyAction { value: "PreserveAspectCrop" }
+ PropertyAction { value: Image.PreserveAspectCrop }
PropertyAction { target: label; property: "text"; value: "PreserveAspectCrop" }
PauseAnimation { duration: 1000 }
- PropertyAction { value: "Tile" }
+ PropertyAction { value: Image.Tile }
PropertyAction { target: label; property: "text"; value: "Tile" }
PauseAnimation { duration: 1000 }
- PropertyAction { value: "TileHorizontally" }
+ PropertyAction { value: Image.TileHorizontally }
PropertyAction { target: label; property: "text"; value: "TileHorizontally" }
PauseAnimation { duration: 1000 }
- PropertyAction { value: "TileVertically" }
+ PropertyAction { value: Image.TileVertically }
PropertyAction { target: label; property: "text"; value: "TileVertically" }
PauseAnimation { duration: 1000 }
}
@@ -30,7 +30,7 @@ Image {
id: label
font.pointSize: 24
color: "blue"
- style: "Outline"
+ style: Text.Outline
styleColor: "white"
anchors { centerIn: parent }
}
diff --git a/examples/declarative/fonts/fonts.qml b/examples/declarative/fonts/fonts.qml
index 4029f8b..e68bdb6 100644
--- a/examples/declarative/fonts/fonts.qml
+++ b/examples/declarative/fonts/fonts.qml
@@ -22,21 +22,21 @@ Rectangle {
Text {
text: myText
color: palette.windowText
- width: parent.width; elide: "ElideRight"
+ width: parent.width; elide: Text.ElideRight
font.family: "Times"
font.pointSize: 32
}
Text {
text: myText
color: palette.windowText
- width: parent.width; elide: "ElideRight"
+ width: parent.width; elide: Text.ElideRight
font.family: fixedFont.name
font.pointSize: 32
}
Text {
text: myText
color: palette.windowText
- width: parent.width; elide: "ElideRight"
+ width: parent.width; elide: Text.ElideRight
font.family: localFont.name
font.pointSize: 32
}
@@ -47,7 +47,7 @@ Rectangle {
else if (webFont.status == 3) "Error loading font"
}
color: palette.windowText
- width: parent.width; elide: "ElideRight"
+ width: parent.width; elide: Text.ElideRight
font.family: webFont.name
font.pointSize: 32
}
@@ -58,7 +58,7 @@ Rectangle {
else if (webFont2.status == 3) "Error loading font"
}
color: palette.windowText
- width: parent.width; elide: "ElideRight"
+ width: parent.width; elide: Text.ElideRight
font.family: webFont2.name
font.pointSize: 32
}
diff --git a/examples/declarative/loader/Browser.qml b/examples/declarative/loader/Browser.qml
index 9e54758..f2cbd3d 100644
--- a/examples/declarative/loader/Browser.qml
+++ b/examples/declarative/loader/Browser.qml
@@ -81,7 +81,7 @@ Rectangle {
}
Text {
id: nameText
- anchors.fill: parent; verticalAlignment: "AlignVCenter"
+ anchors.fill: parent; verticalAlignment: Text.AlignVCenter
text: fileName; anchors.leftMargin: 48
font.pixelSize: 32
color: wrapper.isCurrentItem ? palette.highlightedText : palette.text
@@ -225,7 +225,7 @@ Rectangle {
anchors.left: upButton.right; anchors.right: parent.right; height: parent.height
anchors.leftMargin: 4; anchors.rightMargin: 4
text: folders.folder; color: "white"
- elide: "ElideLeft"; horizontalAlignment: "AlignRight"; verticalAlignment: "AlignVCenter"
+ elide: Text.ElideLeft; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignVCenter
font.pixelSize: 32
}
}
diff --git a/examples/declarative/snow/ImageBatch.qml b/examples/declarative/snow/ImageBatch.qml
index dfe2a46..95b9b97 100644
--- a/examples/declarative/snow/ImageBatch.qml
+++ b/examples/declarative/snow/ImageBatch.qml
@@ -41,7 +41,7 @@ GridView {
transformOrigin: Item.Center
width: grid.imageWidth; height: grid.imageHeight;
- Image { id: flickrImage; source: url; fillMode: "PreserveAspectFit"; smooth: true; anchors.fill: parent;
+ Image { id: flickrImage; source: url; fillMode: Image.PreserveAspectFit; smooth: true; anchors.fill: parent;
opacity: (status == Image.Ready)?1:0; opacity: Behavior { NumberAnimation { properties: "opacity" } } }
Loading { anchors.centerIn: parent; visible: flickrImage.status!=1 }
diff --git a/examples/declarative/tutorials/samegame/samegame1/samegame.qml b/examples/declarative/tutorials/samegame/samegame1/samegame.qml
index 8b32cae..b5546d0 100644
--- a/examples/declarative/tutorials/samegame/samegame1/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame1/samegame.qml
@@ -13,7 +13,7 @@ Rectangle {
Image {
id: background
anchors.fill: parent; source: "pics/background.png"
- fillMode: "PreserveAspectCrop"
+ fillMode: Image.PreserveAspectCrop
}
}
diff --git a/examples/declarative/tutorials/samegame/samegame2/samegame.qml b/examples/declarative/tutorials/samegame/samegame2/samegame.qml
index 63431b1..257e0de 100644
--- a/examples/declarative/tutorials/samegame/samegame2/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame2/samegame.qml
@@ -15,7 +15,7 @@ Rectangle {
Image {
id: background
anchors.fill: parent; source: "pics/background.png"
- fillMode: "PreserveAspectCrop"
+ fillMode: Image.PreserveAspectCrop
}
}
diff --git a/examples/declarative/tutorials/samegame/samegame3/samegame.qml b/examples/declarative/tutorials/samegame/samegame3/samegame.qml
index 5b98f48..0a7ec0f 100644
--- a/examples/declarative/tutorials/samegame/samegame3/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame3/samegame.qml
@@ -14,7 +14,7 @@ Rectangle {
Image {
id: background
anchors.fill: parent; source: "pics/background.png"
- fillMode: "PreserveAspectCrop"
+ fillMode: Image.PreserveAspectCrop
}
//![1]
diff --git a/examples/declarative/tutorials/samegame/samegame4/samegame.qml b/examples/declarative/tutorials/samegame/samegame4/samegame.qml
index ede4362..e519912 100644
--- a/examples/declarative/tutorials/samegame/samegame4/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame4/samegame.qml
@@ -15,7 +15,7 @@ Rectangle {
Image {
id: background
anchors.fill: parent; source: "content/pics/background.png"
- fillMode: "PreserveAspectCrop"
+ fillMode: Image.PreserveAspectCrop
}
Item {
diff --git a/examples/declarative/velocity/Day.qml b/examples/declarative/velocity/Day.qml
index b0d4dd9..030fa13 100644
--- a/examples/declarative/velocity/Day.qml
+++ b/examples/declarative/velocity/Day.qml
@@ -1,65 +1,48 @@
import Qt 4.6
Rectangle {
- property string day
+ property alias day: dayText.text
property var stickies
- width: 400
- height: 500
- radius: 7
- border.color: "black"
id: page
- Image {
- x: 10
- y: 10
- source: "cork.jpg"
- }
+ width: 400; height: 500; radius: 7
+ border.color: "black"
+
+ Image { x: 10; y: 10; source: "cork.jpg" }
+
Text {
- x: 20
- y: 20
- height: 40
- font.pointSize: 14
- font.bold: true
- width: 370
- text: day
- style: "Outline"
- styleColor: "#dedede"
+ id: dayText; x: 20; y: 20
+ height: 40; width: 370
+ font.pointSize: 14; font.bold: true
+ style: Text.Outline; styleColor: "#dedede"
}
+
Repeater {
model: page.stickies
+
Item {
+ id: stickyPage
x: Math.random() * 200 + 100
y: Math.random() * 300 + 50
- id: stickyPage
rotation: SpringFollow {
source: -flickable.horizontalVelocity / 100
- spring: 2.0
- damping: 0.1
+ spring: 2.0; damping: 0.1
}
+
Item {
id: sticky
scale: 0.5
Image {
- id: stickyImage
- source: "sticky.png"
- smooth: true
- y: -20
- x: 8 + -width * 0.6 / 2
- scale: 0.6
+ id: stickyImage; source: "sticky.png"
+ smooth: true; y: -20; x: 8 + -width * 0.6 / 2; scale: 0.6
}
+
TextEdit {
- id: myText
- smooth: true
- font.pointSize: 28
- readOnly: false
- x: -104
- y: 36
- wrap: true
- rotation: -8
- text: noteText
- width: 195
- height: 172
+ id: myText; smooth: true; font.pointSize: 28
+ readOnly: false; x: -104; y: 36; wrap: true
+ rotation: -8; text: noteText; width: 195; height: 172
}
+
Item {
y: -20
x: stickyImage.x
@@ -69,44 +52,27 @@ Rectangle {
id: mouse
onClicked: { myText.focus = true }
anchors.fill: parent
- drag.target: stickyPage
- drag.axis: "XandYAxis"
- drag.minimumY: 0
- drag.maximumY: 500
- drag.minimumX: 0
- drag.maximumX: 400
+ drag.target: stickyPage; drag.axis: "XandYAxis"; drag.minimumY: 0; drag.maximumY: 500
+ drag.minimumX: 0; drag.maximumX: 400
}
}
}
+
Image {
source: "tack.png"
- x: -width / 2
- y: -height * 0.7 / 2
- scale: 0.7
+ x: -width / 2; y: -height * 0.7 / 2; scale: 0.7
+ }
+
+ states: State {
+ name: "pressed"
+ when: mouse.pressed
+ PropertyChanges { target: sticky; rotation: 8; scale: 1 }
+ PropertyChanges { target: page; z: 8 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "rotation,scale"; duration: 200 }
}
- states: [
- State {
- name: "pressed"
- when: mouse.pressed
- PropertyChanges {
- target: sticky
- rotation: 8
- scale: 1
- }
- PropertyChanges {
- target: page
- z: 8
- }
- }
- ]
- transitions: [
- Transition {
- NumberAnimation {
- properties: "rotation,scale"
- duration: 200
- }
- }
- ]
}
}
}
diff --git a/examples/declarative/velocity/velocity.qml b/examples/declarative/velocity/velocity.qml
index b132965..50d69d8 100644
--- a/examples/declarative/velocity/velocity.qml
+++ b/examples/declarative/velocity/velocity.qml
@@ -2,8 +2,8 @@ import Qt 4.6
Rectangle {
color: "lightSteelBlue"
- width: 800
- height: 600
+ width: 800; height: 600
+
ListModel {
id: list
ListElement {
@@ -12,10 +12,10 @@ Rectangle {
notes: [
ListElement {
noteText: "Lunch"
- },
- ListElement {
- noteText: "Party"
- }
+ },
+ ListElement {
+ noteText: "Party"
+ }
]
}
ListElement {
@@ -24,13 +24,13 @@ Rectangle {
notes: [
ListElement {
noteText: "Pickup kids"
- },
- ListElement {
- noteText: "Checkout kinetic"
- },
- ListElement {
- noteText: "Read email"
- }
+ },
+ ListElement {
+ noteText: "Checkout kinetic"
+ },
+ ListElement {
+ noteText: "Read email"
+ }
]
}
ListElement {
@@ -39,10 +39,10 @@ Rectangle {
notes: [
ListElement {
noteText: "Walk dog"
- },
- ListElement {
- noteText: "Buy newspaper"
- }
+ },
+ ListElement {
+ noteText: "Buy newspaper"
+ }
]
}
ListElement {
@@ -51,10 +51,10 @@ Rectangle {
notes: [
ListElement {
noteText: "Cook dinner"
- },
- ListElement {
- noteText: "Eat dinner"
- }
+ },
+ ListElement {
+ noteText: "Eat dinner"
+ }
]
}
ListElement {
@@ -63,10 +63,10 @@ Rectangle {
notes: [
ListElement {
noteText: "5:30pm Meeting"
- },
- ListElement {
- noteText: "Weed garden"
- }
+ },
+ ListElement {
+ noteText: "Weed garden"
+ }
]
}
ListElement {
@@ -75,10 +75,10 @@ Rectangle {
notes: [
ListElement {
noteText: "Still work"
- },
- ListElement {
- noteText: "Drink"
- }
+ },
+ ListElement {
+ noteText: "Drink"
+ }
]
}
ListElement {
@@ -87,28 +87,21 @@ Rectangle {
notes: [
ListElement {
noteText: "Drink"
- },
- ListElement {
- noteText: "Drink"
- }
+ },
+ ListElement {
+ noteText: "Drink"
+ }
]
}
}
Flickable {
id: flickable
- anchors.fill: parent
- viewportWidth: lay.width
+ anchors.fill: parent; viewportWidth: lay.width
Row {
id: lay
Repeater {
model: list
- Component {
- Day {
- day: name
- color: dayColor
- stickies: notes
- }
- }
+ Component { Day { day: name; color: dayColor; stickies: notes } }
}
}
}
diff --git a/examples/declarative/webview/content/FieldText.qml b/examples/declarative/webview/content/FieldText.qml
index 2adfbbf..b1c1938 100644
--- a/examples/declarative/webview/content/FieldText.qml
+++ b/examples/declarative/webview/content/FieldText.qml
@@ -79,7 +79,7 @@ Item {
x: 5
width: parent.width-10
anchors.verticalCenter: parent.verticalCenter
- horizontalAlignment: "AlignHCenter"
+ horizontalAlignment: Text.AlignHCenter
color: fieldText.state == "editing" ? "#505050" : "#AAAAAA"
font.italic: true
font.bold: true
diff --git a/src/declarative/debugger/qmldebug.cpp b/src/declarative/debugger/qmldebug.cpp
index 2537ec0..5a8cda0 100644
--- a/src/declarative/debugger/qmldebug.cpp
+++ b/src/declarative/debugger/qmldebug.cpp
@@ -67,26 +67,30 @@ int QmlEngineDebugPrivate::getId()
void QmlEngineDebugPrivate::remove(QmlEngineDebug *c, QmlDebugEnginesQuery *q)
{
QmlEngineDebugPrivate *p = (QmlEngineDebugPrivate *)QObjectPrivate::get(c);
- p->enginesQuery.remove(q->m_queryId);
+ if (p && q)
+ p->enginesQuery.remove(q->m_queryId);
}
void QmlEngineDebugPrivate::remove(QmlEngineDebug *c,
QmlDebugRootContextQuery *q)
{
QmlEngineDebugPrivate *p = (QmlEngineDebugPrivate *)QObjectPrivate::get(c);
- p->rootContextQuery.remove(q->m_queryId);
+ if (p && q)
+ p->rootContextQuery.remove(q->m_queryId);
}
void QmlEngineDebugPrivate::remove(QmlEngineDebug *c, QmlDebugObjectQuery *q)
{
QmlEngineDebugPrivate *p = (QmlEngineDebugPrivate *)QObjectPrivate::get(c);
- p->objectQuery.remove(q->m_queryId);
+ if (p && q)
+ p->objectQuery.remove(q->m_queryId);
}
void QmlEngineDebugPrivate::remove(QmlEngineDebug *c, QmlDebugExpressionQuery *q)
{
QmlEngineDebugPrivate *p = (QmlEngineDebugPrivate *)QObjectPrivate::get(c);
- p->expressionQuery.remove(q->m_queryId);
+ if (p && q)
+ p->expressionQuery.remove(q->m_queryId);
}
Q_DECLARE_METATYPE(QmlDebugObjectReference);
@@ -118,9 +122,10 @@ void QmlEngineDebugPrivate::decode(QDataStream &ds, QmlDebugObjectReference &o,
prop.m_binding = data.binding;
prop.m_hasNotifySignal = data.hasNotifySignal;
prop.m_valueTypeName = data.valueTypeName;
- if (data.type == QmlEngineDebugServer::QmlObjectProperty::Basic)
+ if (data.type == QmlEngineDebugServer::QmlObjectProperty::Basic
+ || data.type == QmlEngineDebugServer::QmlObjectProperty::List) {
prop.m_value = data.value;
- else if (data.type == QmlEngineDebugServer::QmlObjectProperty::Object) {
+ } else if (data.type == QmlEngineDebugServer::QmlObjectProperty::Object) {
QmlDebugObjectReference obj;
obj.m_debugId = prop.m_value.toInt();
prop.m_value = qVariantFromValue(obj);
diff --git a/src/declarative/fx/qfximage.cpp b/src/declarative/fx/qfximage.cpp
index 860af66..45a481c 100644
--- a/src/declarative/fx/qfximage.cpp
+++ b/src/declarative/fx/qfximage.cpp
@@ -82,7 +82,7 @@ QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Image,QFxImage)
\o fillMode: Tile
\qml
Image {
- fillMode: "Tile"
+ fillMode: Image.Tile
width: 160; height: 160
source: "pics/qtlogo.png"
}
@@ -92,7 +92,7 @@ QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Image,QFxImage)
\o fillMode: TileVertically
\qml
Image {
- fillMode: "TileVertically"
+ fillMode: Image.TileVertically
width: 160; height: 160
source: "pics/qtlogo.png"
}
@@ -102,7 +102,7 @@ QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Image,QFxImage)
\o fillMode: TileHorizontally
\qml
Image {
- fillMode: "TileHorizontally"
+ fillMode: Image.TileHorizontally
width: 160; height: 160
source: "pics/qtlogo.png"
}
@@ -161,7 +161,7 @@ void QFxImage::setPixmap(const QPixmap &pix)
}
/*!
- \qmlproperty FillMode Image::fillMode
+ \qmlproperty enumeration Image::fillMode
Set this property to define what happens when the image set for the item is smaller
than the size of the item.
diff --git a/src/declarative/fx/qfxmouseregion.cpp b/src/declarative/fx/qfxmouseregion.cpp
index 4b31fd4..315a273 100644
--- a/src/declarative/fx/qfxmouseregion.cpp
+++ b/src/declarative/fx/qfxmouseregion.cpp
@@ -319,8 +319,8 @@ void QFxMouseRegion::setEnabled(bool a)
\code
Text {
text: mr.pressedButtons & Qt.RightButton ? "right" : ""
- horizontalAlignment: "AlignHCenter"
- verticalAlignment: "AlignVCenter"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
MouseRegion {
id: mr
acceptedButtons: Qt.LeftButton | Qt.RightButton
diff --git a/src/declarative/fx/qfxpositioners.cpp b/src/declarative/fx/qfxpositioners.cpp
index cc385e0..86a069d 100644
--- a/src/declarative/fx/qfxpositioners.cpp
+++ b/src/declarative/fx/qfxpositioners.cpp
@@ -375,6 +375,10 @@ Column {
\endqml
\endtable
+ Note that the positioner assumes that the x and y positions of its children
+ will not change. If you manually change the x or y properties in script, bind
+ the x or y properties, or use anchors on a child of a positioner, then the
+ positioner may exhibit strange behaviour.
*/
/*!
@@ -539,6 +543,11 @@ Row {
\endqml
\image horizontalpositioner_example.png
+ Note that the positioner assumes that the x and y positions of its children
+ will not change. If you manually change the x or y properties in script, bind
+ the x or y properties, or use anchors on a child of a positioner, then the
+ positioner may exhibit strange behaviour.
+
*/
/*!
\qmlproperty Transition Row::remove
@@ -659,7 +668,7 @@ void QFxRow::doPositioning()
child->setX(hoffset);
setMovingItem(0);
}
- if(!child->width() || !child->height()){//don't advance for invisible children
+ if(child->width() && child->height()){//don't advance for invisible children
hoffset += child->width();
hoffset += spacing();
}
@@ -707,6 +716,11 @@ Grid {
}
\endqml
\endtable
+
+ Note that the positioner assumes that the x and y positions of its children
+ will not change. If you manually change the x or y properties in script, bind
+ the x or y properties, or use anchors on a child of a positioner, then the
+ positioner may exhibit strange behaviour.
*/
/*!
\qmlproperty Transition Grid::remove
diff --git a/src/declarative/fx/qfxtext.cpp b/src/declarative/fx/qfxtext.cpp
index 4d02f0d..4a01cbd 100644
--- a/src/declarative/fx/qfxtext.cpp
+++ b/src/declarative/fx/qfxtext.cpp
@@ -231,9 +231,9 @@ QColor QFxText::color() const
\qml
Row {
Text { font.pointSize: 24; text: "Normal" }
- Text { font.pointSize: 24; text: "Raised"; style: "Raised"; styleColor: "#AAAAAA" }
- Text { font.pointSize: 24; text: "Outline"; style: "Outline"; styleColor: "red" }
- Text { font.pointSize: 24; text: "Sunken"; style: "Sunken"; styleColor: "#AAAAAA" }
+ Text { font.pointSize: 24; text: "Raised"; style: Text.Raised; styleColor: "#AAAAAA" }
+ Text { font.pointSize: 24; text: "Outline"; style: Text.Outline; styleColor: "red" }
+ Text { font.pointSize: 24; text: "Sunken"; style: Text.Sunken; styleColor: "#AAAAAA" }
}
\endqml
@@ -420,28 +420,28 @@ void QFxText::setTextFormat(TextFormat format)
}
/*!
- \qmlproperty Qt::TextElideMode Text::elide
+ \qmlproperty enumeration Text::elide
Set this property to elide parts of the text fit to the Text item's width.
The text will only elide if an explicit width has been set.
This property cannot be used with wrap enabled or with rich text.
- Eliding can be ElideNone (the default), ElideLeft, ElideMiddle, or ElideRight.
+ Eliding can be \c ElideNone (the default), \c ElideLeft, \c ElideMiddle, or \c ElideRight.
- If the text is a multi-length string, and the mode is not ElideNone,
+ If the text is a multi-length string, and the mode is not \c ElideNone,
the first string that fits will be used, otherwise the last will be elided.
Multi-length strings are ordered from longest to shortest, separated by the
- Unicode "String Terminator" character U009C (write this in QML with "\\x9C").
+ Unicode "String Terminator" character \c U009C (write this in QML with \c{"\\x9C"}).
*/
-Qt::TextElideMode QFxText::elideMode() const
+QFxText::TextElideMode QFxText::elideMode() const
{
Q_D(const QFxText);
return d->elideMode;
}
-void QFxText::setElideMode(Qt::TextElideMode mode)
+void QFxText::setElideMode(QFxText::TextElideMode mode)
{
Q_D(QFxText);
if (mode == d->elideMode)
@@ -458,7 +458,7 @@ void QFxText::geometryChanged(const QRectF &newGeometry,
{
Q_D(QFxText);
if (newGeometry.width() != oldGeometry.width()) {
- if (d->wrap || d->elideMode != Qt::ElideNone) {
+ if (d->wrap || d->elideMode != QFxText::ElideNone) {
d->imgDirty = true;
d->updateSize();
}
@@ -486,8 +486,8 @@ void QFxTextPrivate::updateSize()
tmp = text;
tmp.replace(QLatin1Char('\n'), QChar::LineSeparator);
singleline = !tmp.contains(QChar::LineSeparator);
- if (singleline && elideMode != Qt::ElideNone && q->widthValid())
- tmp = fm.elidedText(tmp,elideMode,q->width()); // XXX still worth layout...?
+ if (singleline && elideMode != QFxText::ElideNone && q->widthValid())
+ tmp = fm.elidedText(tmp,(Qt::TextElideMode)elideMode,q->width()); // XXX still worth layout...?
layout.clearLayout();
layout.setFont(font);
layout.setText(tmp);
@@ -586,7 +586,7 @@ QSize QFxTextPrivate::setupTextLayout(QTextLayout *layout)
qreal lineWidth = 0;
//set manual width
- if ((wrap || elideMode != Qt::ElideNone) && q->widthValid())
+ if ((wrap || elideMode != QFxText::ElideNone) && q->widthValid())
lineWidth = q->width();
layout->beginLayout();
@@ -596,7 +596,7 @@ QSize QFxTextPrivate::setupTextLayout(QTextLayout *layout)
if (!line.isValid())
break;
- if ((wrap || elideMode != Qt::ElideNone) && q->widthValid())
+ if ((wrap || elideMode != QFxText::ElideNone) && q->widthValid())
line.setLineWidth(lineWidth);
}
layout->endLayout();
diff --git a/src/declarative/fx/qfxtext.h b/src/declarative/fx/qfxtext.h
index 763e2aa..cdb8025 100644
--- a/src/declarative/fx/qfxtext.h
+++ b/src/declarative/fx/qfxtext.h
@@ -57,6 +57,7 @@ class Q_DECLARATIVE_EXPORT QFxText : public QFxItem
Q_ENUMS(VAlignment)
Q_ENUMS(TextStyle)
Q_ENUMS(TextFormat)
+ Q_ENUMS(TextElideMode)
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
Q_PROPERTY(QFont font READ font WRITE setFont)
@@ -67,7 +68,7 @@ class Q_DECLARATIVE_EXPORT QFxText : public QFxItem
Q_PROPERTY(VAlignment verticalAlignment READ vAlign WRITE setVAlign)
Q_PROPERTY(bool wrap READ wrap WRITE setWrap) //### there are several wrap modes in Qt
Q_PROPERTY(TextFormat textFormat READ textFormat WRITE setTextFormat)
- Q_PROPERTY(Qt::TextElideMode elide READ elideMode WRITE setElideMode) //### elideMode?
+ Q_PROPERTY(TextElideMode elide READ elideMode WRITE setElideMode) //### elideMode?
public:
QFxText(QFxItem *parent=0);
@@ -84,8 +85,12 @@ public:
Raised,
Sunken };
enum TextFormat { PlainText = Qt::PlainText,
- RichText = Qt::RichText,
- AutoText = Qt::AutoText };
+ RichText = Qt::RichText,
+ AutoText = Qt::AutoText };
+ enum TextElideMode { ElideLeft = Qt::ElideLeft,
+ ElideRight = Qt::ElideRight,
+ ElideMiddle = Qt::ElideMiddle,
+ ElideNone = Qt::ElideNone };
QString text() const;
void setText(const QString &);
@@ -114,8 +119,8 @@ public:
TextFormat textFormat() const;
void setTextFormat(TextFormat format);
- Qt::TextElideMode elideMode() const;
- void setElideMode(Qt::TextElideMode);
+ TextElideMode elideMode() const;
+ void setElideMode(TextElideMode);
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
diff --git a/src/declarative/fx/qfxtext_p.h b/src/declarative/fx/qfxtext_p.h
index 8b24c66..a10cdfa 100644
--- a/src/declarative/fx/qfxtext_p.h
+++ b/src/declarative/fx/qfxtext_p.h
@@ -70,7 +70,7 @@ class QFxTextPrivate : public QFxItemPrivate
public:
QFxTextPrivate()
: color((QRgb)0), style(QFxText::Normal), imgDirty(true),
- hAlign(QFxText::AlignLeft), vAlign(QFxText::AlignTop), elideMode(Qt::ElideNone),
+ hAlign(QFxText::AlignLeft), vAlign(QFxText::AlignTop), elideMode(QFxText::ElideNone),
dirty(true), wrap(false), richText(false), singleline(false), control(0), doc(0),
format(QFxText::AutoText)
{
@@ -97,7 +97,7 @@ public:
QPixmap imgStyleCache;
QFxText::HAlignment hAlign;
QFxText::VAlignment vAlign;
- Qt::TextElideMode elideMode;
+ QFxText::TextElideMode elideMode;
bool dirty;
bool wrap;
bool richText;
diff --git a/src/declarative/qml/qmlbinding.cpp b/src/declarative/qml/qmlbinding.cpp
index 65ff789..317a4b3 100644
--- a/src/declarative/qml/qmlbinding.cpp
+++ b/src/declarative/qml/qmlbinding.cpp
@@ -58,10 +58,46 @@ QT_BEGIN_NAMESPACE
QML_DEFINE_NOCREATE_TYPE(QmlBinding);
QmlBindingData::QmlBindingData()
-: updating(false), enabled(false)
+: updating(false), enabled(false), nextError(0), prevError(0)
{
}
+QmlBindingData::~QmlBindingData()
+{
+ removeError();
+}
+
+void QmlBindingData::removeError()
+{
+ if (!prevError) return;
+
+ if (nextError) nextError->prevError = prevError;
+ *prevError = nextError;
+ nextError = 0;
+ prevError = 0;
+}
+
+bool QmlBindingData::addError()
+{
+ if (prevError) return false;
+
+ QmlContext *c = context();
+ if (!c) return false;
+ QmlEngine *e = c->engine();
+ if (!e) return false;
+
+ QmlEnginePrivate *p = QmlEnginePrivate::get(e);
+
+ if (p->inProgressCreations == 0) return false; // Not in construction
+
+ prevError = &p->erroredBindings;
+ nextError = p->erroredBindings;
+ p->erroredBindings = this;
+ if (nextError) nextError->prevError = &nextError;
+
+ return true;
+}
+
QmlBindingPrivate::QmlBindingPrivate()
: QmlExpressionPrivate(new QmlBindingData)
{
@@ -128,10 +164,12 @@ void QmlBinding::update(QmlMetaProperty::WriteFlags flags)
idx, a);
} else {
- bool undefined = false;
- QVariant value = this->value(&undefined);
+ bool isUndefined = false;
+ QVariant value = this->value(&isUndefined);
+
+ if (!isUndefined && data->property.object() &&
+ !data->property.write(value, flags)) {
- if (!undefined && data->property.object() && !data->property.write(value, flags)) {
QString fileName = data->fileName;
int line = data->line;
if (fileName.isEmpty()) fileName = QLatin1String("<Unknown File>");
@@ -139,9 +177,21 @@ void QmlBinding::update(QmlMetaProperty::WriteFlags flags)
const char *valueType = 0;
if (value.userType() == QVariant::Invalid) valueType = "null";
else valueType = QMetaType::typeName(value.userType());
- qWarning().nospace() << qPrintable(fileName) << ":" << line
- << " Unable to assign " << valueType << " to "
- << QMetaType::typeName(data->property.propertyType());
+
+ data->error.setUrl(fileName);
+ data->error.setLine(line);
+ data->error.setColumn(-1);
+ data->error.setDescription(QLatin1String("Unable to assign ") +
+ QLatin1String(valueType) +
+ QLatin1String(" to ") +
+ QLatin1String(QMetaType::typeName(data->property.propertyType())));
+ }
+
+ if (data->error.isValid()) {
+ if (!data->addError())
+ qWarning().nospace() << qPrintable(this->error().toString());
+ } else {
+ data->removeError();
}
}
diff --git a/src/declarative/qml/qmlbinding_p.h b/src/declarative/qml/qmlbinding_p.h
index 2c0c6b9..c9378cb 100644
--- a/src/declarative/qml/qmlbinding_p.h
+++ b/src/declarative/qml/qmlbinding_p.h
@@ -63,11 +63,17 @@ class QmlBindingData : public QmlExpressionData
{
public:
QmlBindingData();
+ virtual ~QmlBindingData();
bool updating:1;
bool enabled:1;
QmlMetaProperty property;
+
+ void removeError();
+ bool addError();
+ QmlBindingData *nextError;
+ QmlBindingData **prevError;
};
class QmlBindingPrivate : public QmlExpressionPrivate
diff --git a/src/declarative/qml/qmlboundsignal.cpp b/src/declarative/qml/qmlboundsignal.cpp
index ce591e8..d715309 100644
--- a/src/declarative/qml/qmlboundsignal.cpp
+++ b/src/declarative/qml/qmlboundsignal.cpp
@@ -175,8 +175,11 @@ int QmlBoundSignal::qt_metacall(QMetaObject::Call c, int id, void **a)
{
if (c == QMetaObject::InvokeMetaMethod && id == evaluateIdx) {
if (m_params) m_params->setValues(a);
- if (m_expression)
+ if (m_expression) {
QmlExpressionPrivate::get(m_expression)->value(m_params);
+ if (m_expression->hasError())
+ qWarning().nospace() << qPrintable(m_expression->error().toString());
+ }
if (m_params) m_params->clearValues();
return -1;
} else {
diff --git a/src/declarative/qml/qmlcomponent.cpp b/src/declarative/qml/qmlcomponent.cpp
index 1e3a082..bd2d1d0 100644
--- a/src/declarative/qml/qmlcomponent.cpp
+++ b/src/declarative/qml/qmlcomponent.cpp
@@ -55,6 +55,7 @@
#include "qmlbinding.h"
#include <QtCore/qdebug.h>
#include <QApplication>
+#include <private/qmlbinding_p.h>
#include "qmlscriptparser_p.h"
@@ -197,6 +198,12 @@ QmlComponent::QmlComponent(QObject *parent)
QmlComponent::~QmlComponent()
{
Q_D(QmlComponent);
+
+ if (d->completePending) {
+ qWarning("QmlComponent: Component destroyed while completion pending");
+ d->completeCreate();
+ }
+
if (d->typeData) {
d->typeData->remWaiter(d);
d->typeData->release();
@@ -585,8 +592,10 @@ QmlComponentPrivate::beginCreate(QmlContext *context, const QBitField &bindings)
ep->bindValues.clear();
ep->parserStatus.clear();
completePending = true;
+ QmlEnginePrivate::get(engine)->inProgressCreations++;
}
+
if (rv) {
QFx_setParent_noEvent(ctxt, rv);
} else {
@@ -654,6 +663,14 @@ void QmlComponentPrivate::completeCreate()
bindValues.clear();
parserStatus.clear();
completePending = false;
+ QmlEnginePrivate *p = QmlEnginePrivate::get(engine);
+ p->inProgressCreations--;
+ if (0 == p->inProgressCreations) {
+ while (p->erroredBindings) {
+ qWarning().nospace() << qPrintable(p->erroredBindings->error.toString());
+ p->erroredBindings->removeError();
+ }
+ }
}
}
diff --git a/src/declarative/qml/qmlcontext.cpp b/src/declarative/qml/qmlcontext.cpp
index 2ebdf10..5032ff4 100644
--- a/src/declarative/qml/qmlcontext.cpp
+++ b/src/declarative/qml/qmlcontext.cpp
@@ -77,8 +77,11 @@ void QmlContextPrivate::addScript(const QString &script, QObject *scopeObject,
QScriptValue val = scriptEngine->evaluate(script, fileName, lineNumber);
- if (scriptEngine->hasUncaughtException())
- QmlExpressionPrivate::printException(scriptEngine);
+ if (scriptEngine->hasUncaughtException()) {
+ QmlError error;
+ QmlExpressionPrivate::exceptionToError(scriptEngine, error);
+ qWarning().nospace() << qPrintable(error.toString());
+ }
scriptEngine->popContext();
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp
index 0e239ce..3da8aa9 100644
--- a/src/declarative/qml/qmlengine.cpp
+++ b/src/declarative/qml/qmlengine.cpp
@@ -126,8 +126,9 @@ static QString userLocalDataPath(const QString& app)
QmlEnginePrivate::QmlEnginePrivate(QmlEngine *e)
: rootContext(0), currentExpression(0),
isDebugging(false), contextClass(0), objectClass(0), valueTypeClass(0), globalClass(0),
- nodeListClass(0), namedNodeMapClass(0), sqlQueryClass(0), cleanup(0), scriptEngine(this),
- componentAttacheds(0), rootComponent(0), networkAccessManager(0), typeManager(e), uniqueId(1)
+ nodeListClass(0), namedNodeMapClass(0), sqlQueryClass(0), cleanup(0), erroredBindings(0),
+ inProgressCreations(0), scriptEngine(this), componentAttacheds(0), rootComponent(0),
+ networkAccessManager(0), typeManager(e), uniqueId(1)
{
QScriptValue qtObject =
scriptEngine.newQMetaObject(StaticQtMetaObject::get());
diff --git a/src/declarative/qml/qmlengine_p.h b/src/declarative/qml/qmlengine_p.h
index 69b121e..efd26bf 100644
--- a/src/declarative/qml/qmlengine_p.h
+++ b/src/declarative/qml/qmlengine_p.h
@@ -98,6 +98,7 @@ class QmlTypeNameCache;
class QmlComponentAttached;
class QmlListScriptClass;
class QmlCleanup;
+class QmlBindingData;
class QmlEnginePrivate : public QObjectPrivate
{
@@ -143,6 +144,10 @@ public:
// Registered cleanup handlers
QmlCleanup *cleanup;
+ // Bindings that have had errors during startup
+ QmlBindingData *erroredBindings;
+ int inProgressCreations;
+
struct QmlScriptEngine : public QScriptEngine
{
QmlScriptEngine(QmlEnginePrivate *priv)
diff --git a/src/declarative/qml/qmlenginedebug.cpp b/src/declarative/qml/qmlenginedebug.cpp
index 664ca3f..63be6b0 100644
--- a/src/declarative/qml/qmlenginedebug.cpp
+++ b/src/declarative/qml/qmlenginedebug.cpp
@@ -57,8 +57,8 @@ QmlEngineDebugServer::QmlEngineDebugServer(QObject *parent)
: QmlDebugService(QLatin1String("QmlEngine"), parent),
m_watch(new QmlWatcher(this))
{
- QObject::connect(m_watch, SIGNAL(propertyChanged(int,int,QByteArray,QVariant)),
- this, SLOT(propertyChanged(int,int,QByteArray,QVariant)));
+ QObject::connect(m_watch, SIGNAL(propertyChanged(int,int,QMetaProperty,QVariant)),
+ this, SLOT(propertyChanged(int,int,QMetaProperty,QVariant)));
}
QDataStream &operator<<(QDataStream &ds,
@@ -110,9 +110,11 @@ QmlEngineDebugServer::propertyData(QObject *obj, int propIdx)
if (binding)
rv.binding = binding->expression();
+ QVariant value = prop.read(obj);
+ rv.value = valueContents(value);
+
if (prop.type() < QVariant::UserType) {
rv.type = QmlObjectProperty::Basic;
- rv.value = prop.read(obj);
} else if (QmlMetaType::isObject(prop.userType())) {
rv.type = QmlObjectProperty::Object;
} else if (QmlMetaType::isList(prop.userType()) ||
@@ -123,6 +125,32 @@ QmlEngineDebugServer::propertyData(QObject *obj, int propIdx)
return rv;
}
+QVariant QmlEngineDebugServer::valueContents(const QVariant &value) const
+{
+ if (value.type() < QVariant::UserType)
+ return value;
+
+ int userType = value.userType();
+
+ if (QmlMetaType::isList(userType) || QmlMetaType::isQmlList(userType)) {
+ int count = QmlMetaType::listCount(value);
+ QVariantList contents;
+ for (int i=0; i<count; i++)
+ contents << valueContents(QmlMetaType::listAt(value, i));
+ return contents;
+ } else if (QmlMetaType::isObject(userType)) {
+ QObject *o = QmlMetaType::toQObject(value);
+ if (o) {
+ QString name = o->objectName();
+ if (name.isEmpty())
+ name = QLatin1String("<unnamed>");
+ return name;
+ }
+ }
+
+ return QLatin1String("<unknown value>");
+}
+
void QmlEngineDebugServer::buildObjectDump(QDataStream &message,
QObject *object, bool recur)
{
@@ -188,32 +216,6 @@ void QmlEngineDebugServer::buildObjectList(QDataStream &message,
}
}
-QVariant QmlEngineDebugServer::serializableVariant(const QVariant &value)
-{
- if (value.type() < QVariant::UserType)
- return value;
-
- if (!value.toString().isEmpty())
- return value.toString();
-
- QVariant v;
- if (value.type() == QVariant::UserType || QmlMetaType::isObject(value.userType())) {
- QObject *o = QmlMetaType::toQObject(value);
- if (o) {
- QString objectName = o->objectName();
- if (objectName.isEmpty())
- objectName = QLatin1String("<unnamed>");
- v = QString::fromUtf8(o->metaObject()->className()) +
- QLatin1String(": ") + objectName;
- }
- }
-
- if (v.isNull())
- v = QString::fromUtf8(value.typeName());
-
- return v;
-}
-
QmlEngineDebugServer::QmlObjectData
QmlEngineDebugServer::objectData(QObject *object)
{
@@ -357,7 +359,7 @@ void QmlEngineDebugServer::messageReceived(const QByteArray &message)
if (undefined)
result = QLatin1String("<undefined>");
else
- result = serializableVariant(value);
+ result = valueContents(value);
delete exprObj;
} else {
result = QLatin1String("<unknown context>");
@@ -371,13 +373,12 @@ void QmlEngineDebugServer::messageReceived(const QByteArray &message)
}
}
-void QmlEngineDebugServer::propertyChanged(int id, int objectId, const QByteArray &property, const QVariant &value)
+void QmlEngineDebugServer::propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value)
{
QByteArray reply;
- QVariant v = serializableVariant(value);
QDataStream rs(&reply, QIODevice::WriteOnly);
- rs << QByteArray("UPDATE_WATCH") << id << objectId << property << v;
+ rs << QByteArray("UPDATE_WATCH") << id << objectId << QString::fromUtf8(property.name()) << valueContents(value);
sendMessage(reply);
}
diff --git a/src/declarative/qml/qmlenginedebug_p.h b/src/declarative/qml/qmlenginedebug_p.h
index 075a711..a8572eb 100644
--- a/src/declarative/qml/qmlenginedebug_p.h
+++ b/src/declarative/qml/qmlenginedebug_p.h
@@ -97,14 +97,14 @@ protected:
virtual void messageReceived(const QByteArray &);
private Q_SLOTS:
- void propertyChanged(int id, int objectId, const QByteArray &property, const QVariant &value);
+ void propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value);
private:
void buildObjectList(QDataStream &, QmlContext *);
void buildObjectDump(QDataStream &, QObject *, bool);
QmlObjectData objectData(QObject *);
QmlObjectProperty propertyData(QObject *, int);
- QVariant serializableVariant(const QVariant &value);
+ QVariant valueContents(const QVariant &defaultValue) const;
static QList<QmlEngine *> m_engines;
QmlWatcher *m_watch;
diff --git a/src/declarative/qml/qmlerror.cpp b/src/declarative/qml/qmlerror.cpp
index 514fe44..f4c9580 100644
--- a/src/declarative/qml/qmlerror.cpp
+++ b/src/declarative/qml/qmlerror.cpp
@@ -70,7 +70,7 @@ QmlErrorPrivate::QmlErrorPrivate()
Create an empty error object.
*/
QmlError::QmlError()
-: d(new QmlErrorPrivate)
+: d(0)
{
}
@@ -78,7 +78,7 @@ QmlError::QmlError()
Create a copy of \a other.
*/
QmlError::QmlError(const QmlError &other)
-: d(new QmlErrorPrivate)
+: d(0)
{
*this = other;
}
@@ -88,10 +88,16 @@ QmlError::QmlError(const QmlError &other)
*/
QmlError &QmlError::operator=(const QmlError &other)
{
- d->url = other.d->url;
- d->description = other.d->description;
- d->line = other.d->line;
- d->column = other.d->column;
+ if (!other.d) {
+ delete d;
+ d = 0;
+ } else {
+ if (!d) d = new QmlErrorPrivate;
+ d->url = other.d->url;
+ d->description = other.d->description;
+ d->line = other.d->line;
+ d->column = other.d->column;
+ }
return *this;
}
@@ -104,11 +110,20 @@ QmlError::~QmlError()
}
/*!
+ Return true if this error is valid, otherwise false.
+*/
+bool QmlError::isValid() const
+{
+ return d != 0;
+}
+
+/*!
Return the url for the file that caused this error.
*/
QUrl QmlError::url() const
{
- return d->url;
+ if (d) return d->url;
+ else return QUrl();
}
/*!
@@ -116,6 +131,7 @@ QUrl QmlError::url() const
*/
void QmlError::setUrl(const QUrl &url)
{
+ if (!d) d = new QmlErrorPrivate;
d->url = url;
}
@@ -124,7 +140,8 @@ void QmlError::setUrl(const QUrl &url)
*/
QString QmlError::description() const
{
- return d->description;
+ if (d) return d->description;
+ else return QString();
}
/*!
@@ -132,6 +149,7 @@ QString QmlError::description() const
*/
void QmlError::setDescription(const QString &description)
{
+ if (!d) d = new QmlErrorPrivate;
d->description = description;
}
@@ -140,7 +158,8 @@ void QmlError::setDescription(const QString &description)
*/
int QmlError::line() const
{
- return d->line;
+ if (d) return d->line;
+ else return -1;
}
/*!
@@ -148,6 +167,7 @@ int QmlError::line() const
*/
void QmlError::setLine(int line)
{
+ if (!d) d = new QmlErrorPrivate;
d->line = line;
}
@@ -156,7 +176,8 @@ void QmlError::setLine(int line)
*/
int QmlError::column() const
{
- return d->column;
+ if (d) return d->column;
+ else return -1;
}
/*!
@@ -164,6 +185,7 @@ int QmlError::column() const
*/
void QmlError::setColumn(int column)
{
+ if (!d) d = new QmlErrorPrivate;
d->column = column;
}
diff --git a/src/declarative/qml/qmlerror.h b/src/declarative/qml/qmlerror.h
index c1a8720..ee3d7b4 100644
--- a/src/declarative/qml/qmlerror.h
+++ b/src/declarative/qml/qmlerror.h
@@ -61,6 +61,8 @@ public:
QmlError &operator=(const QmlError &);
~QmlError();
+ bool isValid() const;
+
QUrl url() const;
void setUrl(const QUrl &);
QString description() const;
diff --git a/src/declarative/qml/qmlexpression.cpp b/src/declarative/qml/qmlexpression.cpp
index c62756b..e5e5cf9 100644
--- a/src/declarative/qml/qmlexpression.cpp
+++ b/src/declarative/qml/qmlexpression.cpp
@@ -260,7 +260,8 @@ QVariant QmlExpressionPrivate::evalSSE()
return rv;
}
-void QmlExpressionPrivate::printException(QScriptEngine *scriptEngine)
+void QmlExpressionPrivate::exceptionToError(QScriptEngine *scriptEngine,
+ QmlError &error)
{
if (scriptEngine->hasUncaughtException() &&
scriptEngine->uncaughtException().isError()) {
@@ -277,8 +278,12 @@ void QmlExpressionPrivate::printException(QScriptEngine *scriptEngine)
fileName = QLatin1String("<Unknown File>");
}
- qWarning().nospace() << qPrintable(fileName) << ":" << lineNumber << ": "
- << qPrintable(exception.toString());
+ error.setUrl(QUrl(fileName));
+ error.setLine(lineNumber);
+ error.setColumn(-1);
+ error.setDescription(exception.toString());
+ } else {
+ error = QmlError();
}
}
@@ -288,6 +293,7 @@ QVariant QmlExpressionPrivate::evalQtScript(QObject *secondaryScope, bool *isUnd
QFxPerfTimer<QFxPerf::BindValueQt> perfqt;
#endif
+ QmlExpressionData *data = this->data;
QmlContextPrivate *ctxtPriv = data->context()->d_func();
QmlEngine *engine = data->context()->engine();
QmlEnginePrivate *ep = QmlEnginePrivate::get(engine);
@@ -321,10 +327,13 @@ QVariant QmlExpressionPrivate::evalQtScript(QObject *secondaryScope, bool *isUnd
if (isUndefined)
*isUndefined = svalue.isUndefined() || scriptEngine->hasUncaughtException();
+ // Handle exception
if (scriptEngine->hasUncaughtException()) {
- printException(scriptEngine);
+ exceptionToError(scriptEngine, data->error);
scriptEngine->clearExceptions();
return QVariant();
+ } else {
+ data->error = QmlError();
}
if (secondaryScope) {
@@ -418,6 +427,8 @@ QVariant QmlExpressionPrivate::value(QObject *secondaryScope, bool *isUndefined)
\a isUndefined is set to true if the expression resulted in an
undefined value.
+
+ \sa hasError(), error()
*/
QVariant QmlExpression::value(bool *isUndefined)
{
@@ -509,6 +520,43 @@ QObject *QmlExpression::scopeObject() const
return d->data->me;
}
+/*!
+ Returns true if the last call to value() resulted in an error,
+ otherwise false.
+
+ \sa error(), clearError()
+*/
+bool QmlExpression::hasError() const
+{
+ Q_D(const QmlExpression);
+ return d->data->error.isValid();
+}
+
+/*!
+ Clear any expression errors. Calls to hasError() following this will
+ return false.
+
+ \sa hasError(), error()
+*/
+void QmlExpression::clearError()
+{
+ Q_D(QmlExpression);
+ d->data->error = QmlError();
+}
+
+/*!
+ Return any error from the last call to value(). If there was no error,
+ this returns an invalid QmlError instance.
+
+ \sa hasError(), clearError()
+*/
+
+QmlError QmlExpression::error() const
+{
+ Q_D(const QmlExpression);
+ return d->data->error;
+}
+
/*! \internal */
void QmlExpression::__q_notify()
{
diff --git a/src/declarative/qml/qmlexpression.h b/src/declarative/qml/qmlexpression.h
index 96694d6..127d3f3 100644
--- a/src/declarative/qml/qmlexpression.h
+++ b/src/declarative/qml/qmlexpression.h
@@ -44,6 +44,7 @@
#include <QtCore/qobject.h>
#include <QtCore/qvariant.h>
+#include <QtDeclarative/qmlerror.h>
QT_BEGIN_HEADER
@@ -82,6 +83,10 @@ public:
QObject *scopeObject() const;
+ bool hasError() const;
+ void clearError();
+ QmlError error() const;
+
public Q_SLOTS:
QVariant value(bool *isUndefined = 0);
diff --git a/src/declarative/qml/qmlexpression_p.h b/src/declarative/qml/qmlexpression_p.h
index 3ec8d1c..4e13de3 100644
--- a/src/declarative/qml/qmlexpression_p.h
+++ b/src/declarative/qml/qmlexpression_p.h
@@ -83,7 +83,7 @@ class QmlExpressionData : public QmlAbstractExpression, public QmlRefCount
{
public:
QmlExpressionData();
- ~QmlExpressionData();
+ virtual ~QmlExpressionData();
QmlExpressionPrivate *q;
@@ -92,6 +92,8 @@ public:
bool expressionRewritten:1;
QScriptValue expressionFunction;
+ QmlError error;
+
QmlBasicScript sse;
QObject *me;
bool trackChange;
@@ -151,7 +153,7 @@ public:
return static_cast<QmlExpressionPrivate *>(QObjectPrivate::get(expr));
}
- static void printException(QScriptEngine *);
+ static void exceptionToError(QScriptEngine *, QmlError &);
};
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qmlwatcher.cpp b/src/declarative/qml/qmlwatcher.cpp
index ca99472..8cd51e0 100644
--- a/src/declarative/qml/qmlwatcher.cpp
+++ b/src/declarative/qml/qmlwatcher.cpp
@@ -112,7 +112,7 @@ void QmlWatchProxy::notifyValueChanged()
else
v = m_property.read(m_object);
- emit m_watch->propertyChanged(m_id, m_debugId, QByteArray(m_property.name()), v);
+ emit m_watch->propertyChanged(m_id, m_debugId, m_property, v);
}
diff --git a/src/declarative/qml/qmlwatcher_p.h b/src/declarative/qml/qmlwatcher_p.h
index 99cae88..0bfcd71 100644
--- a/src/declarative/qml/qmlwatcher_p.h
+++ b/src/declarative/qml/qmlwatcher_p.h
@@ -65,6 +65,7 @@ QT_BEGIN_NAMESPACE
class QmlWatchProxy;
class QmlExpression;
class QmlContext;
+class QMetaProperty;
class QmlWatcher : public QObject
{
@@ -79,7 +80,7 @@ public:
void removeWatch(int id);
Q_SIGNALS:
- void propertyChanged(int id, int objectId, const QByteArray &property, const QVariant &value);
+ void propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value);
private:
friend class QmlWatchProxy;
diff --git a/tests/auto/declarative/anchors/anchors.pro b/tests/auto/declarative/anchors/anchors.pro
index 7b22cfb..1e25a90 100644
--- a/tests/auto/declarative/anchors/anchors.pro
+++ b/tests/auto/declarative/anchors/anchors.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_anchors.cpp
+macx:CONFIG -= app_bundle
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/animatedimage/animatedimage.pro b/tests/auto/declarative/animatedimage/animatedimage.pro
index 8a92863..4ff9db4 100644
--- a/tests/auto/declarative/animatedimage/animatedimage.pro
+++ b/tests/auto/declarative/animatedimage/animatedimage.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_animatedimage.cpp
+macx:CONFIG -= app_bundle
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/animations/animations.pro b/tests/auto/declarative/animations/animations.pro
index 419da4e..e13ecb9 100644
--- a/tests/auto/declarative/animations/animations.pro
+++ b/tests/auto/declarative/animations/animations.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_animations.cpp
+macx:CONFIG -= app_bundle
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/behaviors/behaviors.pro b/tests/auto/declarative/behaviors/behaviors.pro
index c96d2c0..8886b0c 100644
--- a/tests/auto/declarative/behaviors/behaviors.pro
+++ b/tests/auto/declarative/behaviors/behaviors.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_behaviors.cpp
+macx:CONFIG -= app_bundle
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/datetimeformatter/datetimeformatter.pro b/tests/auto/declarative/datetimeformatter/datetimeformatter.pro
index e3d6cd0..62eb303 100644
--- a/tests/auto/declarative/datetimeformatter/datetimeformatter.pro
+++ b/tests/auto/declarative/datetimeformatter/datetimeformatter.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_datetimeformatter.cpp
diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro
index b51e285..b9ab3ca 100644
--- a/tests/auto/declarative/declarative.pro
+++ b/tests/auto/declarative/declarative.pro
@@ -1,12 +1,14 @@
TEMPLATE = subdirs
SUBDIRS += anchors \
+ animatedimage \
animations \
+ behaviors \
datetimeformatter \
+ examples \
layouts \
listview \
numberformatter \
pathview \
- qbindablemap \
qfxloader \
qfxpixmapcache \
qfxtext \
@@ -19,6 +21,7 @@ SUBDIRS += anchors \
qmllist \
qmllistaccessor \
qmlmetaproperty \
+ qmlpropertymap \
qmltimer \
repeater \
sql \
diff --git a/tests/auto/declarative/examples/examples.pro b/tests/auto/declarative/examples/examples.pro
index c50018e..b9bcd28 100644
--- a/tests/auto/declarative/examples/examples.pro
+++ b/tests/auto/declarative/examples/examples.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
-SOURCES += tst_examples.cpp
macx:CONFIG -= app_bundle
+
+SOURCES += tst_examples.cpp
diff --git a/tests/auto/declarative/layouts/layouts.pro b/tests/auto/declarative/layouts/layouts.pro
index f7e7622..f38e155 100644
--- a/tests/auto/declarative/layouts/layouts.pro
+++ b/tests/auto/declarative/layouts/layouts.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
SOURCES += tst_layouts.cpp
+macx:CONFIG -= app_bundle
# Define SRCDIR equal to test's source directory
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/listview/listview.pro b/tests/auto/declarative/listview/listview.pro
index bf68268..23b0706 100644
--- a/tests/auto/declarative/listview/listview.pro
+++ b/tests/auto/declarative/listview/listview.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_listview.cpp
# Define SRCDIR equal to test's source directory
diff --git a/tests/auto/declarative/numberformatter/numberformatter.pro b/tests/auto/declarative/numberformatter/numberformatter.pro
index ba391ed..ed7ef22 100644
--- a/tests/auto/declarative/numberformatter/numberformatter.pro
+++ b/tests/auto/declarative/numberformatter/numberformatter.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_numberformatter.cpp
diff --git a/tests/auto/declarative/pathview/pathview.pro b/tests/auto/declarative/pathview/pathview.pro
index 28bbe49..bddd1e6 100644
--- a/tests/auto/declarative/pathview/pathview.pro
+++ b/tests/auto/declarative/pathview/pathview.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_pathview.cpp
# Define SRCDIR equal to test's source directory
diff --git a/tests/auto/declarative/qfxloader/qfxloader.pro b/tests/auto/declarative/qfxloader/qfxloader.pro
index 643c18c..aee52cc 100644
--- a/tests/auto/declarative/qfxloader/qfxloader.pro
+++ b/tests/auto/declarative/qfxloader/qfxloader.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qfxloader.cpp
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qfxpixmapcache/qfxpixmapcache.pro b/tests/auto/declarative/qfxpixmapcache/qfxpixmapcache.pro
index e9b0417..218eeff 100644
--- a/tests/auto/declarative/qfxpixmapcache/qfxpixmapcache.pro
+++ b/tests/auto/declarative/qfxpixmapcache/qfxpixmapcache.pro
@@ -1,9 +1,9 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
QT += network
-SOURCES += tst_qfxpixmapcache.cpp
-HEADERS =
macx:CONFIG -= app_bundle
+SOURCES += tst_qfxpixmapcache.cpp
+
# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage
# LIBS += -lgcov
diff --git a/tests/auto/declarative/qfxtext/qfxtext.pro b/tests/auto/declarative/qfxtext/qfxtext.pro
index f705334..1f3fe37 100644
--- a/tests/auto/declarative/qfxtext/qfxtext.pro
+++ b/tests/auto/declarative/qfxtext/qfxtext.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qfxtext.cpp
diff --git a/tests/auto/declarative/qfxtextedit/qfxtextedit.pro b/tests/auto/declarative/qfxtextedit/qfxtextedit.pro
index 90546a4..b5e0464 100644
--- a/tests/auto/declarative/qfxtextedit/qfxtextedit.pro
+++ b/tests/auto/declarative/qfxtextedit/qfxtextedit.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qfxtextedit.cpp
# Define SRCDIR equal to test's source directory
diff --git a/tests/auto/declarative/qfxtextinput/qfxtextinput.pro b/tests/auto/declarative/qfxtextinput/qfxtextinput.pro
index 396e66d..fe2e3e3 100644
--- a/tests/auto/declarative/qfxtextinput/qfxtextinput.pro
+++ b/tests/auto/declarative/qfxtextinput/qfxtextinput.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qfxtextinput.cpp
# Define SRCDIR equal to test's source directory
diff --git a/tests/auto/declarative/qfxwebview/qfxwebview.pro b/tests/auto/declarative/qfxwebview/qfxwebview.pro
index ee78950..b75e057 100644
--- a/tests/auto/declarative/qfxwebview/qfxwebview.pro
+++ b/tests/auto/declarative/qfxwebview/qfxwebview.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qfxwebview.cpp
# Define SRCDIR equal to test's source directory
diff --git a/tests/auto/declarative/qmldom/qmldom.pro b/tests/auto/declarative/qmldom/qmldom.pro
index d566354..7ff317d 100644
--- a/tests/auto/declarative/qmldom/qmldom.pro
+++ b/tests/auto/declarative/qmldom/qmldom.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qmldom.cpp
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qmlecmascript/data/NestedTypeTransientErrors.qml b/tests/auto/declarative/qmlecmascript/data/NestedTypeTransientErrors.qml
new file mode 100644
index 0000000..e19bf24
--- /dev/null
+++ b/tests/auto/declarative/qmlecmascript/data/NestedTypeTransientErrors.qml
@@ -0,0 +1,11 @@
+import Qt 4.6
+
+Object {
+ property int b: obj.prop.a
+
+ property var prop;
+ prop: Object {
+ property int a: 10
+ }
+}
+
diff --git a/tests/auto/declarative/qmlecmascript/data/transientErrors.qml b/tests/auto/declarative/qmlecmascript/data/transientErrors.qml
new file mode 100644
index 0000000..4e123c6
--- /dev/null
+++ b/tests/auto/declarative/qmlecmascript/data/transientErrors.qml
@@ -0,0 +1,10 @@
+import Qt 4.6
+
+Object {
+ property var obj: nested
+
+ property var obj2
+ obj2: NestedTypeTransientErrors {
+ id: nested
+ }
+}
diff --git a/tests/auto/declarative/qmlecmascript/qmlecmascript.pro b/tests/auto/declarative/qmlecmascript/qmlecmascript.pro
index ff4d20f..46ae045 100644
--- a/tests/auto/declarative/qmlecmascript/qmlecmascript.pro
+++ b/tests/auto/declarative/qmlecmascript/qmlecmascript.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
macx:CONFIG -= app_bundle
+
SOURCES += tst_qmlecmascript.cpp \
testtypes.cpp
HEADERS += testtypes.h
diff --git a/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp b/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
index 67a98b1..48c2249 100644
--- a/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
+++ b/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
@@ -66,6 +66,7 @@ private slots:
void signalTriggeredBindings();
void listProperties();
void exceptionClearsOnReeval();
+ void transientErrors();
private:
QmlEngine engine;
@@ -847,6 +848,28 @@ void tst_qmlecmascript::exceptionClearsOnReeval()
QCOMPARE(object->property("test").toBool(), true);
}
+static int transientErrorsMsgCount = 0;
+static void transientErrorsMsgHandler(QtMsgType, const char *)
+{
+ ++transientErrorsMsgCount;
+}
+
+// Check that transient binding errors are not displayed
+void tst_qmlecmascript::transientErrors()
+{
+ QmlComponent component(&engine, TEST_FILE("transientErrors.qml"));
+
+ transientErrorsMsgCount = 0;
+ QtMsgHandler old = qInstallMsgHandler(transientErrorsMsgHandler);
+
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+
+ qInstallMsgHandler(old);
+
+ QCOMPARE(transientErrorsMsgCount, 0);
+}
+
QTEST_MAIN(tst_qmlecmascript)
#include "tst_qmlecmascript.moc"
diff --git a/tests/auto/declarative/qmllanguage/qmllanguage.pro b/tests/auto/declarative/qmllanguage/qmllanguage.pro
index 4e4be9c..80228a9 100644
--- a/tests/auto/declarative/qmllanguage/qmllanguage.pro
+++ b/tests/auto/declarative/qmllanguage/qmllanguage.pro
@@ -1,9 +1,10 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qmllanguage.cpp \
testtypes.cpp
HEADERS += testtypes.h
-macx:CONFIG -= app_bundle
# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage
# LIBS += -lgcov
diff --git a/tests/auto/declarative/qmllist/qmllist.pro b/tests/auto/declarative/qmllist/qmllist.pro
index e5558f1..b2145ed 100644
--- a/tests/auto/declarative/qmllist/qmllist.pro
+++ b/tests/auto/declarative/qmllist/qmllist.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qmllist.cpp
diff --git a/tests/auto/declarative/qmllistaccessor/qmllistaccessor.pro b/tests/auto/declarative/qmllistaccessor/qmllistaccessor.pro
index 4aa0450..ce2915e 100644
--- a/tests/auto/declarative/qmllistaccessor/qmllistaccessor.pro
+++ b/tests/auto/declarative/qmllistaccessor/qmllistaccessor.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qmllistaccessor.cpp
diff --git a/tests/auto/declarative/qmlmetaproperty/qmlmetaproperty.pro b/tests/auto/declarative/qmlmetaproperty/qmlmetaproperty.pro
index af67373..542c14e 100644
--- a/tests/auto/declarative/qmlmetaproperty/qmlmetaproperty.pro
+++ b/tests/auto/declarative/qmlmetaproperty/qmlmetaproperty.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qmlmetaproperty.cpp
diff --git a/tests/auto/declarative/qmlpropertymap/qmlpropertymap.pro b/tests/auto/declarative/qmlpropertymap/qmlpropertymap.pro
index 94f138f..967ab76 100644
--- a/tests/auto/declarative/qmlpropertymap/qmlpropertymap.pro
+++ b/tests/auto/declarative/qmlpropertymap/qmlpropertymap.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qmlpropertymap.cpp
diff --git a/tests/auto/declarative/qmltimer/qmltimer.pro b/tests/auto/declarative/qmltimer/qmltimer.pro
index e7edd96..2b244ed 100644
--- a/tests/auto/declarative/qmltimer/qmltimer.pro
+++ b/tests/auto/declarative/qmltimer/qmltimer.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
SOURCES += tst_qmltimer.cpp
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/repeater/repeater.pro b/tests/auto/declarative/repeater/repeater.pro
index 1d30b7b..968904b 100644
--- a/tests/auto/declarative/repeater/repeater.pro
+++ b/tests/auto/declarative/repeater/repeater.pro
@@ -1,7 +1,8 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
-SOURCES += tst_repeater.cpp
macx:CONFIG -= app_bundle
+SOURCES += tst_repeater.cpp
+
# Define SRCDIR equal to test's source directory
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/sql/sql.pro b/tests/auto/declarative/sql/sql.pro
index 36a867f..48e06a2 100644
--- a/tests/auto/declarative/sql/sql.pro
+++ b/tests/auto/declarative/sql/sql.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_sql.cpp
# Define SRCDIR equal to test's source directory
diff --git a/tests/auto/declarative/states/states.pro b/tests/auto/declarative/states/states.pro
index 0474ea5..a1f3b02 100644
--- a/tests/auto/declarative/states/states.pro
+++ b/tests/auto/declarative/states/states.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
SOURCES += tst_states.cpp
# Define SRCDIR equal to test's source directory
diff --git a/tests/auto/declarative/visual/visual.pro b/tests/auto/declarative/visual/visual.pro
index a06fa21..7ae2bed 100644
--- a/tests/auto/declarative/visual/visual.pro
+++ b/tests/auto/declarative/visual/visual.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
-SOURCES += tst_visual.cpp
macx:CONFIG -= app_bundle
+SOURCES += tst_visual.cpp
+
DEFINES += QT_TEST_SOURCE_DIR=\"\\\"$$PWD\\\"\"
diff --git a/tools/qmldebugger/creatorplugin/qmlinspectormode.cpp b/tools/qmldebugger/creatorplugin/qmlinspectormode.cpp
index aec661c..a90ca2c 100644
--- a/tools/qmldebugger/creatorplugin/qmlinspectormode.cpp
+++ b/tools/qmldebugger/creatorplugin/qmlinspectormode.cpp
@@ -168,10 +168,17 @@ void QmlInspectorMode::connectionStateChanged()
switch (m_conn->state()) {
default:
case QAbstractSocket::UnconnectedState:
+ {
emit statusMessage(tr("[Inspector] disconnected.\n\n"));
m_addressEdit->setEnabled(true);
m_portSpinBox->setEnabled(true);
+
+ delete m_engineQuery;
+ m_engineQuery = 0;
+ delete m_contextQuery;
+ m_contextQuery = 0;
break;
+ }
case QAbstractSocket::HostLookupState:
emit statusMessage(tr("[Inspector] resolving host..."));
break;
@@ -378,7 +385,7 @@ void QmlInspectorMode::initWidgets()
m_propertiesWidget = new ObjectPropertiesView;
m_watchTableView = new WatchTableView(m_watchTableModel);
m_frameRateWidget = new CanvasFrameRate;
- m_expressionWidget = new ExpressionQueryWidget;
+ m_expressionWidget = new ExpressionQueryWidget(ExpressionQueryWidget::SeparateEntryMode);
// FancyMainWindow uses widgets' window titles for tab labels
m_objectTreeWidget->setWindowTitle(tr("Object Tree"));
diff --git a/tools/qmldebugger/standalone/engine.cpp b/tools/qmldebugger/standalone/engine.cpp
index a1fd009..f1eada8 100644
--- a/tools/qmldebugger/standalone/engine.cpp
+++ b/tools/qmldebugger/standalone/engine.cpp
@@ -86,7 +86,7 @@ EnginePane::EnginePane(QmlDebugConnection *conn, QWidget *parent)
connect(m_watchTableView, SIGNAL(objectActivated(int)),
m_objTree, SLOT(setCurrentObject(int)));
- m_exprQueryWidget = new ExpressionQueryWidget(m_client);
+ m_exprQueryWidget = new ExpressionQueryWidget(ExpressionQueryWidget::SeparateEntryMode, m_client);
connect(m_objTree, SIGNAL(currentObjectChanged(QmlDebugObjectReference)),
m_exprQueryWidget, SLOT(setCurrentObject(QmlDebugObjectReference)));
diff --git a/tools/qmldebugger/standalone/expressionquerywidget.cpp b/tools/qmldebugger/standalone/expressionquerywidget.cpp
index f8f5aef..3c4296d 100644
--- a/tools/qmldebugger/standalone/expressionquerywidget.cpp
+++ b/tools/qmldebugger/standalone/expressionquerywidget.cpp
@@ -11,9 +11,9 @@
#include "expressionquerywidget.h"
-ExpressionQueryWidget::ExpressionQueryWidget(QmlEngineDebug *client, QWidget *parent)
+ExpressionQueryWidget::ExpressionQueryWidget(Mode mode, QmlEngineDebug *client, QWidget *parent)
: QWidget(parent),
- m_style(Compact),
+ m_mode(mode),
m_client(client),
m_query(0),
m_textEdit(new QTextEdit),
@@ -28,7 +28,7 @@ ExpressionQueryWidget::ExpressionQueryWidget(QmlEngineDebug *client, QWidget *pa
updateTitle();
- if (m_style == Compact) {
+ if (m_mode == SeparateEntryMode) {
m_lineEdit = new QLineEdit;
connect(m_lineEdit, SIGNAL(returnPressed()), SLOT(executeExpression()));
QHBoxLayout *hbox = new QHBoxLayout;
@@ -53,7 +53,8 @@ void ExpressionQueryWidget::setEngineDebug(QmlEngineDebug *client)
void ExpressionQueryWidget::clear()
{
m_textEdit->clear();
- m_lineEdit->clear();
+ if (m_lineEdit)
+ m_lineEdit->clear();
}
void ExpressionQueryWidget::updateTitle()
@@ -73,7 +74,7 @@ void ExpressionQueryWidget::appendPrompt()
{
m_textEdit->moveCursor(QTextCursor::End);
- if (m_style == Compact) {
+ if (m_mode == SeparateEntryMode) {
m_textEdit->insertPlainText("\n");
} else {
m_textEdit->setTextColor(Qt::gray);
@@ -111,7 +112,7 @@ void ExpressionQueryWidget::executeExpression()
if (!m_client)
return;
- if (m_style == Compact)
+ if (m_mode == SeparateEntryMode)
m_expr = m_lineEdit->text().trimmed();
else
m_expr = m_expr.trimmed();
@@ -136,20 +137,31 @@ void ExpressionQueryWidget::showResult()
{
if (m_query) {
m_textEdit->moveCursor(QTextCursor::End);
+ QVariant value = m_query->result();
QString result;
- if (m_query->result().isNull())
+
+ if (value.isNull()) {
result = QLatin1String("<no value>");
- else
- result = m_query->result().toString();
+ } else {
+ if (value.canConvert(QVariant::String)) {
+ result = value.toString();
+ } else {
+ QDebug debug(&result);
+ debug << value;
+ }
+ }
- if (m_style == Compact) {
+ if (m_mode == SeparateEntryMode) {
m_textEdit->setTextColor(Qt::black);
m_textEdit->setFontWeight(QFont::Bold);
m_textEdit->insertPlainText(m_expr + " : ");
m_textEdit->setFontWeight(QFont::Normal);
m_textEdit->insertPlainText(result);
} else {
- m_textEdit->append(result);
+ m_textEdit->setTextColor(Qt::darkGreen);
+ m_textEdit->insertPlainText(" => ");
+ m_textEdit->setTextColor(Qt::black);
+ m_textEdit->insertPlainText(result);
}
appendPrompt();
m_expr.clear();
diff --git a/tools/qmldebugger/standalone/expressionquerywidget.h b/tools/qmldebugger/standalone/expressionquerywidget.h
index 6fab059..3fe0295 100644
--- a/tools/qmldebugger/standalone/expressionquerywidget.h
+++ b/tools/qmldebugger/standalone/expressionquerywidget.h
@@ -16,12 +16,12 @@ class ExpressionQueryWidget : public QWidget
{
Q_OBJECT
public:
- enum Style {
- Compact,
- Shell
+ enum Mode {
+ SeparateEntryMode,
+ ShellMode
};
- ExpressionQueryWidget(QmlEngineDebug *client = 0, QWidget *parent = 0);
+ ExpressionQueryWidget(Mode mode = SeparateEntryMode, QmlEngineDebug *client = 0, QWidget *parent = 0);
void setEngineDebug(QmlEngineDebug *client);
void clear();
@@ -42,7 +42,7 @@ private:
void showCurrentContext();
void updateTitle();
- Style m_style;
+ Mode m_mode;
QmlEngineDebug *m_client;
QmlDebugExpressionQuery *m_query;
diff --git a/tools/qmldebugger/standalone/objectpropertiesview.cpp b/tools/qmldebugger/standalone/objectpropertiesview.cpp
index f86a69e..d6fefa0 100644
--- a/tools/qmldebugger/standalone/objectpropertiesview.cpp
+++ b/tools/qmldebugger/standalone/objectpropertiesview.cpp
@@ -16,19 +16,25 @@ class PropertiesViewItem : public QObject, public QTreeWidgetItem
{
Q_OBJECT
public:
- PropertiesViewItem(QTreeWidget *widget);
- PropertiesViewItem(QTreeWidgetItem *parent);
+ enum Type {
+ BindingType,
+ OtherType
+ };
+
+ PropertiesViewItem(QTreeWidget *widget, Type type = OtherType);
+ PropertiesViewItem(QTreeWidgetItem *parent, Type type = OtherType);
QmlDebugPropertyReference property;
+ Type type;
};
-PropertiesViewItem::PropertiesViewItem(QTreeWidget *widget)
- : QTreeWidgetItem(widget)
+PropertiesViewItem::PropertiesViewItem(QTreeWidget *widget, Type type)
+ : QTreeWidgetItem(widget), type(type)
{
}
-PropertiesViewItem::PropertiesViewItem(QTreeWidgetItem *parent)
- : QTreeWidgetItem(parent)
+PropertiesViewItem::PropertiesViewItem(QTreeWidgetItem *parent, Type type)
+ : QTreeWidgetItem(parent), type(type)
{
}
@@ -109,6 +115,42 @@ void ObjectPropertiesView::queryFinished()
setObject(obj);
}
+void ObjectPropertiesView::setPropertyValue(PropertiesViewItem *item, const QVariant &value, bool makeGray)
+{
+ if (value.type() == QVariant::List || value.type() == QVariant::StringList) {
+ PropertiesViewItem *bindingItem = static_cast<PropertiesViewItem*>(item->takeChild(item->childCount() - 1));
+ if (bindingItem && bindingItem->type != PropertiesViewItem::BindingType) {
+ delete bindingItem;
+ bindingItem = 0;
+ }
+
+ qDeleteAll(item->takeChildren());
+
+ QVariantList variants = value.toList();
+ item->setText(1, tr("<%1 items>", "%1 = number of items").arg(variants.count()));
+ item->setText(2, QString::fromUtf8(value.typeName()));
+
+ PropertiesViewItem *child;
+ for (int i=0; i<variants.count(); i++) {
+ child = new PropertiesViewItem(item);
+ setPropertyValue(child, variants[i], makeGray);
+ }
+
+ if (bindingItem)
+ item->addChild(bindingItem);
+
+ item->setExpanded(false);
+ } else {
+ item->setText(1, (value.isNull() ? QLatin1String("<null>") : value.toString()));
+ item->setExpanded(true);
+ }
+
+ if (makeGray) {
+ for (int i=0; i<m_tree->columnCount(); i++)
+ item->setForeground(i, Qt::gray);
+ }
+}
+
void ObjectPropertiesView::setObject(const QmlDebugObjectReference &object)
{
m_object = object;
@@ -123,20 +165,17 @@ void ObjectPropertiesView::setObject(const QmlDebugObjectReference &object)
item->setText(0, p.name());
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
- if (!p.hasNotifySignal()) {
- item->setForeground(0, Qt::gray);
- item->setForeground(1, Qt::gray);
- }
+
+ setPropertyValue(item, p.value(), !p.hasNotifySignal());
+ item->setText(2, p.valueTypeName());
+ // binding is set after property value to ensure it is added to the end of the
+ // list, if the value is a list
if (!p.binding().isEmpty()) {
- PropertiesViewItem *binding = new PropertiesViewItem(item);
+ PropertiesViewItem *binding = new PropertiesViewItem(item, PropertiesViewItem::BindingType);
binding->setText(1, p.binding());
binding->setForeground(1, Qt::darkGreen);
}
-
- item->setText(2, p.valueTypeName());
-
- item->setExpanded(true);
}
}
@@ -177,11 +216,8 @@ void ObjectPropertiesView::valueChanged(const QByteArray &name, const QVariant &
for (int i=0; i<m_tree->topLevelItemCount(); i++) {
PropertiesViewItem *item = static_cast<PropertiesViewItem *>(m_tree->topLevelItem(i));
if (item->property.name() == name) {
- if (value.isNull()) {
- item->setText(1, QLatin1String("<null>"));
- } else {
- item->setText(1, value.toString());
- }
+ setPropertyValue(item, value, !item->property.hasNotifySignal());
+ return;
}
}
}
diff --git a/tools/qmldebugger/standalone/objectpropertiesview.h b/tools/qmldebugger/standalone/objectpropertiesview.h
index 6a1fc03..306e5b9 100644
--- a/tools/qmldebugger/standalone/objectpropertiesview.h
+++ b/tools/qmldebugger/standalone/objectpropertiesview.h
@@ -10,6 +10,7 @@ QT_BEGIN_NAMESPACE
class QTreeWidget;
class QTreeWidgetItem;
class QmlDebugConnection;
+class PropertiesViewItem;
class ObjectPropertiesView : public QWidget
{
@@ -36,6 +37,7 @@ private slots:
private:
void setObject(const QmlDebugObjectReference &object);
void setWatched(const QString &property, bool watched);
+ void setPropertyValue(PropertiesViewItem *item, const QVariant &value, bool makeGray);
QmlEngineDebug *m_client;
QmlDebugObjectQuery *m_query;
diff --git a/tools/qmldebugger/standalone/objecttree.cpp b/tools/qmldebugger/standalone/objecttree.cpp
index 4059e77..6c132b6 100644
--- a/tools/qmldebugger/standalone/objecttree.cpp
+++ b/tools/qmldebugger/standalone/objecttree.cpp
@@ -61,6 +61,7 @@ void ObjectTree::objectFetched()
{
dump(m_query->object(), 0);
buildTree(m_query->object(), 0);
+ setCurrentItem(topLevelItem(0));
delete m_query;
m_query = 0;
diff --git a/tools/qmldebugger/standalone/objecttree.h b/tools/qmldebugger/standalone/objecttree.h
index 95820f3..ba2e78f 100644
--- a/tools/qmldebugger/standalone/objecttree.h
+++ b/tools/qmldebugger/standalone/objecttree.h
@@ -27,8 +27,8 @@ signals:
void expressionWatchRequested(const QmlDebugObjectReference &, const QString &);
public slots:
- void reload(int objectDebugId);
- void setCurrentObject(int debugId);
+ void reload(int objectDebugId); // set the root object
+ void setCurrentObject(int debugId); // select an object in the tree
protected:
virtual void mousePressEvent(QMouseEvent *);
diff --git a/tools/qmldebugger/standalone/watchtable.cpp b/tools/qmldebugger/standalone/watchtable.cpp
index a7fd052..19f034e 100644
--- a/tools/qmldebugger/standalone/watchtable.cpp
+++ b/tools/qmldebugger/standalone/watchtable.cpp
@@ -265,7 +265,8 @@ void WatchTableModel::removeAllWatches()
for (int i=0; i<m_columns.count(); i++) {
if (m_client)
m_client->removeWatch(m_columns[i].watch);
- delete m_columns[i].watch;
+ else
+ delete m_columns[i].watch;
}
m_columns.clear();
m_values.clear();