Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java')
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java23
1 files changed, 18 insertions, 5 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java
index cd1752913..6cf217192 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java
@@ -627,15 +627,28 @@ public abstract class AbstractSynchronizeModelProvider implements ISynchronizeMo
}
}
// Remove the node from the tree
- IDiffContainer parent = node.getParent();
- if (parent != null) {
- parent.removeToRoot(node);
- }
+ removeToRoot(node);
+
// Notify the update handler that the node has been cleared
updateHandler.modelObjectCleared(node);
}
- /**
+ /*
+ * Remove to root should only remove to the root of the provider and not the
+ * diff tree.
+ */
+ private void removeToRoot(ISynchronizeModelElement node) {
+ if (node == getModelRoot()) return;
+ IDiffContainer parent = node.getParent();
+ if (parent != null) {
+ ((SynchronizeModelElement)parent).remove(node);
+ if (!parent.hasChildren()) {
+ removeToRoot((ISynchronizeModelElement)parent);
+ }
+ }
+ }
+
+ /**
* Return the provider that created and manages the given
* model element. The default is to return the receiver.
* Subclasses may override.

Back to the top