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)),
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()),
SLOT(createFullBacktrace()));
}

View File

@@ -256,6 +256,25 @@ void WatchModel::destroyItem(WatchItem *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)
{
int pos = iname.lastIndexOf('.');
@@ -1204,12 +1223,12 @@ WatchHandler::WatchHandler(DebuggerEngine *engine)
m_watchers = new WatchModel(this, WatchersWatch);
m_tooltips = new WatchModel(this, TooltipsWatch);
connect(debuggerCore()->action(ShowStdNamespace),
SIGNAL(triggered()), SLOT(emitAllChanged()));
connect(debuggerCore()->action(ShowQtNamespace),
SIGNAL(triggered()), SLOT(emitAllChanged()));
connect(debuggerCore()->action(SortStructMembers),
SIGNAL(triggered()), SLOT(emitAllChanged()));
connect(debuggerCore()->action(SortStructMembers), SIGNAL(valueChanged(QVariant)),
SLOT(reinsertAllData()));
connect(debuggerCore()->action(ShowStdNamespace), SIGNAL(valueChanged(QVariant)),
SLOT(reinsertAllData()));
connect(debuggerCore()->action(ShowQtNamespace), SIGNAL(valueChanged(QVariant)),
SLOT(reinsertAllData()));
}
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
void WatchHandler::insertBulkData(const QList<WatchData> &list)
{

View File

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