Ignore:
Timestamp:
2019-04-09T01:32:56+02:00 (5 years ago)
Author:
Don-vip
Message:

ensures consistency of upload comment:

  • fix #11168 - ctrl-z/undo could reset unwanted old changeset comment
  • fix #13474 - selecting "new changeset" after having entered a changeset comment did reset it to the previous value
  • fix #17452 - ctrl-enter while typing a changeset comment did upload with the previous value
  • fix behaviour of upload.comment.max-age: values were reset after 5 months instead of intended 4 hours because seconds were compared to milliseconds
  • avoid creation of unneeded undo/redo internal classes for non-editable text fields
  • ensures consistency of upload dialog if upload.comment properties are modified manually from advanced preferences
  • add a source attribute to preference events to know which class modified the preference entry
  • refactor reflection utils
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r14153 r14977  
    1616import java.nio.file.InvalidPathException;
    1717import java.util.ArrayList;
     18import java.util.Arrays;
    1819import java.util.Collection;
    1920import java.util.Collections;
     
    4445import org.openstreetmap.josm.spi.preferences.AbstractPreferences;
    4546import org.openstreetmap.josm.spi.preferences.Config;
     47import org.openstreetmap.josm.spi.preferences.DefaultPreferenceChangeEvent;
    4648import org.openstreetmap.josm.spi.preferences.IBaseDirectories;
    4749import org.openstreetmap.josm.spi.preferences.ListSetting;
     50import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
    4851import org.openstreetmap.josm.spi.preferences.Setting;
    4952import org.openstreetmap.josm.tools.CheckParameterUtil;
     
    5154import org.openstreetmap.josm.tools.Logging;
    5255import org.openstreetmap.josm.tools.PlatformManager;
     56import org.openstreetmap.josm.tools.ReflectionUtils;
    5357import org.openstreetmap.josm.tools.Utils;
    5458import org.xml.sax.SAXException;
     
    120124
    121125    /**
     126     * Preferences classes calling directly the method {@link #putSetting(String, Setting)}.
     127     * This collection allows us to exclude them when searching the business class who set a preference.
     128     * The found class is used as event source when notifying event listeners.
     129     */
     130    private static final Collection<Class<?>> preferencesClasses = Arrays.asList(
     131            Preferences.class, PreferencesUtils.class, AbstractPreferences.class);
     132
     133    /**
    122134     * Constructs a new {@code Preferences}.
    123135     */
     
    216228
    217229    protected void firePreferenceChanged(String key, Setting<?> oldValue, Setting<?> newValue) {
    218         final org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent evt =
    219                 new org.openstreetmap.josm.spi.preferences.DefaultPreferenceChangeEvent(key, oldValue, newValue);
     230        final PreferenceChangeEvent evt =
     231                new DefaultPreferenceChangeEvent(ReflectionUtils.findCallerClass(preferencesClasses), key, oldValue, newValue);
    220232        listeners.fireEvent(listener -> listener.preferenceChanged(evt));
    221233
Note: See TracChangeset for help on using the changeset viewer.