Bug 463288: [EditorMgmt] MRU tabs: Editor list doesn't group visible and non-visible tabs
Change-Id: I159a6e4084224545645e3c57fdf923a4824df035
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java
index 87adb52..301a997 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java
@@ -104,14 +104,26 @@
public BasicPartList(Shell parent, int shellStyle, int treeStyler,
EPartService partService, MElementContainer<?> input,
- StackRenderer renderer, boolean alphabetical) {
+ StackRenderer renderer, boolean mru) {
super(parent, shellStyle, treeStyler);
this.partService = partService;
this.input = input;
this.renderer = renderer;
// this.saveHandler = saveHandler;
- if (alphabetical && getTableViewer() != null) {
- getTableViewer().setComparator(new ViewerComparator());
+ if (mru && getTableViewer() != null) {
+ getTableViewer().setComparator(new ViewerComparator() {
+ @Override
+ public int category(Object element) {
+ if (element instanceof MPart) {
+ MPart part = (MPart) element;
+ CTabItem item = BasicPartList.this.renderer.findItemForPart(part);
+ if (item != null && !item.isShowing()) {
+ return -1;
+ }
+ }
+ return 0;
+ }
+ });
}
}