debugger: immediate refresh after toggling sort order of struct members

Change-Id: Iac7de58ca8681a60a4b6c9d0e717eb57753898b5
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
hjk
2011-11-24 18:14:49 +01:00
committed by hjk
parent 37161a4194
commit 3a210a19c9
3 changed files with 36 additions and 12 deletions

View File

@@ -220,12 +220,6 @@ GdbEngine::GdbEngine(const DebuggerStartParameters &startParameters,
connect(debuggerCore()->action(AutoDerefPointers), SIGNAL(valueChanged(QVariant)), connect(debuggerCore()->action(AutoDerefPointers), SIGNAL(valueChanged(QVariant)),
SLOT(reloadLocals())); SLOT(reloadLocals()));
connect(debuggerCore()->action(SortStructMembers), SIGNAL(valueChanged(QVariant)),
SLOT(reloadLocals()));
connect(debuggerCore()->action(ShowStdNamespace), SIGNAL(valueChanged(QVariant)),
SLOT(reloadLocals()));
connect(debuggerCore()->action(ShowQtNamespace), SIGNAL(valueChanged(QVariant)),
SLOT(reloadLocals()));
connect(debuggerCore()->action(CreateFullBacktrace), SIGNAL(triggered()), connect(debuggerCore()->action(CreateFullBacktrace), SIGNAL(triggered()),
SLOT(createFullBacktrace())); SLOT(createFullBacktrace()));
} }

View File

@@ -256,6 +256,25 @@ void WatchModel::destroyItem(WatchItem *item)
delete item; delete item;
} }
void WatchModel::reinsertAllData()
{
QList<WatchData> list;
reinsertAllDataHelper(m_root, &list);
reinitialize();
foreach (WatchItem data, list) {
data.setAllUnneeded();
insertData(data);
}
layoutChanged();
}
void WatchModel::reinsertAllDataHelper(WatchItem *item, QList<WatchData> *data)
{
data->append(*item);
foreach (WatchItem *child, item->children)
reinsertAllDataHelper(child, data);
}
static QByteArray parentName(const QByteArray &iname) static QByteArray parentName(const QByteArray &iname)
{ {
int pos = iname.lastIndexOf('.'); int pos = iname.lastIndexOf('.');
@@ -1204,12 +1223,12 @@ WatchHandler::WatchHandler(DebuggerEngine *engine)
m_watchers = new WatchModel(this, WatchersWatch); m_watchers = new WatchModel(this, WatchersWatch);
m_tooltips = new WatchModel(this, TooltipsWatch); m_tooltips = new WatchModel(this, TooltipsWatch);
connect(debuggerCore()->action(ShowStdNamespace), connect(debuggerCore()->action(SortStructMembers), SIGNAL(valueChanged(QVariant)),
SIGNAL(triggered()), SLOT(emitAllChanged())); SLOT(reinsertAllData()));
connect(debuggerCore()->action(ShowQtNamespace), connect(debuggerCore()->action(ShowStdNamespace), SIGNAL(valueChanged(QVariant)),
SIGNAL(triggered()), SLOT(emitAllChanged())); SLOT(reinsertAllData()));
connect(debuggerCore()->action(SortStructMembers), connect(debuggerCore()->action(ShowQtNamespace), SIGNAL(valueChanged(QVariant)),
SIGNAL(triggered()), SLOT(emitAllChanged())); SLOT(reinsertAllData()));
} }
void WatchHandler::beginCycle(bool fullCycle) void WatchHandler::beginCycle(bool fullCycle)
@@ -1295,6 +1314,14 @@ void WatchHandler::insertData(const WatchData &data)
} }
} }
void WatchHandler::reinsertAllData()
{
m_locals->reinsertAllData();
m_watchers->reinsertAllData();
m_tooltips->reinsertAllData();
m_return->reinsertAllData();
}
// Bulk-insertion // Bulk-insertion
void WatchHandler::insertBulkData(const QList<WatchData> &list) void WatchHandler::insertBulkData(const QList<WatchData> &list)
{ {

View File

@@ -98,6 +98,8 @@ private:
const WatchItem *parentItem, const QModelIndex &parentIndex) const; const WatchItem *parentItem, const QModelIndex &parentIndex) const;
void insertData(const WatchData &data); void insertData(const WatchData &data);
void reinsertAllData();
void reinsertAllDataHelper(WatchItem *item, QList<WatchData> *data);
void insertBulkData(const QList<WatchData> &data); void insertBulkData(const QList<WatchData> &data);
WatchItem *findItem(const QByteArray &iname, WatchItem *root) const; WatchItem *findItem(const QByteArray &iname, WatchItem *root) const;
void reinitialize(); void reinitialize();
@@ -159,6 +161,7 @@ public:
void insertData(const WatchData &data); void insertData(const WatchData &data);
void insertBulkData(const QList<WatchData> &data); void insertBulkData(const QList<WatchData> &data);
void removeData(const QByteArray &iname); void removeData(const QByteArray &iname);
Q_SLOT void reinsertAllData();
const WatchData *watchData(WatchType type, const QModelIndex &) const; const WatchData *watchData(WatchType type, const QModelIndex &) const;
const WatchData *findItem(const QByteArray &iname) const; const WatchData *findItem(const QByteArray &iname) const;