diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 9424c16f66c8381b4da917ba8982b876d36dd2a7..f723c9a8e967e589d9f94f23bf8c8b597a9a0b15 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 2c80c368b7510c0f6752633700cb1e55e0113090..3de5f5bc0f6201f7677cdba570e404bbe692473d 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<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) { diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index 632f76ff80861529b1e1a0a3002a48d4502375e9..63af6f654a33a26e7e322f161224fe48b4d16f43 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<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;