aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorSimjees Abraham <simjees.abraham@nokia.com>2012-05-23 13:57:56 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-24 12:52:43 +0200
commit1e0a741a81cbe7800a15c76caabe6601d2edf39d (patch)
tree7f4ea89c7a209a0500f9b60aa9fd7dd09c8f8e53 /src/plugins
parentb909ce4f50be282a65f04b1ef19469d5875868e1 (diff)
Debugger : Handling destruction of multiple elements.
Changes made to handle the case where multiple elements are removed in the editor and saved when "Apply on Save" is active. The respsonse is sent with the correct Id. Change-Id: I76dc1487a0a5ebf859d2ef54cc64a4a5fc4008ca Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/qmltooling/shared/abstractviewinspector.cpp17
-rw-r--r--src/plugins/qmltooling/shared/abstractviewinspector.h5
2 files changed, 12 insertions, 10 deletions
diff --git a/src/plugins/qmltooling/shared/abstractviewinspector.cpp b/src/plugins/qmltooling/shared/abstractviewinspector.cpp
index e5d56277d7..c3eb24e659 100644
--- a/src/plugins/qmltooling/shared/abstractviewinspector.cpp
+++ b/src/plugins/qmltooling/shared/abstractviewinspector.cpp
@@ -91,8 +91,7 @@ AbstractViewInspector::AbstractViewInspector(QObject *parent) :
m_enabled(false),
m_debugService(QQmlInspectorService::instance()),
m_eventId(0),
- m_reloadEventId(-1),
- m_destroyEventId(-1)
+ m_reloadEventId(-1)
{
}
@@ -270,18 +269,20 @@ bool AbstractViewInspector::touchEvent(QTouchEvent *event)
return true;
}
-void AbstractViewInspector::onQmlObjectDestroyed()
+void AbstractViewInspector::onQmlObjectDestroyed(QObject *object)
{
- if (m_destroyEventId == -1)
+ if (!m_hashObjectsTobeDestroyed.contains(object))
return;
+ int removeId = m_hashObjectsTobeDestroyed.take(object);
+ QQmlDebugService::removeInvalidObjectsFromHash();
+
QByteArray response;
QQmlDebugStream rs(&response, QIODevice::WriteOnly);
- rs << QByteArray(RESPONSE) << m_destroyEventId << true;
+ rs << QByteArray(RESPONSE) << removeId << true;
m_debugService->sendMessage(response);
- m_destroyEventId = -1;
}
void AbstractViewInspector::handleMessage(const QByteArray &message)
@@ -344,9 +345,9 @@ void AbstractViewInspector::handleMessage(const QByteArray &message)
} else if (command == DESTROY_OBJECT) {
int debugId;
ds >> debugId;
- m_destroyEventId = requestId;
if (QObject *obj = QQmlDebugService::objectForId(debugId)) {
- connect(obj, SIGNAL(destroyed()), SLOT(onQmlObjectDestroyed()));
+ m_hashObjectsTobeDestroyed.insert(obj, requestId);
+ connect(obj, SIGNAL(destroyed(QObject*)), SLOT(onQmlObjectDestroyed(QObject*)));
obj->deleteLater();
}
return;
diff --git a/src/plugins/qmltooling/shared/abstractviewinspector.h b/src/plugins/qmltooling/shared/abstractviewinspector.h
index 3addacf996..ad42ba7a83 100644
--- a/src/plugins/qmltooling/shared/abstractviewinspector.h
+++ b/src/plugins/qmltooling/shared/abstractviewinspector.h
@@ -111,7 +111,7 @@ protected:
virtual bool touchEvent(QTouchEvent *event);
private slots:
- void onQmlObjectDestroyed();
+ void onQmlObjectDestroyed(QObject *object);
private:
void setEnabled(bool value);
@@ -126,7 +126,8 @@ private:
QList<AbstractTool *> m_tools;
int m_eventId;
int m_reloadEventId;
- int m_destroyEventId;
+ // Hash< object to be destroyed, destroy eventId >
+ QHash<QObject *, int> m_hashObjectsTobeDestroyed;
};
} // namespace QmlJSDebugger