Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Moffatt2013-10-03 19:18:27 +0000
committerEric Moffatt2013-10-03 19:18:52 +0000
commit7c2051c64a1cb377923565018609ea5d10524448 (patch)
tree0050e7db3e0c60ec10c98258f37ed84b9652a129
parentad3869bd9cacfe84929ee0f005a96e9a9b70266f (diff)
downloadeclipse.platform.ui-7c2051c64a1cb377923565018609ea5d10524448.tar.gz
eclipse.platform.ui-7c2051c64a1cb377923565018609ea5d10524448.tar.xz
eclipse.platform.ui-7c2051c64a1cb377923565018609ea5d10524448.zip
Update Fix for Bug 417960 - [EditorMgmt] History view dropdown menu
disappears
-rw-r--r--bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java135
1 files changed, 68 insertions, 67 deletions
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java
index 87f28579285..bd4c87b38c4 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java
@@ -566,79 +566,80 @@ public class StackRenderer extends LazyStackRenderer {
return;
adjusting = true;
- MPartStack stack = (MPartStack) ctf.getData(OWNING_ME);
- MUIElement element = stack.getSelectedElement();
- if (element == null && ctf.getItemCount() > 1) {
- // We'll be selecting another item...
- adjusting = false;
- return;
- }
-
- MPart curPart = (MPart) ctf.getTopRight().getData("thePart"); //$NON-NLS-1$
- MPart part = null;
- if (element != null) {
- part = (MPart) ((element instanceof MPart) ? element
- : ((MPlaceholder) element).getRef());
- }
- // Hide the old TB if we're changing
- if (part != curPart && curPart != null && curPart.getToolbar() != null) {
- curPart.getToolbar().setVisible(false);
- }
+ try {
+ // Gather the parameters...old part, new part...
+ MPartStack stack = (MPartStack) ctf.getData(OWNING_ME);
+ MUIElement element = stack.getSelectedElement();
+ MPart curPart = (MPart) ctf.getTopRight().getData("thePart"); //$NON-NLS-1$
+ MPart part = null;
+ if (element != null) {
+ part = (MPart) ((element instanceof MPart) ? element
+ : ((MPlaceholder) element).getRef());
+ }
- Composite trComp = (Composite) ctf.getTopRight();
- Control[] kids = trComp.getChildren();
-
- boolean needsTB = part != null && part.getToolbar() != null
- && part.getToolbar().isToBeRendered();
-
- // View menu (if any)
- MMenu viewMenu = getViewMenu(part);
- boolean needsMenu = viewMenu != null
- && hasVisibleMenuItems(viewMenu, part);
-
- // Check the current state of the TB's
- ToolBar menuTB = (ToolBar) kids[kids.length - 1];
-
- // We need to modify the 'exclude' bit based on if the menuTB is
- // visible or not
- RowData rd = (RowData) menuTB.getLayoutData();
- if (needsMenu) {
- menuTB.getItem(0).setData("thePart", part); //$NON-NLS-1$
- menuTB.moveBelow(null);
- menuTB.pack();
- rd.exclude = false;
- menuTB.setVisible(true);
- } else {
- menuTB.getItem(0).setData("thePart", null); //$NON-NLS-1$
- rd.exclude = true;
- menuTB.setVisible(false);
- }
+ // Hide the old TB if we're changing
+ if (part != curPart && curPart != null
+ && curPart.getToolbar() != null) {
+ curPart.getToolbar().setVisible(false);
+ }
- ToolBar newViewTB = null;
- if (needsTB) {
- part.getToolbar().setVisible(true);
- newViewTB = (ToolBar) renderer.createGui(part.getToolbar(),
- ctf.getTopRight(), part.getContext());
- if (newViewTB == null)
- return;
- newViewTB.moveAbove(null);
- newViewTB.pack();
- }
+ Composite trComp = (Composite) ctf.getTopRight();
+ Control[] kids = trComp.getChildren();
+
+ boolean needsTB = part != null && part.getToolbar() != null
+ && part.getToolbar().isToBeRendered();
+
+ // View menu (if any)
+ MMenu viewMenu = getViewMenu(part);
+ boolean needsMenu = viewMenu != null
+ && hasVisibleMenuItems(viewMenu, part);
+
+ // Check the current state of the TB's
+ ToolBar menuTB = (ToolBar) kids[kids.length - 1];
+
+ // We need to modify the 'exclude' bit based on if the menuTB is
+ // visible or not
+ RowData rd = (RowData) menuTB.getLayoutData();
+ if (needsMenu) {
+ menuTB.getItem(0).setData("thePart", part); //$NON-NLS-1$
+ menuTB.moveBelow(null);
+ menuTB.pack();
+ rd.exclude = false;
+ menuTB.setVisible(true);
+ } else {
+ menuTB.getItem(0).setData("thePart", null); //$NON-NLS-1$
+ rd.exclude = true;
+ menuTB.setVisible(false);
+ }
- if (needsMenu || needsTB) {
- ctf.getTopRight().setData("thePart", part); //$NON-NLS-1$
- ctf.getTopRight().pack(true);
- ctf.getTopRight().setVisible(true);
- } else {
- ctf.getTopRight().setData("thePart", null); //$NON-NLS-1$
- ctf.getTopRight().setVisible(false);
- }
+ ToolBar newViewTB = null;
+ if (needsTB) {
+ part.getToolbar().setVisible(true);
+ newViewTB = (ToolBar) renderer.createGui(part.getToolbar(),
+ ctf.getTopRight(), part.getContext());
+ if (newViewTB == null) {
+ adjusting = false;
+ return;
+ }
+ newViewTB.moveAbove(null);
+ newViewTB.pack();
+ }
- // Pack the result
- trComp.pack();
+ if (needsMenu || needsTB) {
+ ctf.getTopRight().setData("thePart", part); //$NON-NLS-1$
+ ctf.getTopRight().pack(true);
+ ctf.getTopRight().setVisible(true);
+ } else {
+ ctf.getTopRight().setData("thePart", null); //$NON-NLS-1$
+ ctf.getTopRight().setVisible(false);
+ }
- adjusting = false;
+ // Pack the result
+ trComp.pack();
+ } finally {
+ adjusting = false;
+ }
}
protected void createTab(MElementContainer<MUIElement> stack,

Back to the top