diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index ab3a964c13e38a0051cee1c6da36865bd7499e23..36b4ca5315fc60a8ff9c15585417045cb71c383e 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1933,7 +1933,7 @@ void CdbEngine::handleLocals(const CdbExtensionCommandPtr &reply) WatchData dummy; dummy.iname = child["iname"].data(); dummy.name = QLatin1String(child["name"].data()); - parseWatchData(handler->expandedINames(), dummy, child, &watchData); + parseWatchData(dummy, child, &watchData); } // Fix the names of watch data. for (int i =0; i < watchData.size(); ++i) { diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 223acde6d433d6597023fb1aa2d539d8897d4e7c..2dc4ce2e89be301e155aad5040361f4a6c8974ca 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4968,7 +4968,7 @@ void GdbEngine::handleStackFramePython(const GdbResponse &response) name = _(child["name"].data()); WatchItem *item = new WatchItem(iname, name); - item->parseWatchData(handler->expandedINames(), child); + item->parseWatchData(child); const TypeInfo ti = m_typeInfoCache.value(item->d.type); if (ti.size) diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index d68dba73e47ef648fbdbba9cd3ed28df0f747fc6..cd4d78fc5d824b9b62cae702691e126f31c5027e 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -1029,7 +1029,7 @@ void LldbEngine::refreshLocals(const GdbMi &vars) name = QString::fromLatin1(child["name"].data()); WatchItem *item = new WatchItem(iname, name); - item->parseWatchData(handler->expandedINames(), child); + item->parseWatchData(child); if (wname.isValid()) item->d.exp = name.toUtf8(); diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index b332b82e83035e18ee40564a1288548058168180..209201080c8778613288492896cc5b47c5b7ef92 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -808,7 +808,7 @@ void PdbEngine::handleListLocals(const PdbResponse &response) foreach (const GdbMi &child, all.children()) { WatchItem *item = new WatchItem(child["iname"].data(), _(child["name"].data())); - item->parseWatchData(handler->expandedINames(), child); + item->parseWatchData(child); handler->insertItem(item); toDelete.remove(item->d.iname); } diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp index 9288bb341a0d9949407564b47acbf981dc4643f0..f30542431e0b4f2ac445976ced4e2e1a0346d45f 100644 --- a/src/plugins/debugger/watchdata.cpp +++ b/src/plugins/debugger/watchdata.cpp @@ -594,21 +594,16 @@ void decodeArrayData(std::function<void(const WatchData &)> itemHandler, const W } } -void parseChildrenData(const QSet<QByteArray> &expandedINames, - const WatchData &data0, const GdbMi &item, +void parseChildrenData(const WatchData &data0, const GdbMi &item, std::function<void(const WatchData &)> itemHandler, - std::function<void(const QSet<QByteArray> &, const WatchData &, const GdbMi &)> childHandler, + std::function<void(const WatchData &, const GdbMi &)> childHandler, std::function<void(const WatchData &childTemplate, const QByteArray &encodedData, int encoding)> arrayDecoder) { //qDebug() << "HANDLE CHILDREN: " << data0.toString() << item.toString(); WatchData data = data0; - bool isExpanded = expandedINames.contains(data.iname); - if (!isExpanded) - data.setChildrenUnneeded(); + data.setChildrenUnneeded(); GdbMi children = item["children"]; - if (children.isValid() || !isExpanded) - data.setChildrenUnneeded(); data.updateType(item["type"]); GdbMi mi = item["editvalue"]; @@ -698,28 +693,26 @@ void parseChildrenData(const QSet<QByteArray> &expandedINames, int encoding = child["keyencoded"].toInt(); data1.name = decodeData(key, encoding); } - childHandler(expandedINames, data1, child); + childHandler(data1, child); } } } -void parseWatchData(const QSet<QByteArray> &expandedINames, - const WatchData &data0, const GdbMi &input, +void parseWatchData(const WatchData &data0, const GdbMi &input, QList<WatchData> *list) { auto itemHandler = [list](const WatchData &data) { list->append(data); }; - auto childHandler = [list](const QSet<QByteArray> &expandedINames, - const WatchData &innerData, const GdbMi &innerInput) { - parseWatchData(expandedINames, innerData, innerInput, list); + auto childHandler = [list](const WatchData &innerData, const GdbMi &innerInput) { + parseWatchData(innerData, innerInput, list); }; auto arrayDecoder = [itemHandler](const WatchData &childTemplate, const QByteArray &encodedData, int encoding) { decodeArrayData(itemHandler, childTemplate, encodedData, encoding); }; - parseChildrenData(expandedINames, data0, input, itemHandler, childHandler, arrayDecoder); + parseChildrenData(data0, input, itemHandler, childHandler, arrayDecoder); } } // namespace Internal diff --git a/src/plugins/debugger/watchdata.h b/src/plugins/debugger/watchdata.h index 53169bc97251c9bdb5813d10ed24885304a3acf9..6fda3f53ff77d85ad6c188ee6dc07b3cec41557c 100644 --- a/src/plugins/debugger/watchdata.h +++ b/src/plugins/debugger/watchdata.h @@ -159,19 +159,15 @@ void decodeArrayData(std::function<void(const WatchData &)> itemHandler, const QByteArray &rawData, int encoding); -void parseChildrenData(const QSet<QByteArray> &expandedINames, - const WatchData &parent, const GdbMi &child, - std::function<void(const WatchData &)> itemHandler, - std::function<void(const QSet<QByteArray> &, - const WatchData &, - const GdbMi &)> childHandler, - std::function<void(const WatchData &childTemplate, - const QByteArray &encodedData, - int encoding)> arrayDecoder); - -void parseWatchData(const QSet<QByteArray> &expandedINames, - const WatchData &parent, const GdbMi &child, - QList<WatchData> *insertions); +void parseChildrenData(const WatchData &parent, const GdbMi &child, + std::function<void(const WatchData &)> itemHandler, + std::function<void(const WatchData &, const GdbMi &)> childHandler, + std::function<void(const WatchData &childTemplate, + const QByteArray &encodedData, + int encoding)> arrayDecoder); + +void parseWatchData(const WatchData &parent, const GdbMi &child, + QList<WatchData> *insertions); } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index a4f5363d6a29f3b8ddbc2cfa5d7fd79672a898d4..2986ea3256790c10d77d78d9e7fdc73af3d86e4e 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1928,15 +1928,14 @@ WatchModel *WatchItem::watchModel() return static_cast<WatchModel *>(model()); } -void WatchItem::parseWatchData(const QSet<QByteArray> &expandedINames, const GdbMi &input) +void WatchItem::parseWatchData(const GdbMi &input) { auto itemHandler = [this](const WatchData &data) { d = data; }; - auto childHandler = [this](const QSet<QByteArray> &expandedINames, - const WatchData &innerData, const GdbMi &innerInput) { + auto childHandler = [this](const WatchData &innerData, const GdbMi &innerInput) { WatchItem *item = new WatchItem(innerData); - item->parseWatchData(expandedINames, innerInput); + item->parseWatchData(innerInput); appendChild(item); }; @@ -1949,7 +1948,7 @@ void WatchItem::parseWatchData(const QSet<QByteArray> &expandedINames, const Gdb decodeArrayData(itemAdder, childTemplate, encodedData, encoding); }; - parseChildrenData(expandedINames, d, input, itemHandler, childHandler, arrayDecoder); + parseChildrenData(d, input, itemHandler, childHandler, arrayDecoder); } } // namespace Internal diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index 4a1ba185b233d8f337e10dbc029aa401c977c3d0..b6cafc14e97b00595b3811f270f2b0d9f0e1a524 100644 --- a/src/plugins/debugger/watchhandler.h +++ b/src/plugins/debugger/watchhandler.h @@ -75,7 +75,7 @@ public: void formatRequests(QByteArray *out) const; void showInEditorHelper(QString *contents, int depth) const; WatchItem *findItem(const QByteArray &iname); - void parseWatchData(const QSet<QByteArray> &expandedINames, const GdbMi &input); + void parseWatchData(const GdbMi &input); public: WatchData d;