summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-09-28 01:30:24 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-09-28 01:30:24 (GMT)
commit7d0071418f93c5cc5ce04d96a321843db5a0c55b (patch)
treef5593fd289e2acbbcd4ecabc5b816a380ac4ef52
parent553d7bdcdc67927a856b20e7717fb497e4cf7ac9 (diff)
parentef2e4bfcdd95506329ba1d8c6635999f07a474ff (diff)
downloadQt-7d0071418f93c5cc5ce04d96a321843db5a0c55b.zip
Qt-7d0071418f93c5cc5ce04d96a321843db5a0c55b.tar.gz
Qt-7d0071418f93c5cc5ce04d96a321843db5a0c55b.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
-rw-r--r--tools/qmldebugger/engine.cpp46
-rw-r--r--tools/qmldebugger/watchtablemodel.cpp10
-rw-r--r--tools/qmldebugger/watchtablemodel.h6
3 files changed, 40 insertions, 22 deletions
diff --git a/tools/qmldebugger/engine.cpp b/tools/qmldebugger/engine.cpp
index f76110c..8a06213 100644
--- a/tools/qmldebugger/engine.cpp
+++ b/tools/qmldebugger/engine.cpp
@@ -259,9 +259,11 @@ void EnginePane::showProperties()
}
QmlDebugWatch *watch = m_client.addWatch(obj, this);
- m_watchedObject = watch;
- QObject::connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)),
- this, SLOT(valueChanged(QByteArray,QVariant)));
+ if (watch->state() != QmlDebugWatch::Dead) {
+ m_watchedObject = watch;
+ QObject::connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)),
+ this, SLOT(valueChanged(QByteArray,QVariant)));
+ }
delete m_object; m_object = 0;
}
@@ -270,10 +272,12 @@ void EnginePane::addExpressionWatch(int debugId, const QString &expr)
{
QmlDebugWatch *watch = m_client.addWatch(QmlDebugObjectReference(debugId), expr, this);
- QObject::connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)),
- this, SLOT(valueChanged(QByteArray,QVariant)));
- m_watchTableModel->addWatch(watch, expr);
- m_watchTable->resizeColumnsToContents();
+ if (watch->state() != QmlDebugWatch::Dead) {
+ QObject::connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)),
+ this, SLOT(valueChanged(QByteArray,QVariant)));
+ m_watchTableModel->addWatch(watch, expr);
+ m_watchTable->resizeColumnsToContents();
+ }
}
void EnginePane::valueChanged(const QByteArray &propertyName, const QVariant &value)
@@ -297,22 +301,24 @@ void EnginePane::propertyActivated(const QmlDebugPropertyReference &property)
QmlDebugObjectReference object = view->object();
QmlDebugWatch *watch = m_watchTableModel->findWatch(object.debugId(), property.name());
if (watch) {
- m_watchTableModel->removeWatch(watch);
m_client.removeWatch(watch);
delete watch;
+ watch = 0;
} else {
QmlDebugWatch *watch = m_client.addWatch(property, this);
- QObject::connect(watch, SIGNAL(stateChanged(State)),
- this, SLOT(propertyWatchStateChanged()));
- QObject::connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)),
- this, SLOT(valueChanged(QByteArray,QVariant)));
- QString desc = property.name()
- + QLatin1String(" on\n")
- + object.className()
- + QLatin1String(": ")
- + (object.name().isEmpty() ? QLatin1String("<unnamed>") : object.name());
- m_watchTableModel->addWatch(watch, desc);
- m_watchTable->resizeColumnsToContents();
+ if (watch->state() != QmlDebugWatch::Dead) {
+ QObject::connect(watch, SIGNAL(stateChanged(State)),
+ this, SLOT(propertyWatchStateChanged()));
+ QObject::connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)),
+ this, SLOT(valueChanged(QByteArray,QVariant)));
+ QString desc = property.name()
+ + QLatin1String(" on\n")
+ + object.className()
+ + QLatin1String(": ")
+ + (object.name().isEmpty() ? QLatin1String("<unnamed>") : object.name());
+ m_watchTableModel->addWatch(watch, desc);
+ m_watchTable->resizeColumnsToContents();
+ }
}
}
@@ -327,9 +333,9 @@ void EnginePane::stopWatching(int column)
{
QmlDebugWatch *watch = m_watchTableModel->findWatch(column);
if (watch) {
- m_watchTableModel->removeWatch(watch);
m_client.removeWatch(watch);
delete watch;
+ watch = 0;
}
}
diff --git a/tools/qmldebugger/watchtablemodel.cpp b/tools/qmldebugger/watchtablemodel.cpp
index f9defc4..2fed199 100644
--- a/tools/qmldebugger/watchtablemodel.cpp
+++ b/tools/qmldebugger/watchtablemodel.cpp
@@ -18,6 +18,9 @@ void WatchTableModel::addWatch(QmlDebugWatch *watch, const QString &title)
if (qobject_cast<QmlDebugPropertyWatch *>(watch))
property = qobject_cast<QmlDebugPropertyWatch *>(watch)->name();
+ // Watch will be automatically removed when its state is Inactive
+ QObject::connect(watch, SIGNAL(stateChanged(State)), SLOT(watchStateChanged()));
+
int col = columnCount(QModelIndex());
beginInsertColumns(QModelIndex(), col, col);
@@ -142,6 +145,13 @@ QVariant WatchTableModel::data(const QModelIndex &idx, int role) const
}
}
+void WatchTableModel::watchStateChanged()
+{
+ QmlDebugWatch *watch = qobject_cast<QmlDebugWatch*>(sender());
+ if (watch && watch->state() == QmlDebugWatch::Inactive)
+ removeWatch(watch);
+}
+
int WatchTableModel::columnForWatch(QmlDebugWatch *watch) const
{
for (int i=0; i<m_columns.count(); i++) {
diff --git a/tools/qmldebugger/watchtablemodel.h b/tools/qmldebugger/watchtablemodel.h
index 47c654c..ee99920 100644
--- a/tools/qmldebugger/watchtablemodel.h
+++ b/tools/qmldebugger/watchtablemodel.h
@@ -17,8 +17,6 @@ public:
WatchTableModel(QObject *parent = 0);
void addWatch(QmlDebugWatch *watch, const QString &title);
- void removeWatch(QmlDebugWatch *watch);
-
void updateWatch(QmlDebugWatch *watch, const QVariant &value);
QmlDebugWatch *findWatch(int column) const;
@@ -29,9 +27,13 @@ public:
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+private slots:
+ void watchStateChanged();
+
private:
int columnForWatch(QmlDebugWatch *watch) const;
void addValue(int column, const QVariant &value);
+ void removeWatch(QmlDebugWatch *watch);
struct WatchedEntity
{