mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Fixed update problem in Debug view and expression view (bug 186041).
This commit is contained in:
parent
b5503f43ae
commit
3f0952d28b
2 changed files with 30 additions and 18 deletions
|
@ -89,7 +89,7 @@ public abstract class AbstractExpressionLayoutNode<V extends IDMData> extends Ab
|
||||||
protected void getElementForExpressionPart(final IChildrenUpdate update, final String expressionPartText, final DataRequestMonitor<Object> rm) {
|
protected void getElementForExpressionPart(final IChildrenUpdate update, final String expressionPartText, final DataRequestMonitor<Object> rm) {
|
||||||
updateElements(new VMElementsUpdate(
|
updateElements(new VMElementsUpdate(
|
||||||
update, -1, -1,
|
update, -1, -1,
|
||||||
new DataRequestMonitor<List<Object>>(getSession().getExecutor(), rm) {
|
new DataRequestMonitor<List<Object>>(getExecutor(), rm) {
|
||||||
@Override
|
@Override
|
||||||
protected void handleOK() {
|
protected void handleOK() {
|
||||||
if (getData().size() == 0) {
|
if (getData().size() == 0) {
|
||||||
|
|
|
@ -161,17 +161,25 @@ abstract public class AbstractVMProvider implements IVMProvider
|
||||||
if (node.getChildLayoutNodes().length == 0) {
|
if (node.getChildLayoutNodes().length == 0) {
|
||||||
for (IHasChildrenUpdate update : updates) {
|
for (IHasChildrenUpdate update : updates) {
|
||||||
update.setHasChilren(false);
|
update.setHasChilren(false);
|
||||||
|
update.done();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create a matrix of element updates:
|
||||||
|
// The first dimension "i" is the list of children updates that came from the viewer.
|
||||||
|
// For each of these updates, there are "j" number of elment updates corresponding
|
||||||
|
// to the number of child layout nodes in this node.
|
||||||
|
// Each children update from the viewer is complete when all the child layout nodes
|
||||||
|
// fill in their elements update.
|
||||||
|
// Once the matrix is constructed, the child layout nodes are given the list of updates
|
||||||
|
// equal to the updates requested by the viewer.
|
||||||
VMHasElementsUpdate[][] elementsUpdates =
|
VMHasElementsUpdate[][] elementsUpdates =
|
||||||
new VMHasElementsUpdate[node.getChildLayoutNodes().length][updates.length];
|
new VMHasElementsUpdate[node.getChildLayoutNodes().length][updates.length];
|
||||||
for (int i = 0; i < updates.length; i ++)
|
for (int i = 0; i < updates.length; i ++)
|
||||||
{
|
{
|
||||||
final IHasChildrenUpdate update = updates[i];
|
final IHasChildrenUpdate update = updates[i];
|
||||||
for (int j = 0; j < node.getChildLayoutNodes().length; j++)
|
|
||||||
{
|
|
||||||
final MultiRequestMonitor<DataRequestMonitor<Boolean>> hasChildrenMultiRequestMon =
|
final MultiRequestMonitor<DataRequestMonitor<Boolean>> hasChildrenMultiRequestMon =
|
||||||
new MultiRequestMonitor<DataRequestMonitor<Boolean>>(getExecutor(), null) {
|
new MultiRequestMonitor<DataRequestMonitor<Boolean>>(getExecutor(), null) {
|
||||||
@Override
|
@Override
|
||||||
|
@ -184,11 +192,15 @@ abstract public class AbstractVMProvider implements IVMProvider
|
||||||
hasElementsDone.getData().booleanValue();
|
hasElementsDone.getData().booleanValue();
|
||||||
}
|
}
|
||||||
update.setHasChilren(isContainer);
|
update.setHasChilren(isContainer);
|
||||||
update.done();
|
} else {
|
||||||
|
update.setStatus(getStatus());
|
||||||
}
|
}
|
||||||
|
update.done();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
for (int j = 0; j < node.getChildLayoutNodes().length; j++)
|
||||||
|
{
|
||||||
elementsUpdates[j][i] = new VMHasElementsUpdate(
|
elementsUpdates[j][i] = new VMHasElementsUpdate(
|
||||||
update,
|
update,
|
||||||
hasChildrenMultiRequestMon.add(
|
hasChildrenMultiRequestMon.add(
|
||||||
|
|
Loading…
Add table
Reference in a new issue