diff options
| author | Eric Moffatt | 2013-10-03 19:18:27 +0000 |
|---|---|---|
| committer | Eric Moffatt | 2013-10-03 19:18:52 +0000 |
| commit | 7c2051c64a1cb377923565018609ea5d10524448 (patch) | |
| tree | 0050e7db3e0c60ec10c98258f37ed84b9652a129 | |
| parent | ad3869bd9cacfe84929ee0f005a96e9a9b70266f (diff) | |
| download | eclipse.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.java | 135 |
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, |
