aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/watchutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/debugger/watchutils.cpp')
-rw-r--r--src/plugins/debugger/watchutils.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp
index 490fd2a64a8..49b4cc02c56 100644
--- a/src/plugins/debugger/watchutils.cpp
+++ b/src/plugins/debugger/watchutils.cpp
@@ -567,21 +567,24 @@ QList<WatchData> QtDumperResult::toWatchData(int source) const
wchild.valuedisabled = dchild.valuedisabled;
wchild.setValue(decodeData(dchild.value, dchild.valueEncoded));
}
- wchild.setType(dchild.type.isEmpty() ? childType : dchild.type);
wchild.setAddress(dchild.address);
- // Child overrides.
- const int effectiveChildChildCount = dchild.childCount == -1 ? childChildCount : dchild.childCount;
- switch (effectiveChildChildCount) {
+ // The type setter sets hasChildren for known types.
+ wchild.setType(dchild.type.isEmpty() ? childType : dchild.type);
+ if (wchild.isHasChildrenNeeded()) {
+ // Child overrides.
+ const int effectiveChildChildCount = dchild.childCount == -1 ? childChildCount : dchild.childCount;
+ switch (effectiveChildChildCount) {
case -1:
- wchild.setChildrenNeeded();
- wchild.setHasChildrenNeeded();
- break;
+ wchild.setChildrenNeeded();
+ wchild.setHasChildrenNeeded();
+ break;
case 0:
- wchild.setHasChildren(false);
- break;
+ wchild.setHasChildren(false);
+ break;
default:
- wchild.setHasChildren(true);
- break;
+ wchild.setHasChildren(true);
+ break;
+ }
}
}
}