diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java index 88675f4..22e7cdb 100644 --- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java +++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/Policy.java @@ -168,15 +166,12 @@ log(IStatus.ERROR, "Internal Error", t); //$NON-NLS-1$ } - public static IProgressMonitor monitorFor(IProgressMonitor monitor) { - return monitor == null ? new NullProgressMonitor() : monitor; + public static SubMonitor monitorFor(IProgressMonitor monitor) { + return (monitor instanceof SubMonitor) ? (SubMonitor) monitor : SubMonitor.convert(monitor); } - public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks) { - if (monitor == null) - return new NullProgressMonitor(); - if (monitor instanceof NullProgressMonitor) - return monitor; - return new SubProgressMonitor(monitor, ticks); + public static SubMonitor subMonitorFor(IProgressMonitor monitor, int ticks) { + SubMonitor subMonitor = monitorFor(monitor); + return subMonitor.newChild(ticks); } }