Ticket #19789: 19789-v0.patch

File 19789-v0.patch, 2.1 KB (added by GerdP, 4 years ago)

Patch (alpha) to implement the removal of listeners.

  • src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java

     
    3131import org.openstreetmap.josm.gui.MapView;
    3232import org.openstreetmap.josm.gui.layer.GpxLayer;
    3333import org.openstreetmap.josm.gui.preferences.display.GPXSettingsPanel;
     34import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
    3435import org.openstreetmap.josm.tools.ImageProvider;
    3536import org.openstreetmap.josm.tools.Logging;
    3637import org.openstreetmap.josm.tools.template_engine.ParseError;
     
    147148    private String cachedDefaultTemplate;
    148149
    149150    private CachedLatLon coor;
     151    private PreferenceChangedListener listener = l -> updateText();
    150152
    151153    private boolean erroneous;
    152154
     
    174176        this.dataProvider = dataProvider;
    175177        this.text = text;
    176178
    177         Preferences.main().addKeyPreferenceChangeListener("draw.rawgps." + getTextTemplateKey(), l -> updateText());
     179        Preferences.main().addKeyPreferenceChangeListener("draw.rawgps." + getTextTemplateKey(), listener);
    178180    }
    179181
    180182    /**
     
    432434            redSymbol = null;
    433435        }
    434436    }
     437
     438    /**
     439     * Removes the preference change listener.
     440     * @since xxx
     441     */
     442    public void removeListener() {
     443        Preferences.main().removeKeyPreferenceChangeListener("draw.rawgps." + getTextTemplateKey(), listener);
     444    }
    435445}
  • src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java

     
    171171        syncAudioMarker = null;
    172172        currentMarker = null;
    173173        fromLayer = null;
     174        data.forEach(Marker::removeListener);
    174175        data.clear();
    175176        super.destroy();
    176177    }