Index: Eclipse UI/org/eclipse/ui/internal/EditorManager.java =================================================================== RCS file: /home/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/EditorManager.java,v retrieving revision 1.82 diff -u -r1.82 EditorManager.java --- Eclipse UI/org/eclipse/ui/internal/EditorManager.java 5 May 2005 18:32:43 -0000 1.82 +++ Eclipse UI/org/eclipse/ui/internal/EditorManager.java 5 May 2005 22:23:52 -0000 @@ -273,29 +273,9 @@ } return result; } + /** - * Answer a list of dirty views. - */ - private List collectDirtyViews() { - List result = new ArrayList(3); - // add all the saveable views to the list - Perspective[] perspectives = page.getSortedInternalPerspectives(); - for (int l=0; l 0 || - page.getDirtyViews().length > 0)); + (page.getDirtyParts().length > 0)); } } Index: Eclipse UI/org/eclipse/ui/internal/Workbench.java =================================================================== RCS file: /home/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java,v retrieving revision 1.328 diff -u -r1.328 Workbench.java --- Eclipse UI/org/eclipse/ui/internal/Workbench.java 5 May 2005 18:32:43 -0000 1.328 +++ Eclipse UI/org/eclipse/ui/internal/Workbench.java 5 May 2005 22:23:52 -0000 @@ -79,7 +79,6 @@ import org.eclipse.ui.IPerspectiveRegistry; import org.eclipse.ui.ISaveablePart; import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWindowListener; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; @@ -567,34 +566,26 @@ for (int j = 0; j < pages.length; j++) { WorkbenchPage page = (WorkbenchPage) pages[j]; - // add all editors to the list - IEditorPart editors[] = page.getDirtyEditors(); - for (int k = 0; k < editors.length; k++) { - IEditorPart editor = editors[k]; - if (editor.isSaveOnCloseNeeded()) { - if (!dirtyEditorsInput.contains(editor - .getEditorInput())) { - dirtyParts.add(editor); - dirtyEditorsInput.add(editor - .getEditorInput()); - } - } - } - - // add all the saveable views to the list - IViewPart[] viewParts = page.getDirtyViews(); - for (int m=0; m 0) { IWorkbenchWindow w = getActiveWorkbenchWindow(); Index: Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java =================================================================== RCS file: /home/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java,v retrieving revision 1.209 diff -u -r1.209 WorkbenchPage.java --- Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java 5 May 2005 18:32:43 -0000 1.209 +++ Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java 5 May 2005 22:23:52 -0000 @@ -1657,9 +1657,24 @@ return getEditorManager().getDirtyEditors(); } - public IViewPart[] getDirtyViews() { - return getEditorManager().getDirtyViews(); + public ISaveablePart[] getDirtyParts() { + List result = new ArrayList(3); + IWorkbenchPartReference[] allParts = getAllParts(); + for (int i = 0; i < allParts.length; i++) { + IWorkbenchPartReference reference = allParts[i]; + + IWorkbenchPart part = reference.getPart(false); + if (part != null && part instanceof ISaveablePart) { + ISaveablePart saveable = (ISaveablePart)part; + if (saveable.isDirty()) { + result.add(saveable); + } + } + } + + return (ISaveablePart[]) result.toArray(new ISaveablePart[result.size()]); } + public IEditorPart findEditor(IEditorInput input) { return getEditorManager().findEditor(input);