Fix a case where values wouldn't be requested properly.
- If a node was already expanded, and we then removed/replaced its children, those wouldn't automatically get their value nodes added. Consequently, value retrieval for them would fail until the parent was collapsed/re-expanded. If we encounter such a model node when receiving a value request, notify the table model so it can construct the value node appropriately.
This commit is contained in:
parent
7198436cc2
commit
6a2d6f5062
@ -998,11 +998,9 @@ VariablesView::VariableTableModel::ValueNodeChildrenCreated(
|
||||
child->IsInternal(), childCount == 1);
|
||||
}
|
||||
|
||||
if (valueNode->ChildCreationNeedsValue()) {
|
||||
ModelNode* childNode = fNodeTable.Lookup(child);
|
||||
if (childNode != NULL)
|
||||
fContainerListener->ModelNodeValueRequested(childNode);
|
||||
}
|
||||
ModelNode* childNode = fNodeTable.Lookup(child);
|
||||
if (childNode != NULL)
|
||||
fContainerListener->ModelNodeValueRequested(childNode);
|
||||
}
|
||||
|
||||
if (valueNode->ChildCreationNeedsValue())
|
||||
@ -1921,9 +1919,23 @@ VariablesView::_RequestNodeValue(ModelNode* node)
|
||||
|
||||
// get the value node and check whether its value has not yet been resolved
|
||||
ValueNode* valueNode = nodeChild->Node();
|
||||
if (valueNode == NULL
|
||||
|| valueNode->LocationAndValueResolutionState()
|
||||
!= VALUE_NODE_UNRESOLVED) {
|
||||
if (valueNode == NULL) {
|
||||
ModelNode* parent = node->Parent();
|
||||
if (parent != NULL) {
|
||||
TreeTablePath path;
|
||||
if (!fVariableTableModel->GetTreePath(parent, path))
|
||||
return;
|
||||
|
||||
// if the parent node was already expanded when the child was
|
||||
// added, we may not yet have added a value node.
|
||||
// Notify the table model that this needs to be done.
|
||||
if (fVariableTable->IsNodeExpanded(path))
|
||||
fVariableTableModel->NodeExpanded(parent);
|
||||
}
|
||||
}
|
||||
|
||||
if (valueNode == NULL || valueNode->LocationAndValueResolutionState()
|
||||
!= VALUE_NODE_UNRESOLVED) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user