diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 9424c16f66c..f723c9a8e96 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -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())); } diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 2c80c368b75..3de5f5bc0f6 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -256,6 +256,25 @@ void WatchModel::destroyItem(WatchItem *item) delete item; } +void WatchModel::reinsertAllData() +{ + QList list; + reinsertAllDataHelper(m_root, &list); + reinitialize(); + foreach (WatchItem data, list) { + data.setAllUnneeded(); + insertData(data); + } + layoutChanged(); +} + +void WatchModel::reinsertAllDataHelper(WatchItem *item, QList *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 &list) { diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index 632f76ff808..63af6f654a3 100644 --- a/src/plugins/debugger/watchhandler.h +++ b/src/plugins/debugger/watchhandler.h @@ -98,6 +98,8 @@ private: const WatchItem *parentItem, const QModelIndex &parentIndex) const; void insertData(const WatchData &data); + void reinsertAllData(); + void reinsertAllDataHelper(WatchItem *item, QList *data); void insertBulkData(const QList &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 &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;