From bdae42967cd7fa9eb0182e1f25c1e743f35835f7 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Tue, 5 Jul 2011 13:48:03 +0200 Subject: qmlplugindump: Update qmltypes file format documentation. Reviewed-by: Fawzi Mohamed --- doc/src/declarative/modules.qdoc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/src/declarative/modules.qdoc b/doc/src/declarative/modules.qdoc index 80d83a4..efca620 100644 --- a/doc/src/declarative/modules.qdoc +++ b/doc/src/declarative/modules.qdoc @@ -407,7 +407,7 @@ In case you have to create a qmltypes file manually or need to adjust an existing one, this is the file format: \qml -import QtQuick.tooling 1.0 +import QtQuick.tooling 1.1 // There always is a single Module object that contains all // Component objects. @@ -454,6 +454,8 @@ Module { isPointer: true // defaults to false: whether the type actually is a QDeclarativeListProperty isList: true + // defaults to 0: the minor version that introduced this property + revision: 1 } Property { name: "loops"; type: "int" } Property { name: "name"; type: "string" } @@ -471,7 +473,7 @@ Module { // declarations also support the isReadonly, isPointer and isList // attributes which mean the same as for Property Method { name: "restart" } - Signal { name: "started" } + Signal { name: "started"; revision: 2 } Signal { name: "runningChanged" Parameter { type: "bool" } -- cgit v0.12 From 1a7b1538e8a9db9e5b921ddcac3d785c0618c7c3 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 7 Jul 2011 13:10:35 +1000 Subject: Document state fast-forwarding. Change-Id: Idea5adf70f2ed693e0eac9d58e2ae298704304a2 Task-number: QTBUG-16049 Reviewed-by: Bea Lam --- doc/src/declarative/qdeclarativestates.qdoc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/doc/src/declarative/qdeclarativestates.qdoc b/doc/src/declarative/qdeclarativestates.qdoc index 55f38c3..9857894 100644 --- a/doc/src/declarative/qdeclarativestates.qdoc +++ b/doc/src/declarative/qdeclarativestates.qdoc @@ -133,4 +133,26 @@ The \l {declarative/animation/states}{States and Transitions example} demonstrates how to declare a basic set of states and apply animated transitions between them. +\l{Using QML Behaviors with States} explains a common problem when using Behaviors +to animate state changes. + +\section1 State Fast Forwarding + +In order for Transition to correctly animate state changes, it is sometimes necessary +for the engine to fast forward and rewind a state (that is, internally set and unset the state) +before it is finally applied. The process is as follows: + +\list 1 +\o The state is fast forwarded to determine the complete set of end values. +\o The state is rewound. +\o The state is fully applied, with transitions. +\endlist + +In some cases this may cause unintended behavior. For example, a state that changes +a view's \i model or a Loader's \i sourceComponent will set these properties +multiple times (to apply, rewind, and then reapply), which can be relatively expensive. + +State fast forwarding should be considered an implementation detail, +and may change in later versions. + */ -- cgit v0.12 From bdbc3ff0a32bb37a32dc4825413e60f9d75e5007 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 14 Jul 2011 09:03:07 +0200 Subject: qmldump: Fix creation of objects from QDeclarativeTypes. Previously, the import statement was not necessarily set up correctly for the type we wanted to instantiate. We simply use QDeclarativeType::create now and thus can skip finding the right import. Mirrors qtcreator/f326bd067d455e979b5d83195e19581a9e2fd494 Reviewed-by: Roberto Raggi --- tools/qmlplugindump/main.cpp | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp index ae06d02..6bef8d4 100644 --- a/tools/qmlplugindump/main.cpp +++ b/tools/qmlplugindump/main.cpp @@ -147,7 +147,7 @@ QByteArray convertToId(const QByteArray &cppName) return cppToId.value(cppName, cppName); } -QSet collectReachableMetaObjects(const QString &importCode, QDeclarativeEngine *engine) +QSet collectReachableMetaObjects(const QList &skip = QList()) { QSet metas; metas.insert(FriendlyQObject::qtMeta()); @@ -195,7 +195,9 @@ QSet collectReachableMetaObjects(const QString &importCode, // find even more QMetaObjects by instantiating QML types and running // over the instances - foreach (const QDeclarativeType *ty, QDeclarativeMetaType::qmlTypes()) { + foreach (QDeclarativeType *ty, QDeclarativeMetaType::qmlTypes()) { + if (skip.contains(ty)) + continue; if (ty->isExtendedType()) continue; if (!ty->isCreatable()) @@ -208,21 +210,14 @@ QSet collectReachableMetaObjects(const QString &importCode, if (tyName.isEmpty()) continue; - QByteArray code = importCode.toUtf8(); - code += tyName; - code += " {}\n"; - - QDeclarativeComponent c(engine); - c.setData(code, QUrl::fromLocalFile(pluginImportPath + "/typeinstance.qml")); - inObjectInstantiation = tyName; - QObject *object = c.create(); + QObject *object = ty->create(); inObjectInstantiation.clear(); if (object) collectReachableMetaObjects(object, &metas); else - qWarning() << "Could not create" << tyName << ":" << c.errorString(); + qWarning() << "Could not create" << tyName; } return metas; @@ -548,8 +543,8 @@ int main(int argc, char *argv[]) } // find all QMetaObjects reachable from the builtin module - QByteArray importCode("import QtQuick 1.0\n"); - QSet defaultReachable = collectReachableMetaObjects(importCode, engine); + QSet defaultReachable = collectReachableMetaObjects(); + QList defaultTypes = QDeclarativeMetaType::qmlTypes(); // this will hold the meta objects we want to dump information of QSet metas; @@ -557,6 +552,20 @@ int main(int argc, char *argv[]) if (action == Builtins) { metas = defaultReachable; } else { + // find a valid QtQuick import + QByteArray importCode; + QDeclarativeType *qtObjectType = QDeclarativeMetaType::qmlType(&QObject::staticMetaObject); + if (!qtObjectType) { + qWarning() << "Could not find QtObject type"; + importCode = QByteArray("import QtQuick 1.0\n"); + } else { + QByteArray module = qtObjectType->qmlTypeName(); + module = module.mid(0, module.lastIndexOf('/')); + importCode = QString("import %1 %2.%3\n").arg(module, + QString::number(qtObjectType->majorVersion()), + QString::number(qtObjectType->minorVersion())).toUtf8(); + } + // find all QMetaObjects reachable when the specified module is imported if (action != Path) { importCode += QString("import %0 %1\n").arg(pluginImportUri, pluginImportVersion).toAscii(); @@ -581,7 +590,7 @@ int main(int argc, char *argv[]) } } - QSet candidates = collectReachableMetaObjects(importCode, engine); + QSet candidates = collectReachableMetaObjects(defaultTypes); candidates.subtract(defaultReachable); // Also eliminate meta objects with the same classname. -- cgit v0.12 From f9d3db47f1b099d85c61a215e6479b4b3ca81ee0 Mon Sep 17 00:00:00 2001 From: Christiaan Janssen Date: Tue, 19 Jul 2011 18:07:46 +0200 Subject: Qml Debugging: only read properties that can be displayed in the debugger Change-Id: I68a6636aae271924bcec31ce7ad76c01fc43080b Task-number: QTCREATORBUG-5075 --- src/declarative/qml/qdeclarativeenginedebug.cpp | 12 ++++++------ src/declarative/qml/qdeclarativewatcher.cpp | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index 8f22314..8707a7f 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -147,12 +147,6 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) if (binding) rv.binding = binding->expression(); - QVariant value; - if (prop.userType() != 0) { - value = prop.read(obj); - } - rv.value = valueContents(value); - if (QDeclarativeValueTypeFactory::isValueType(prop.userType())) { rv.type = QDeclarativeObjectProperty::Basic; } else if (QDeclarativeMetaType::isQObject(prop.userType())) { @@ -161,6 +155,12 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) rv.type = QDeclarativeObjectProperty::List; } + QVariant value; + if (rv.type != QDeclarativeObjectProperty::Unknown && prop.userType() != 0) { + value = prop.read(obj); + } + rv.value = valueContents(value); + return rv; } diff --git a/src/declarative/qml/qdeclarativewatcher.cpp b/src/declarative/qml/qdeclarativewatcher.cpp index c174998..33f0358 100644 --- a/src/declarative/qml/qdeclarativewatcher.cpp +++ b/src/declarative/qml/qdeclarativewatcher.cpp @@ -47,6 +47,7 @@ #include #include "private/qdeclarativeproperty_p.h" +#include "private/qdeclarativevaluetype_p.h" #include #include @@ -112,7 +113,7 @@ void QDeclarativeWatchProxy::notifyValueChanged() QVariant v; if (m_expr) v = m_expr->evaluate(); - else + else if (QDeclarativeValueTypeFactory::isValueType(m_property.userType())) v = m_property.read(m_object); emit m_watch->propertyChanged(m_id, m_debugId, m_property, v); -- cgit v0.12 From 885ee642fb1342467d749f8a4bcafb8fbe6f0893 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 25 Jul 2011 16:43:55 +1000 Subject: Fix crash when assigning a list property to transitions. This fixes the crash, but doesn't actually assign any Transitions (the transitions list will now be empty, rather than contain a null Transition object). Correct assignment is a general language issue, and will be fixed separately. Change-Id: I6aaba4eaf6faa513e54d99b27fe9f9a705eea40b Task-number: QTBUG-20227 Reviewed-by: Alan Alpert --- src/declarative/util/qdeclarativestategroup.cpp | 35 +++++++++++++++++++++- .../data/transitionAssignmentBug.qml | 12 ++++++++ .../tst_qdeclarativeanimations.cpp | 13 ++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 tests/auto/declarative/qdeclarativeanimations/data/transitionAssignmentBug.qml diff --git a/src/declarative/util/qdeclarativestategroup.cpp b/src/declarative/util/qdeclarativestategroup.cpp index a3f57d4..c098a38 100644 --- a/src/declarative/util/qdeclarativestategroup.cpp +++ b/src/declarative/util/qdeclarativestategroup.cpp @@ -73,6 +73,11 @@ public: static QDeclarativeState *at_state(QDeclarativeListProperty *list, int index); static void clear_states(QDeclarativeListProperty *list); + static void append_transition(QDeclarativeListProperty *list, QDeclarativeTransition *state); + static int count_transitions(QDeclarativeListProperty *list); + static QDeclarativeTransition *at_transition(QDeclarativeListProperty *list, int index); + static void clear_transitions(QDeclarativeListProperty *list); + QList states; QList transitions; @@ -218,7 +223,35 @@ void QDeclarativeStateGroupPrivate::clear_states(QDeclarativeListProperty QDeclarativeStateGroup::transitionsProperty() { Q_D(QDeclarativeStateGroup); - return QDeclarativeListProperty(this, d->transitions); + return QDeclarativeListProperty(this, &d->transitions, &QDeclarativeStateGroupPrivate::append_transition, + &QDeclarativeStateGroupPrivate::count_transitions, + &QDeclarativeStateGroupPrivate::at_transition, + &QDeclarativeStateGroupPrivate::clear_transitions); +} + +void QDeclarativeStateGroupPrivate::append_transition(QDeclarativeListProperty *list, QDeclarativeTransition *trans) +{ + QDeclarativeStateGroup *_this = static_cast(list->object); + if (trans) + _this->d_func()->transitions.append(trans); +} + +int QDeclarativeStateGroupPrivate::count_transitions(QDeclarativeListProperty *list) +{ + QDeclarativeStateGroup *_this = static_cast(list->object); + return _this->d_func()->transitions.count(); +} + +QDeclarativeTransition *QDeclarativeStateGroupPrivate::at_transition(QDeclarativeListProperty *list, int index) +{ + QDeclarativeStateGroup *_this = static_cast(list->object); + return _this->d_func()->transitions.at(index); +} + +void QDeclarativeStateGroupPrivate::clear_transitions(QDeclarativeListProperty *list) +{ + QDeclarativeStateGroup *_this = static_cast(list->object); + _this->d_func()->transitions.clear(); } /*! diff --git a/tests/auto/declarative/qdeclarativeanimations/data/transitionAssignmentBug.qml b/tests/auto/declarative/qdeclarativeanimations/data/transitionAssignmentBug.qml new file mode 100644 index 0000000..99b9ac5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanimations/data/transitionAssignmentBug.qml @@ -0,0 +1,12 @@ +import QtQuick 1.0 + +Rectangle { + width: 400 + height: 400 + + property bool nullObject + Component.onCompleted: nullObject = transitions.length > 0 && transitions[0] === null + + property list myTransitions: [Transition {}, Transition {}] + transitions: myTransitions +} diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp index 00db2d4..5d90597 100644 --- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp +++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp @@ -88,6 +88,7 @@ private slots: void registrationBug(); void doubleRegistrationBug(); void alwaysRunToEndRestartBug(); + void transitionAssignmentBug(); }; #define QTIMED_COMPARE(lhs, rhs) do { \ @@ -844,6 +845,18 @@ void tst_qdeclarativeanimations::alwaysRunToEndRestartBug() QCOMPARE(static_cast(&animation)->qtAnimation()->state(), QAbstractAnimation::Stopped); } +//QTBUG-20227 +void tst_qdeclarativeanimations::transitionAssignmentBug() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent c(&engine, SRCDIR "/data/transitionAssignmentBug.qml"); + QDeclarativeRectangle *rect = qobject_cast(c.create()); + QVERIFY(rect != 0); + + QCOMPARE(rect->property("nullObject").toBool(), false); +} + QTEST_MAIN(tst_qdeclarativeanimations) #include "tst_qdeclarativeanimations.moc" -- cgit v0.12 From 8ef0e62055a2c98637e0b7423feda3ebca7983f4 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 26 Jul 2011 09:42:46 +1000 Subject: Cleanup QMLViewer properly when exiting via File->Quit. Change-Id: I7a20d46f753f5caa809e3150e44a58f4af55a506 Task-number: QTBUG-14972 Reviewed-by: Charles Yin --- tools/qml/qmlruntime.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 4b0f2d5..f9961bc 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -1393,6 +1393,7 @@ void QDeclarativeViewer::appAboutToQuit() loggerWindow = 0; delete tester; tester = 0; + close(); } void QDeclarativeViewer::autoStartRecording() -- cgit v0.12 From ed54c64af0d61d6bfea2ec87428ba5d008a30564 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 3 Aug 2011 11:11:41 +1000 Subject: Prevent Binding from crashing when its target object is deleted. Change-Id: Ic83cfcaeccf6639976864bb2f38f5bcff16e2b11 Task-number: QTBUG-20692 Reviewed-by: Martin Jones --- src/declarative/util/qdeclarativebind.cpp | 3 ++- .../qdeclarativebinding/data/deletedObject.qml | 24 ++++++++++++++++++++++ .../tst_qdeclarativebinding.cpp | 17 +++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/auto/declarative/qdeclarativebinding/data/deletedObject.qml diff --git a/src/declarative/util/qdeclarativebind.cpp b/src/declarative/util/qdeclarativebind.cpp index b7199ac..051df60 100644 --- a/src/declarative/util/qdeclarativebind.cpp +++ b/src/declarative/util/qdeclarativebind.cpp @@ -42,6 +42,7 @@ #include "private/qdeclarativebind_p.h" #include "private/qdeclarativenullablevalue_p_p.h" +#include "private/qdeclarativeguard_p.h" #include #include @@ -64,7 +65,7 @@ public: bool when : 1; bool componentComplete : 1; - QObject *obj; + QDeclarativeGuard obj; QString prop; QDeclarativeNullableValue value; }; diff --git a/tests/auto/declarative/qdeclarativebinding/data/deletedObject.qml b/tests/auto/declarative/qdeclarativebinding/data/deletedObject.qml new file mode 100644 index 0000000..ba4c9f6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativebinding/data/deletedObject.qml @@ -0,0 +1,24 @@ +import QtQuick 1.0 + +Rectangle { + id: wrapper + width: 400 + height: 400 + + property bool activateBinding: false + + Binding { + id: binding + target: Qt.createQmlObject('import QtQuick 1.0; Item { property real value: 10 }', wrapper) + property: "value" + when: activateBinding + value: x + y + } + + Component.onCompleted: binding.target.destroy(); + +// MouseArea { +// anchors.fill: parent +// onClicked: activateBinding = true; +// } +} diff --git a/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp index 6305cd3..ca394b0 100644 --- a/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp +++ b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp @@ -60,6 +60,7 @@ public: private slots: void binding(); void whenAfterValue(); + void deletedObject(); private: QDeclarativeEngine engine; @@ -113,6 +114,22 @@ void tst_qdeclarativebinding::whenAfterValue() delete rect; } +//QTBUG-20692 +void tst_qdeclarativebinding::deletedObject() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/deletedObject.qml")); + QDeclarativeRectangle *rect = qobject_cast(c.create()); + QVERIFY(rect != 0); + + QApplication::sendPostedEvents(0, QEvent::DeferredDelete); + + //don't crash + rect->setProperty("activateBinding", true); + + delete rect; +} + QTEST_MAIN(tst_qdeclarativebinding) #include "tst_qdeclarativebinding.moc" -- cgit v0.12 From 3322d45ca0c368d3c820878122b2041828e5778c Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 9 Aug 2011 11:46:23 +0200 Subject: JSDebugger: Only hit breakpoints in user code Check that the topmost stack entry is a user defined ScriptFunction. This avoids hitting the anonymous functions used for bindings, e.g. onClicked: Qt.quit() leads to script code (function onClicked() { Qt.quit(); }) which will be hit twice for the debugger: Once for the function call itself, then for the execution of Qt.quit(). Change-Id: Id431cacaef84172dc3474018cdf61f3dcc05cf93 --- src/declarative/debugger/qjsdebuggeragent.cpp | 33 ++++++++++++--------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/declarative/debugger/qjsdebuggeragent.cpp b/src/declarative/debugger/qjsdebuggeragent.cpp index 683032b..308fe17 100644 --- a/src/declarative/debugger/qjsdebuggeragent.cpp +++ b/src/declarative/debugger/qjsdebuggeragent.cpp @@ -511,27 +511,24 @@ void QJSDebuggerAgentPrivate::positionChange(qint64 scriptId, int lineNumber, in // check breakpoints if (!breakpoints.isEmpty()) { - QHash::const_iterator it = filenames.constFind(scriptId); - QScriptContext *ctx = engine()->currentContext(); - QScriptContextInfo info(ctx); - if (it == filenames.constEnd()) { - // It is possible that the scripts are loaded before the agent is attached - QString filename = info.fileName(); + const QScriptContext *ctx = engine()->currentContext(); + const QScriptContextInfo info(ctx); - JSAgentStackData frame; - frame.functionName = info.functionName().toUtf8(); - - QPair key = qMakePair(filename, lineNumber); - it = filenames.insert(scriptId, filename); - } + if (info.functionType() == QScriptContextInfo::ScriptFunction) { + QHash::const_iterator it = filenames.constFind(scriptId); + // It is possible that the scripts are loaded before the agent is attached + if (it == filenames.constEnd()) { + it = filenames.insert(scriptId, info.fileName()); + } - const QString filePath = it.value(); - JSAgentBreakpoints bps = fileNameToBreakpoints.values(fileName(filePath)).toSet(); + const QString filePath = it.value(); + JSAgentBreakpoints bps = fileNameToBreakpoints.values(fileName(filePath)).toSet(); - foreach (const JSAgentBreakpointData &bp, bps) { - if (bp.lineNumber == lineNumber) { - stopped(); - return; + foreach (const JSAgentBreakpointData &bp, bps) { + if (bp.lineNumber == lineNumber) { + stopped(); + return; + } } } } -- cgit v0.12 From 857c7072320339a6ff114b6a18fef939b54d8026 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 9 Aug 2011 13:36:05 +0200 Subject: QmlInspector: Remove unused toolbar This got disabled ages ago, but we never cleaned up the sources. Change-Id: I69e7e5a431e2092ef925e48f81a306a3d316d2c7 --- src/declarative/debugger/qjsdebuggeragent.cpp | 2 +- .../qmldbg_inspector/abstractviewinspector.cpp | 101 +-------------------- .../qmldbg_inspector/abstractviewinspector.h | 5 - .../qmltooling/qmldbg_inspector/editor/editor.qrc | 24 ----- .../editor/images/color-picker-24.png | Bin 3440 -> 0 bytes .../editor/images/color-picker-hicontrast.png | Bin 3192 -> 0 bytes .../editor/images/color-picker.png | Bin 3173 -> 0 bytes .../qmldbg_inspector/editor/images/from-qml-24.png | Bin 3395 -> 0 bytes .../qmldbg_inspector/editor/images/from-qml.png | Bin 3205 -> 0 bytes .../editor/images/inspectormode-24.png | Bin 1283 -> 0 bytes .../editor/images/inspectormode.png | Bin 3539 -> 0 bytes .../qmldbg_inspector/editor/images/pause-24.png | Bin 3307 -> 0 bytes .../qmldbg_inspector/editor/images/pause.png | Bin 3097 -> 0 bytes .../qmldbg_inspector/editor/images/play-24.png | Bin 3655 -> 0 bytes .../qmldbg_inspector/editor/images/play.png | Bin 3363 -> 0 bytes .../qmldbg_inspector/editor/images/reload.png | Bin 3418 -> 0 bytes .../editor/images/resize_handle.png | Bin 160 -> 0 bytes .../qmldbg_inspector/editor/images/select-24.png | Bin 3510 -> 0 bytes .../editor/images/select-marquee-24.png | Bin 2891 -> 0 bytes .../editor/images/select-marquee.png | Bin 2871 -> 0 bytes .../qmldbg_inspector/editor/images/select.png | Bin 3308 -> 0 bytes .../qmldbg_inspector/editor/images/to-qml-24.png | Bin 3407 -> 0 bytes .../qmldbg_inspector/editor/images/to-qml.png | Bin 3227 -> 0 bytes .../qmldbg_inspector/editor/images/zoom-24.png | Bin 3566 -> 0 bytes .../qmldbg_inspector/editor/images/zoom.png | Bin 3347 -> 0 bytes .../qmldbg_inspector/qmldbg_inspector.pro | 6 -- 26 files changed, 2 insertions(+), 136 deletions(-) delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/editor.qrc delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-hicontrast.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/pause-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/pause.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/play-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/play.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/reload.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/resize_handle.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/select-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/select.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom-24.png delete mode 100644 src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom.png diff --git a/src/declarative/debugger/qjsdebuggeragent.cpp b/src/declarative/debugger/qjsdebuggeragent.cpp index 308fe17..5fc64e1 100644 --- a/src/declarative/debugger/qjsdebuggeragent.cpp +++ b/src/declarative/debugger/qjsdebuggeragent.cpp @@ -522,7 +522,7 @@ void QJSDebuggerAgentPrivate::positionChange(qint64 scriptId, int lineNumber, in } const QString filePath = it.value(); - JSAgentBreakpoints bps = fileNameToBreakpoints.values(fileName(filePath)).toSet(); + const JSAgentBreakpoints bps = fileNameToBreakpoints.values(fileName(filePath)).toSet(); foreach (const JSAgentBreakpointData &bp, bps) { if (bp.lineNumber == lineNumber) { diff --git a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp index 3323d54..887a6d4 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp +++ b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp @@ -42,7 +42,6 @@ #include "abstractviewinspector.h" #include "abstracttool.h" -#include "editor/qmltoolbar.h" #include "qdeclarativeinspectorprotocol.h" #include @@ -52,55 +51,12 @@ #include #include -#include - -static inline void initEditorResource() { Q_INIT_RESOURCE(editor); } +#include namespace QmlJSDebugger { -const char * const KEY_TOOLBOX_GEOMETRY = "toolBox/geometry"; - - -class ToolBox : public QWidget -{ - Q_OBJECT - -public: - ToolBox(QWidget *parent = 0); - ~ToolBox(); - - QmlToolBar *toolBar() const { return m_toolBar; } - -private: - QSettings m_settings; - QmlToolBar *m_toolBar; -}; - -ToolBox::ToolBox(QWidget *parent) - : QWidget(parent, Qt::Tool) - , m_settings(QLatin1String("Nokia"), QLatin1String("QmlInspector"), this) - , m_toolBar(new QmlToolBar) -{ - setWindowFlags((windowFlags() & ~Qt::WindowCloseButtonHint) | Qt::CustomizeWindowHint); - setWindowTitle(tr("Qt Quick Toolbox")); - - QVBoxLayout *verticalLayout = new QVBoxLayout; - verticalLayout->setMargin(0); - verticalLayout->addWidget(m_toolBar); - setLayout(verticalLayout); - - restoreGeometry(m_settings.value(QLatin1String(KEY_TOOLBOX_GEOMETRY)).toByteArray()); -} - -ToolBox::~ToolBox() -{ - m_settings.setValue(QLatin1String(KEY_TOOLBOX_GEOMETRY), saveGeometry()); -} - - AbstractViewInspector::AbstractViewInspector(QObject *parent) : QObject(parent), - m_toolBox(0), m_currentTool(0), m_showAppOnTop(false), m_designModeBehavior(false), @@ -108,8 +64,6 @@ AbstractViewInspector::AbstractViewInspector(QObject *parent) : m_slowDownFactor(1.0), m_debugService(0) { - initEditorResource(); - m_debugService = QDeclarativeInspectorService::instance(); connect(m_debugService, SIGNAL(gotMessage(QByteArray)), this, SLOT(handleMessage(QByteArray))); @@ -214,59 +168,6 @@ void AbstractViewInspector::setShowAppOnTop(bool appOnTop) emit showAppOnTopChanged(appOnTop); } -void AbstractViewInspector::setToolBoxVisible(bool visible) -{ -#if !defined(Q_OS_SYMBIAN) && !defined(Q_WS_MAEMO_5) && !defined(Q_WS_SIMULATOR) - if (!m_toolBox && visible) - createToolBox(); - if (m_toolBox) - m_toolBox->setVisible(visible); -#else - Q_UNUSED(visible) -#endif -} - -void AbstractViewInspector::createToolBox() -{ - m_toolBox = new ToolBox(viewWidget()); - - QmlToolBar *toolBar = m_toolBox->toolBar(); - - QObject::connect(this, SIGNAL(selectedColorChanged(QColor)), - toolBar, SLOT(setColorBoxColor(QColor))); - - QObject::connect(this, SIGNAL(designModeBehaviorChanged(bool)), - toolBar, SLOT(setDesignModeBehavior(bool))); - - QObject::connect(toolBar, SIGNAL(designModeBehaviorChanged(bool)), - this, SLOT(setDesignModeBehavior(bool))); - QObject::connect(toolBar, SIGNAL(animationSpeedChanged(qreal)), this, SLOT(setAnimationSpeed(qreal))); - QObject::connect(toolBar, SIGNAL(animationPausedChanged(bool)), this, SLOT(setAnimationPaused(bool))); - QObject::connect(toolBar, SIGNAL(colorPickerSelected()), this, SLOT(changeToColorPickerTool())); - QObject::connect(toolBar, SIGNAL(zoomToolSelected()), this, SLOT(changeToZoomTool())); - QObject::connect(toolBar, SIGNAL(selectToolSelected()), this, SLOT(changeToSingleSelectTool())); - QObject::connect(toolBar, SIGNAL(marqueeSelectToolSelected()), - this, SLOT(changeToMarqueeSelectTool())); - - QObject::connect(toolBar, SIGNAL(applyChangesFromQmlFileSelected()), - this, SLOT(applyChangesFromClient())); - - QObject::connect(this, SIGNAL(animationSpeedChanged(qreal)), toolBar, SLOT(setAnimationSpeed(qreal))); - QObject::connect(this, SIGNAL(animationPausedChanged(bool)), toolBar, SLOT(setAnimationPaused(bool))); - - QObject::connect(this, SIGNAL(selectToolActivated()), toolBar, SLOT(activateSelectTool())); - - // disabled features - //connect(d->m_toolBar, SIGNAL(applyChangesToQmlFileSelected()), SLOT(applyChangesToClient())); - //connect(q, SIGNAL(resizeToolActivated()), d->m_toolBar, SLOT(activateSelectTool())); - //connect(q, SIGNAL(moveToolActivated()), d->m_toolBar, SLOT(activateSelectTool())); - - QObject::connect(this, SIGNAL(colorPickerActivated()), toolBar, SLOT(activateColorPicker())); - QObject::connect(this, SIGNAL(zoomToolActivated()), toolBar, SLOT(activateZoom())); - QObject::connect(this, SIGNAL(marqueeSelectToolActivated()), - toolBar, SLOT(activateMarqueeSelectTool())); -} - void AbstractViewInspector::changeToColorPickerTool() { changeTool(InspectorProtocol::ColorPickerTool); diff --git a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h index 7202bcc..07a52f3 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h +++ b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h @@ -61,7 +61,6 @@ QT_END_NAMESPACE namespace QmlJSDebugger { class AbstractTool; -class ToolBox; /* * The common code between QSGView and QDeclarativeView inspectors lives here, @@ -157,10 +156,6 @@ private: void animationSpeedChangeRequested(qreal factor); void animationPausedChangeRequested(bool paused); - void setToolBoxVisible(bool visible); - void createToolBox(); - - ToolBox *m_toolBox; AbstractTool *m_currentTool; bool m_showAppOnTop; diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/editor.qrc b/src/plugins/qmltooling/qmldbg_inspector/editor/editor.qrc deleted file mode 100644 index fb2393c..0000000 --- a/src/plugins/qmltooling/qmldbg_inspector/editor/editor.qrc +++ /dev/null @@ -1,24 +0,0 @@ - - - images/resize_handle.png - images/select.png - images/select-marquee.png - images/color-picker.png - images/play.png - images/pause.png - images/from-qml.png - images/to-qml.png - images/color-picker-hicontrast.png - images/zoom.png - images/color-picker-24.png - images/from-qml-24.png - images/pause-24.png - images/play-24.png - images/to-qml-24.png - images/zoom-24.png - images/select-24.png - images/select-marquee-24.png - images/inspectormode.png - images/inspectormode-24.png - - diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-24.png deleted file mode 100644 index cff4721..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-hicontrast.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-hicontrast.png deleted file mode 100644 index b953d08..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker-hicontrast.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker.png deleted file mode 100644 index 026c31b..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/color-picker.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml-24.png deleted file mode 100644 index 0ad21f3..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml.png deleted file mode 100644 index 666382c..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/from-qml.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode-24.png deleted file mode 100644 index 5e74d86..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode.png deleted file mode 100644 index daed21c..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/inspectormode.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/pause-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/pause-24.png deleted file mode 100644 index d9a2f6f..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/pause-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/pause.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/pause.png deleted file mode 100644 index 114d89b..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/pause.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/play-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/play-24.png deleted file mode 100644 index e2b9fbc..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/play-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/play.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/play.png deleted file mode 100644 index 011598a..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/play.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/reload.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/reload.png deleted file mode 100644 index 7042bec..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/reload.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/resize_handle.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/resize_handle.png deleted file mode 100644 index 2934f25..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/resize_handle.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-24.png deleted file mode 100644 index 5388a9d..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee-24.png deleted file mode 100644 index 0111dda..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee.png deleted file mode 100644 index 92fe40d..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select-marquee.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/select.png deleted file mode 100644 index 6722855..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/select.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml-24.png deleted file mode 100644 index b72450d..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml.png deleted file mode 100644 index 2ab951f..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/to-qml.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom-24.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom-24.png deleted file mode 100644 index 0346200..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom-24.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom.png b/src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom.png deleted file mode 100644 index 17f0da6..0000000 Binary files a/src/plugins/qmltooling/qmldbg_inspector/editor/images/zoom.png and /dev/null differ diff --git a/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro b/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro index 0116441..e441a78 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro +++ b/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro @@ -21,8 +21,6 @@ SOURCES += \ editor/subcomponentmasklayeritem.cpp \ editor/zoomtool.cpp \ editor/colorpickertool.cpp \ - editor/qmltoolbar.cpp \ - editor/toolbarcolorbox.cpp \ abstracttool.cpp HEADERS += \ @@ -43,12 +41,8 @@ HEADERS += \ editor/subcomponentmasklayeritem.h \ editor/zoomtool.h \ editor/colorpickertool.h \ - editor/qmltoolbar.h \ - editor/toolbarcolorbox.h \ abstracttool.h -RESOURCES += editor/editor.qrc - target.path += $$[QT_INSTALL_PLUGINS]/qmltooling INSTALLS += target -- cgit v0.12 From 9c6a2bf5ac8263ce33a1f72bf2525669c98c12fc Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 10 Aug 2011 16:54:59 +0200 Subject: QmlInspector: Fix compile for QT_NO_CURSOR Change-Id: I0686ba006e6ab42dbd08cda6d36874d1c99009fe --- src/plugins/qmltooling/qmldbg_inspector/editor/colorpickertool.cpp | 2 ++ src/plugins/qmltooling/qmldbg_inspector/editor/liveselectiontool.cpp | 2 ++ src/plugins/qmltooling/qmldbg_inspector/editor/zoomtool.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/colorpickertool.cpp b/src/plugins/qmltooling/qmldbg_inspector/editor/colorpickertool.cpp index 72e1380..efb5471 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/editor/colorpickertool.cpp +++ b/src/plugins/qmltooling/qmldbg_inspector/editor/colorpickertool.cpp @@ -75,7 +75,9 @@ void ColorPickerTool::mouseMoveEvent(QMouseEvent *event) void ColorPickerTool::clear() { +#ifndef QT_NO_CURSOR view()->setCursor(Qt::CrossCursor); +#endif } void ColorPickerTool::pickColor(const QPoint &pos) diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/liveselectiontool.cpp b/src/plugins/qmltooling/qmldbg_inspector/editor/liveselectiontool.cpp index 6085d81..3b2493a 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/editor/liveselectiontool.cpp +++ b/src/plugins/qmltooling/qmldbg_inspector/editor/liveselectiontool.cpp @@ -363,7 +363,9 @@ void LiveSelectionTool::setSelectOnlyContentItems(bool selectOnlyContentItems) void LiveSelectionTool::clear() { +#ifndef QT_NO_CURSOR view()->setCursor(Qt::ArrowCursor); +#endif m_rubberbandSelectionManipulator.clear(), m_singleSelectionManipulator.clear(); m_selectionIndicator.clear(); diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/zoomtool.cpp b/src/plugins/qmltooling/qmldbg_inspector/editor/zoomtool.cpp index c8ade82..b66bc14 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/editor/zoomtool.cpp +++ b/src/plugins/qmltooling/qmldbg_inspector/editor/zoomtool.cpp @@ -244,7 +244,9 @@ void ZoomTool::keyReleaseEvent(QKeyEvent *event) void ZoomTool::clear() { +#ifndef QT_NO_CURSOR view()->setCursor(Qt::ArrowCursor); +#endif } void ZoomTool::scaleView(const QPointF ¢erPos) -- cgit v0.12 From eb5fae761ff2aaf3d35245ac1f9d1ea10c4e84bb Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 11 Aug 2011 10:22:46 +0200 Subject: QmlInspector: Fix moc error Fix regression introduced in 857c7072320339a6ff1. Change-Id: Ie08e8cd75055081976059a3af60b2c60a52260ee Reviewed-by: TrustMe --- src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp index 887a6d4..abd78f9 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp +++ b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp @@ -509,4 +509,3 @@ QString AbstractViewInspector::idStringForObject(QObject *obj) const } // namespace QmlJSDebugger -#include "abstractviewinspector.moc" -- cgit v0.12 From d3599ab224f00915045562562c7fd4d6b9b9aeb4 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 12 Aug 2011 14:03:14 +1000 Subject: Always disconnect signals on aborted reply objects reload() did not disconnect the model from an aborted reply's signals, and if it received a finished() signal from the aborted reply it crashed when trying to access the deleted d->reply. Task-number: QTBUG-20842 --- src/declarative/util/qdeclarativexmllistmodel.cpp | 28 ++++++++++++----------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp index 77fc7de..658dcad 100644 --- a/src/declarative/util/qdeclarativexmllistmodel.cpp +++ b/src/declarative/util/qdeclarativexmllistmodel.cpp @@ -537,6 +537,15 @@ public: emit q->statusChanged(status); } + void deleteReply() { + Q_Q(QDeclarativeXmlListModel); + if (reply) { + QObject::disconnect(reply, 0, q, 0); + reply->deleteLater(); + reply = 0; + } + } + bool isComponentComplete; QUrl src; QString xml; @@ -546,6 +555,7 @@ public: QList roles; QStringList roleNames; int highestRole; + QNetworkReply *reply; QDeclarativeXmlListModel::Status status; QString errorString; @@ -553,6 +563,7 @@ public: int queryId; QStringList keyRoleResultsCache; QList roleObjects; + static void append_role(QDeclarativeListProperty *list, QDeclarativeXmlListModelRole *role); static void clear_role(QDeclarativeListProperty *list); QList > data; @@ -994,11 +1005,7 @@ void QDeclarativeXmlListModel::reload() if (d->reply) { d->reply->abort(); - if (d->reply) { - // abort will generally have already done this (and more) - d->reply->deleteLater(); - d->reply = 0; - } + d->deleteReply(); } if (!d->xml.isEmpty()) { @@ -1032,8 +1039,7 @@ void QDeclarativeXmlListModel::requestFinished() QVariant redirect = d->reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (redirect.isValid()) { QUrl url = d->reply->url().resolved(redirect.toUrl()); - d->reply->deleteLater(); - d->reply = 0; + d->deleteReply(); setSource(url); return; } @@ -1042,9 +1048,7 @@ void QDeclarativeXmlListModel::requestFinished() if (d->reply->error() != QNetworkReply::NoError) { d->errorString = d->reply->errorString(); - disconnect(d->reply, 0, this, 0); - d->reply->deleteLater(); - d->reply = 0; + d->deleteReply(); int count = this->count(); d->data.clear(); @@ -1065,9 +1069,7 @@ void QDeclarativeXmlListModel::requestFinished() } else { d->queryId = QDeclarativeXmlQueryEngine::instance(qmlEngine(this))->doQuery(d->query, d->namespaces, data, &d->roleObjects, d->keyRoleResultsCache); } - disconnect(d->reply, 0, this, 0); - d->reply->deleteLater(); - d->reply = 0; + d->deleteReply(); d->progress = 1.0; emit progressChanged(d->progress); -- cgit v0.12