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;
+				}
+			});
 		}
 	}