Removed fix for 17733.
diff --git a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/PartTabFolder.java b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/PartTabFolder.java
index 9478fcc..a9a072a 100644
--- a/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/PartTabFolder.java
+++ b/bundles/org.eclipse.ui/Eclipse UI/org/eclipse/ui/internal/PartTabFolder.java
@@ -324,7 +324,7 @@
if (tabFolder != null)
tabFolder.dispose();
tabFolder = null;
- current = null;
+
active = false;
}
/**
@@ -496,8 +496,6 @@
child.setBounds(0, 0, 0, 0);
child.setContainer(null);
}
- if(current == child)
- current = null;
}
private void removeTab(CTabItem tab) {
// disable any d&d based on this tab
@@ -642,25 +640,28 @@
// remove old child from display
if (active) {
Iterator keys = mapTabToPart.keySet().iterator();
- CTabItem tab = null;
- LayoutPart nextPart = null;
- boolean partIsActive = false;
while (keys.hasNext()) {
CTabItem key = (CTabItem)keys.next();
LayoutPart part = (LayoutPart)mapTabToPart.get(key);
if (part == oldChild) {
- partIsActive = (current == oldChild);
- tab = key;
- } else {
- nextPart = part;
- }
- if(tab != null && nextPart != null)
+ boolean partIsActive = (current == oldChild);
+ TabInfo info = new TabInfo();
+ info.part = newChild;
+ info.tabText = key.getText();
+ removeTab(key);
+ int index = 0;
+ if (invisibleChildren != null)
+ index = invisibleChildren.length;
+ invisibleChildren = arrayAdd(invisibleChildren, info, index);
+ oldChild.setBounds(new Rectangle(0, 0, 0, 0));
+ oldChild.setContainer(null);
+ newChild.setContainer(this);
+ if (tabFolder.getItemCount() > 0 && !partIsActive) {
+ setControlSize(current);
+ }
break;
+ }
}
- if(tab != null)
- replaceChild(oldChild, newChild, tab, partIsActive);
- if(partIsActive && nextPart != null)
- current = nextPart;
} else if (invisibleChildren != null) {
for (int i = 0, length = invisibleChildren.length; i < length; i++){
if (invisibleChildren[i].part == oldChild) {
@@ -670,22 +671,6 @@
}
}
-private void replaceChild(LayoutPart oldChild, PartPlaceholder newChild, CTabItem key, boolean partIsActive) {
- TabInfo info = new TabInfo();
- info.part = newChild;
- info.tabText = key.getText();
- removeTab(key);
- int index = 0;
- if (invisibleChildren != null)
- index = invisibleChildren.length;
- invisibleChildren = arrayAdd(invisibleChildren, info, index);
- oldChild.setBounds(new Rectangle(0, 0, 0, 0));
- oldChild.setContainer(null);
- newChild.setContainer(this);
- if (tabFolder.getItemCount() > 0 && !partIsActive) {
- setControlSize(current);
- }
-}
private void replaceChild(PartPlaceholder oldChild, LayoutPart newChild) {
if (invisibleChildren == null) return;