Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 14685)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 14686)
@@ -807,5 +807,5 @@
                 }
                 final ProgressMonitor subMonitor = getProgressMonitor().createSubTaskMonitor(all.size(), false);
-                subMonitor.beginTask(trn("Searching in {0} object", "Searching in {0} objects", all.size(), all.size()));
+                subMonitor.beginTask(trn("Searching in {0} object", "Searching in {0} objects", all.size(), all.size()),all.size());
 
                 for (IPrimitive osm : all) {
Index: trunk/src/org/openstreetmap/josm/io/AbstractReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/AbstractReader.java	(revision 14685)
+++ trunk/src/org/openstreetmap/josm/io/AbstractReader.java	(revision 14686)
@@ -291,5 +291,5 @@
         CheckParameterUtil.ensureParameterNotNull(source, "source");
         try {
-            progressMonitor.beginTask(tr("Prepare OSM data...", 2));
+            progressMonitor.beginTask(tr("Prepare OSM data..."), 4); // read, prepare, post-process, render
             progressMonitor.indeterminateSubTask(tr("Parsing OSM data..."));
 
@@ -310,8 +310,10 @@
             }
             progressMonitor.worked(1);
-
+            progressMonitor.indeterminateSubTask(tr("Postprocessing data set..."));
             // iterate over registered postprocessors and give them each a chance
             // to modify the dataset we have just loaded.
             callPostProcessors(progressMonitor);
+            progressMonitor.worked(1);
+            progressMonitor.indeterminateSubTask(tr("Rendering data set..."));
             // Make sure postprocessors did not change the read-only state
             if (readOnly && !getDataSet().isLocked()) {
@@ -328,5 +330,5 @@
                 AbstractPrimitive.advanceUniqueId(minId.getAsLong());
             }
-            progressMonitor.finishTask();
+            // don't call progressMonitor.finishTask() here, let caller do it
             progressMonitor.removeCancelListener(cancelListener);
         }
Index: trunk/src/org/openstreetmap/josm/io/OsmServerLocationReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerLocationReader.java	(revision 14685)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerLocationReader.java	(revision 14686)
@@ -132,5 +132,5 @@
 
     protected final <T> T doParse(Parser<T> parser, final ProgressMonitor progressMonitor) throws OsmTransferException {
-        progressMonitor.beginTask(tr("Contacting Server...", 10));
+        progressMonitor.beginTask(tr("Contacting Server..."), 10);
         try {
             return parser.parse();
