Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreutarass2010-06-29 22:50:17 +0000
committereutarass2010-06-29 22:50:17 +0000
commitff36bd97c48081d1e568de58bb6bc64bdddceb6a (patch)
tree6a32b3d5308701c6d73c1b16e67c5ca98feabe4c
parente07bb1ae00d4f83f7aaa021e65a89f1f946f9da2 (diff)
downloadorg.eclipse.tcf-ff36bd97c48081d1e568de58bb6bc64bdddceb6a.tar.gz
org.eclipse.tcf-ff36bd97c48081d1e568de58bb6bc64bdddceb6a.tar.xz
org.eclipse.tcf-ff36bd97c48081d1e568de58bb6bc64bdddceb6a.zip
TCF Debugger: trim children of CONTENT model deltas - views implementation seems to propagate such deltas down the tree by itself
-rw-r--r--plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModelProxy.java19
1 files changed, 10 insertions, 9 deletions
diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModelProxy.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModelProxy.java
index 5cf456e9c..09d35b4a1 100644
--- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModelProxy.java
+++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModelProxy.java
@@ -249,8 +249,10 @@ public class TCFModelProxy extends AbstractModelProxy implements IModelProxy, Ru
return -1;
}
- private ModelDelta makeDelta(ModelDelta root, TCFNode node, int flags, boolean selection_delta) {
+ private ModelDelta makeDelta(ModelDelta root, TCFNode node, boolean selection_delta) {
+ Integer flags_obj = node2flags.get(node);
ModelDelta delta = node2delta.get(node);
+ int flags = flags_obj != null ? flags_obj.intValue() : 0;
if (delta == null) {
TCFNode parent = node.parent;
if (parent == null) {
@@ -265,11 +267,7 @@ public class TCFModelProxy extends AbstractModelProxy implements IModelProxy, Ru
delta = root;
}
else {
- int parent_flags = 0;
- Integer parent_flags_obj = node2flags.get(parent);
- if (parent_flags_obj != null) parent_flags = parent_flags_obj;
- if ((parent_flags & IModelDelta.REMOVED) != 0) return null;
- ModelDelta up = makeDelta(root, parent, parent_flags, selection_delta);
+ ModelDelta up = makeDelta(root, parent, selection_delta);
if (up == null) return null;
int index = -1;
int children = -1;
@@ -284,7 +282,8 @@ public class TCFModelProxy extends AbstractModelProxy implements IModelProxy, Ru
}
node2delta.put(node, delta);
}
- assert delta.getFlags() == flags;
+ if ((flags & IModelDelta.REMOVED) != 0) return null;
+ if ((flags & IModelDelta.CONTENT) != 0) return null;
return delta;
}
@@ -324,7 +323,7 @@ public class TCFModelProxy extends AbstractModelProxy implements IModelProxy, Ru
node2children.clear();
node2delta.clear();
ModelDelta root = new ModelDelta(input, flags);
- for (TCFNode node : node2flags.keySet()) makeDelta(root, node, node2flags.get(node), false);
+ for (TCFNode node : node2flags.keySet()) makeDelta(root, node, false);
if (pending_node == null) {
node2flags.clear();
if ((root.getFlags() != 0 || node2delta.size() > 0) && (root.getFlags() & IModelDelta.REMOVED) == 0) {
@@ -333,9 +332,11 @@ public class TCFModelProxy extends AbstractModelProxy implements IModelProxy, Ru
node2delta.clear();
last_update_time = System.currentTimeMillis();
if (selection != null) {
+ node2flags.put(selection, IModelDelta.SELECT | IModelDelta.EXPAND);
root = new ModelDelta(input, IModelDelta.NO_CHANGE);
- makeDelta(root, selection, IModelDelta.SELECT | IModelDelta.EXPAND, true);
+ makeDelta(root, selection, true);
node2delta.clear();
+ node2flags.clear();
if (pending_node == null) {
postDelta(root);
selection = null;

Back to the top