Ticket #21922: 21922.patch

File 21922.patch, 3.8 KB (added by Bjoeni, 4 years ago)
  • src/org/openstreetmap/josm/data/gpx/GpxData.java

     
    10941094
    10951095    @Override
    10961096    public void put(String key, Object value) {
     1097        put(key, value, true);
     1098    }
     1099
     1100    /**
     1101     * Put a key / value pair as a new attribute. Overrides key / value pair with the same key (if present).
     1102     * Only sets the modified state when setModified is true.
     1103     *
     1104     * @param key the key
     1105     * @param value the value
     1106     * @param setModified whether to change the modified state
     1107     */
     1108    public void put(String key, Object value, boolean setModified) {
    10971109        super.put(key, value);
    1098         invalidate();
     1110        fireInvalidate(setModified);
    10991111    }
    11001112
    11011113    /**
     
    11321144    }
    11331145
    11341146    private void fireInvalidate(boolean setModified) {
     1147        if (setModified) {
     1148            setModified(true);
     1149        }
    11351150        if (updating || initializing) {
    11361151            suppressedInvalidate = true;
    11371152        } else {
    1138             if (setModified) {
    1139                 setModified(true);
    1140             }
    11411153            if (listeners.hasListeners()) {
    11421154                GpxDataChangeEvent e = new GpxDataChangeEvent(this);
    11431155                listeners.fireEvent(l -> l.gpxDataChanged(e));
     
    11581170     * @since 15496
    11591171     */
    11601172    public void endUpdate() {
    1161         boolean setModified = updating;
    11621173        updating = initializing = false;
    11631174        if (suppressedInvalidate) {
    1164             fireInvalidate(setModified);
     1175            fireInvalidate(false);
    11651176            suppressedInvalidate = false;
    11661177        }
    11671178    }
  • src/org/openstreetmap/josm/data/gpx/GpxTrack.java

     
    8282
    8383    @Override
    8484    public void setColor(Color color) {
    85         setColorExtension(color);
     85        setColorExtensionGPXD(color, true);
    8686        colorCache = color;
    8787    }
    8888
    89     private void setColorExtension(Color color) {
     89    private void setColorExtensionGPXD(Color color, boolean invalidate) {
    9090        getExtensions().findAndRemove("gpxx", "DisplayColor");
    9191        if (color == null) {
    9292            getExtensions().findAndRemove("gpxd", "color");
    9393        } else {
    9494            getExtensions().addOrUpdate("gpxd", "color", String.format("#%02X%02X%02X", color.getRed(), color.getGreen(), color.getBlue()));
    9595        }
    96         fireInvalidate();
     96        colorFormat = ColorFormat.GPXD;
     97        if (invalidate) {
     98            fireInvalidate();
     99        }
    97100    }
    98101
    99102    @Override
     
    167170                closestGarminColorCache.put(c, colorString);
    168171                getExtensions().addIfNotPresent("gpxx", "TrackExtension").getExtensions().addOrUpdate("gpxx", "DisplayColor", colorString);
    169172            } else if (cFormat == ColorFormat.GPXD) {
    170                 setColor(c);
     173                setColorExtensionGPXD(c, false);
    171174            }
    172175            colorFormat = cFormat;
    173176        }
  • src/org/openstreetmap/josm/io/GpxWriter.java

     
    123123                e.put("value", entry.getValue());
    124124            });
    125125        }
    126         data.put(META_TIME, (metaTime != null ? metaTime : Instant.now()).toString());
     126        data.put(META_TIME, (metaTime != null ? metaTime : Instant.now()).toString(), false);
    127127        data.endUpdate();
    128128
    129129        Collection<IWithAttributes> all = new ArrayList<>();