From 4ceabf26d4c0ba0bf023c7f7605bca639f338c48 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 4 Nov 2009 17:44:11 +0100 Subject: [PATCH] debugger: fix issue where child items oeverwrite parent items in the watch model. The real problems is somewhere in the watch model. This patch does only prevent the wrong (and unneeded) questions to be asked in the first place. It does not fix the wrong handling of the answer in the watch model. Reviewed-by: Oswald Buddenhagen --- src/plugins/debugger/gdb/gdbengine.cpp | 27 +++++++++----------------- 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index cc3296357e7..d548e5b7309 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3257,23 +3257,13 @@ void GdbEngine::handleVarCreate(const GdbResponse &response) if (response.resultClass == GdbResultDone) { data.variable = data.iname; setWatchDataType(data, response.data.findChild("type")); - if (hasDebuggingHelperForType(data.type)) { - // we do not trust gdb if we have a custom dumper - if (response.data.findChild("children").isValid()) - data.setChildrenUnneeded(); - else if (manager()->watchHandler()->isExpandedIName(data.iname)) - data.setChildrenNeeded(); - insertData(data); - } else { - if (response.data.findChild("children").isValid()) - data.setChildrenUnneeded(); - else if (manager()->watchHandler()->isExpandedIName(data.iname)) - data.setChildrenNeeded(); - setWatchDataChildCount(data, response.data.findChild("numchild")); - //if (data.isValueNeeded() && data.childCount > 0) - // data.setValue(QString()); - insertData(data); - } + if (manager()->watchHandler()->isExpandedIName(data.iname) + && !response.data.findChild("children").isValid()) + data.setChildrenNeeded(); + else + data.setChildrenUnneeded(); + setWatchDataChildCount(data, response.data.findChild("numchild")); + insertData(data); } else { data.setError(QString::fromLocal8Bit(response.data.findChild("msg").data())); if (data.isWatcher()) { @@ -3718,7 +3708,8 @@ void GdbEngine::insertData(const WatchData &data0) void GdbEngine::handleVarListChildrenHelper(const GdbMi &item, const WatchData &parent) { - //qDebug() << "VAR_LIST_CHILDREN: APPENDEE" << data.toString(); + //qDebug() << "VAR_LIST_CHILDREN: PARENT" << parent.toString(); + //qDebug() << "VAR_LIST_CHILDREN: ITEM" << item.toString(); QByteArray exp = item.findChild("exp").data(); QByteArray name = item.findChild("name").data(); if (isAccessSpecifier(_(exp))) { -- GitLab