summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Goffart <olivier.goffart@nokia.com>2010-07-16 16:37:40 +0200
committerOlivier Goffart <olivier.goffart@nokia.com>2010-07-16 16:38:50 +0200
commitc1d681811aa496b56ed62137e0e0ee38e4d207eb (patch)
tree89ab136f0b85ada3c6e0be586957a8408bcfe169
parent4b504323ec747407f195e82e3ce5fe4215ff0b12 (diff)
downloadqt-creator-c1d681811aa496b56ed62137e0e0ee38e4d207eb.tar.gz
QmlJsDelta: When coputing the debug ids, we need to do it on the original document.
Else, the line numbers does not match anymore.
-rw-r--r--src/plugins/qmljsinspector/qmljsdelta.cpp12
-rw-r--r--src/plugins/qmljsinspector/qmljsdelta.h5
-rw-r--r--src/plugins/qmljsinspector/qmljsinspector.h3
-rw-r--r--src/plugins/qmljsinspector/qmljslivetextpreview.cpp7
-rw-r--r--src/plugins/qmljsinspector/qmljslivetextpreview.h2
5 files changed, 22 insertions, 7 deletions
diff --git a/src/plugins/qmljsinspector/qmljsdelta.cpp b/src/plugins/qmljsinspector/qmljsdelta.cpp
index c4ee16aee2..1a45632bec 100644
--- a/src/plugins/qmljsinspector/qmljsdelta.cpp
+++ b/src/plugins/qmljsinspector/qmljsdelta.cpp
@@ -280,6 +280,9 @@ static QString _methodName(UiSourceElement *source)
void Delta::insert(UiObjectMember *member, UiObjectMember *parentMember, const QList<QDeclarativeDebugObjectReference > &debugReferences, const Document::Ptr &doc)
{
+ if (doNotSendChanges)
+ return;
+
if (!member || !parentMember)
return;
@@ -311,6 +314,9 @@ void QmlJSInspector::Internal::Delta::update(UiObjectDefinition* oldObject, cons
UiObjectDefinition* newObject, const QmlJS::Document::Ptr& newDoc,
const QList< QDeclarativeDebugObjectReference >& debugReferences)
{
+ if (doNotSendChanges)
+ return;
+
Q_ASSERT (oldObject && newObject);
QSet<QString> presentBinding;
@@ -372,6 +378,10 @@ void QmlJSInspector::Internal::Delta::update(UiObjectDefinition* oldObject, cons
}
}
+
+ if (doNotSendChanges)
+ return;
+
//reset property that are not present in the new object.
for (UiObjectMemberList *previousObjectMemberIt = Delta::objectMembers(oldObject); previousObjectMemberIt; previousObjectMemberIt = previousObjectMemberIt->next) {
if (UiScriptBinding *previousScript = cast<UiScriptBinding *>(previousObjectMemberIt->member)) {
@@ -562,6 +572,8 @@ void Delta::updateScriptBinding(const QDeclarativeDebugObjectReference &objectRe
const QString &propertyName,
const QString &scriptCode)
{
+ if (doNotSendChanges)
+ return;
QVariant expr = scriptCode;
const bool isLiteral = isLiteralValue(scriptBinding);
diff --git a/src/plugins/qmljsinspector/qmljsdelta.h b/src/plugins/qmljsinspector/qmljsdelta.h
index 5cad4c68fd..d58d9c5f3b 100644
--- a/src/plugins/qmljsinspector/qmljsdelta.h
+++ b/src/plugins/qmljsinspector/qmljsdelta.h
@@ -46,6 +46,10 @@ namespace Internal {
class Delta
{
public:
+ Delta() : doNotSendChanges(false) {}
+
+ bool doNotSendChanges;
+
struct Change {
Change(): script(0), isLiteral(false) {}
@@ -54,7 +58,6 @@ public:
QDeclarativeDebugObjectReference ref;
};
-public:
typedef QHash< UiObjectMember*, QList<QDeclarativeDebugObjectReference > > DebugIdMap;
DebugIdMap operator()(const QmlJS::Document::Ptr &doc1, const QmlJS::Document::Ptr &doc2, const DebugIdMap &debugIds);
diff --git a/src/plugins/qmljsinspector/qmljsinspector.h b/src/plugins/qmljsinspector/qmljsinspector.h
index 8c8174922d..dba440d40f 100644
--- a/src/plugins/qmljsinspector/qmljsinspector.h
+++ b/src/plugins/qmljsinspector/qmljsinspector.h
@@ -75,9 +75,6 @@ public:
CppProjectWithQmlEngines,
QmlProjectWithCppPlugins
};
-
- QHash< QString, QList< QPair< QmlJS::AST::UiObjectMember*, int > > > m_initialTable;
-
public:
Inspector(QObject *parent = 0);
virtual ~Inspector();
diff --git a/src/plugins/qmljsinspector/qmljslivetextpreview.cpp b/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
index b4307e6444..d3f1b14b68 100644
--- a/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
+++ b/src/plugins/qmljsinspector/qmljslivetextpreview.cpp
@@ -98,7 +98,7 @@ void QmlJSLiveTextPreview::unassociateEditor(Core::IEditor *oldEditor)
}
QmlJSLiveTextPreview::QmlJSLiveTextPreview(QmlJS::Document::Ptr doc, QObject *parent) :
- QObject(parent), m_previousDoc(doc)
+ QObject(parent), m_previousDoc(doc), m_initialDoc(doc)
{
ClientProxy *clientProxy = ClientProxy::instance();
m_filename = doc->fileName();
@@ -177,7 +177,7 @@ void QmlJSLiveTextPreview::changeSelectedElements(QList<int> offsets, const QStr
void QmlJSLiveTextPreview::updateDebugIds(const QDeclarativeDebugObjectReference &rootReference)
{
- QmlJS::Document::Ptr doc = m_previousDoc;
+ QmlJS::Document::Ptr doc = m_initialDoc;
if (!doc->qmlProgram())
return;
@@ -188,6 +188,9 @@ void QmlJSLiveTextPreview::updateDebugIds(const QDeclarativeDebugObjectReference
doc->qmlProgram()->accept(&visitor);
m_debugIds = visitor.result;
+ Delta delta;
+ delta.doNotSendChanges = true;
+ m_debugIds = delta(doc, m_previousDoc, m_debugIds);
}
void QmlJSLiveTextPreview::documentChanged(QmlJS::Document::Ptr doc)
diff --git a/src/plugins/qmljsinspector/qmljslivetextpreview.h b/src/plugins/qmljsinspector/qmljslivetextpreview.h
index 1b19001058..82651aa327 100644
--- a/src/plugins/qmljsinspector/qmljslivetextpreview.h
+++ b/src/plugins/qmljsinspector/qmljslivetextpreview.h
@@ -55,10 +55,10 @@ private:
QVariant castToLiteral(const QString &expression, QmlJS::AST::UiScriptBinding *scriptBinding);
private:
- QHash<QmlJS::AST::UiObjectMember*, QList<QDeclarativeDebugObjectReference> > m_initialTable;
QHash<QmlJS::AST::UiObjectMember*, QList<QDeclarativeDebugObjectReference> > m_debugIds;
QmlJS::Document::Ptr m_previousDoc;
+ QmlJS::Document::Ptr m_initialDoc; //the document that was loaded by the server
QString m_filename;
QList<QWeakPointer<QmlJSEditor::Internal::QmlJSTextEditor> > m_editors;