### Eclipse Workspace Patch 1.0 #P org.eclipse.ui.workbench Index: Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java,v retrieving revision 1.36 diff -u -r1.36 FinishedJobs.java --- Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java 24 Mar 2008 19:21:58 -0000 1.36 +++ Eclipse UI/org/eclipse/ui/internal/progress/FinishedJobs.java 1 Sep 2009 09:20:12 -0000 @@ -15,7 +15,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; - import org.eclipse.core.commands.common.EventManager; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.jobs.Job; @@ -109,22 +108,31 @@ static boolean keep(JobInfo info) { Job job = info.getJob(); if (job != null) { - Object prop = job.getProperty(ProgressManagerUtil.KEEP_PROPERTY); - if (prop instanceof Boolean) { - if (((Boolean) prop).booleanValue()) { - return true; - } + if (hasKeepFlag(job)) + return true; + + IStatus status = job.getResult(); + if (status != null && status.getSeverity() == IStatus.ERROR) { + return true; } + } + return false; + } - prop = job.getProperty(ProgressManagerUtil.KEEPONE_PROPERTY); - if (prop instanceof Boolean) { - if (((Boolean) prop).booleanValue()) { - return true; - } + /** + * Returns true if job has one of keep flags set. + */ + static boolean hasKeepFlag(Job job) { + Object prop = job.getProperty(ProgressManagerUtil.KEEP_PROPERTY); + if (prop instanceof Boolean) { + if (((Boolean) prop).booleanValue()) { + return true; } + } - IStatus status = job.getResult(); - if (status != null && status.getSeverity() == IStatus.ERROR) { + prop = job.getProperty(ProgressManagerUtil.KEEPONE_PROPERTY); + if (prop instanceof Boolean) { + if (((Boolean) prop).booleanValue()) { return true; } } @@ -288,6 +296,11 @@ JobInfo info1 = (JobInfo) infos[i]; Job job = info1.getJob(); if (job != null) { + + // do not remove error jobs that have keep flag set + if (hasKeepFlag(job)) + continue; + IStatus status = job.getResult(); if (status != null && status.getSeverity() == IStatus.ERROR) { JobTreeElement topElement = (JobTreeElement) info1