Ticket #12974: patch-fix-12974.patch

File patch-fix-12974.patch, 4.0 KB (added by michael2402, 9 years ago)
  • src/org/openstreetmap/josm/Main.java

    diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java
    index ed2f649..325aa72 100644
    a b import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;  
    101101import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
    102102import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
    103103import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
     104import org.openstreetmap.josm.gui.util.GuiHelper;
    104105import org.openstreetmap.josm.gui.util.RedirectInputMap;
    105106import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
    106107import org.openstreetmap.josm.io.FileWatcher;
    public abstract class Main {  
    808809     * @param bounds the bounds of the layer (target zoom area); can be null, then
    809810     * the viewport isn't changed
    810811     */
    811     public final synchronized void addLayer(final Layer layer, ProjectionBounds bounds) {
     812    public final void addLayer(final Layer layer, ProjectionBounds bounds) {
    812813        addLayer(layer, bounds == null ? null : new ViewportData(bounds));
    813814    }
    814815
    public abstract class Main {  
    820821     * @param layer the layer
    821822     * @param viewport the viewport to zoom to; can be null, then the viewport isn't changed
    822823     */
    823     public final synchronized void addLayer(final Layer layer, ViewportData viewport) {
     824    public final void addLayer(Layer layer, final ViewportData viewport) {
    824825        getLayerManager().addLayer(layer);
    825826        if (viewport != null) {
    826827            Main.map.mapView.scheduleZoomTo(viewport);
    827828        }
    828829    }
    829830
     831    /**
     832     * Creates the map frame. Call only in EDT Thread.
     833     * @param firstLayer The first layer that was added.
     834     * @param viewportData The initial viewport. Can be <code>null</code> to be automatically computed.
     835     */
    830836    public synchronized void createMapFrame(Layer firstLayer, ViewportData viewportData) {
     837        GuiHelper.assertCallFromEdt();
    831838        MapFrame mapFrame = new MapFrame(contentPanePrivate, viewportData);
    832839        setMapFrame(mapFrame);
    833840        if (firstLayer != null) {
  • test/unit/org/openstreetmap/josm/JOSMFixture.java

    diff --git a/test/unit/org/openstreetmap/josm/JOSMFixture.java b/test/unit/org/openstreetmap/josm/JOSMFixture.java
    index e7bdfbf..f08ca13 100644
    a b import org.openstreetmap.josm.data.projection.Projections;  
    1414import org.openstreetmap.josm.gui.MainApplication;
    1515import org.openstreetmap.josm.gui.layer.Layer;
    1616import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
     17import org.openstreetmap.josm.gui.util.GuiHelper;
    1718import org.openstreetmap.josm.io.CertificateAmendment;
    1819import org.openstreetmap.josm.io.OsmApi;
    1920import org.openstreetmap.josm.tools.I18n;
    public class JOSMFixture {  
    115116        }
    116117
    117118        if (createGui) {
    118             if (Main.toolbar == null) {
    119                 Main.toolbar = new ToolbarPreferences();
    120             }
    121             if (Main.main == null) {
    122                 new MainApplication().initialize();
    123             }
    124             if (Main.map == null) {
    125                 Main.main.createMapFrame(null, null);
    126             } else {
    127                 for (Layer l: Main.getLayerManager().getLayers()) {
    128                     Main.getLayerManager().removeLayer(l);
     119            GuiHelper.runInEDTAndWaitWithException(new Runnable() {
     120                @Override
     121                public void run() {
     122                    setupGUI();
    129123                }
     124            });
     125        }
     126    }
     127
     128    private void setupGUI() {
     129        if (Main.toolbar == null) {
     130            Main.toolbar = new ToolbarPreferences();
     131        }
     132        if (Main.main == null) {
     133            new MainApplication().initialize();
     134        }
     135        if (Main.map == null) {
     136            Main.main.createMapFrame(null, null);
     137        } else {
     138            for (Layer l: Main.getLayerManager().getLayers()) {
     139                Main.getLayerManager().removeLayer(l);
    130140            }
    131141        }
    132142    }