Ignore:
Timestamp:
2018-08-31T00:57:57+02:00 (7 years ago)
Author:
Don-vip
Message:

fix #16698, see #15670 - make sure filters are executed (costly operation) only when necessary:

  • data changes imply execution of filters only when at least a filter is enabled
  • filter changes imply execution of filters even is no filter is enabled
  • filter dataset change events should not trigger a new filter execution!
Location:
trunk/src/org/openstreetmap/josm/data/osm
Files:
1 added
4 edited

Legend:

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

    r14169 r14206  
    4242import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
    4343import org.openstreetmap.josm.data.osm.event.DataSetListener;
     44import org.openstreetmap.josm.data.osm.event.FilterChangedEvent;
    4445import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
    4546import org.openstreetmap.josm.data.osm.event.PrimitiveFlagsChangedEvent;
     
    10301031
    10311032    void fireFilterChanged() {
    1032         fireEvent(new DataChangedEvent(this));
     1033        fireEvent(new FilterChangedEvent(this));
    10331034    }
    10341035
  • trunk/src/org/openstreetmap/josm/data/osm/FilterMatcher.java

    r13309 r14206  
    114114
    115115    /**
     116     * Determines if at least one filter is enabled.
     117     * @return {@code true} if at least one filter is enabled
     118     * @since 14206
     119     */
     120    public boolean hasFilters() {
     121        return !hiddenFilters.isEmpty() || !disabledFilters.isEmpty();
     122    }
     123
     124    /**
    116125     * Adds a filter to the currently used filters
    117126     * @param filter the filter to add
  • trunk/src/org/openstreetmap/josm/data/osm/FilterModel.java

    r14153 r14206  
    373373
    374374    /**
     375     * Determines if at least one filter is enabled.
     376     * @return {@code true} if at least one filter is enabled
     377     * @since 14206
     378     */
     379    public boolean hasFilters() {
     380        return filterMatcher.hasFilters();
     381    }
     382
     383    /**
    375384     * Returns the list of primitives whose filtering can be affected by change in primitive
    376385     * @param primitives list of primitives to check
  • trunk/src/org/openstreetmap/josm/data/osm/event/AbstractDatasetChangedEvent.java

    r12189 r14206  
    4949         */
    5050        CHANGESET_ID_CHANGED,
     51        /**
     52         * The filtered state changed for a list of primitives
     53         */
     54        FILTERS_CHANGED,
    5155        /**
    5256         * The flags changed for a primitive and have not been covered in an other event
Note: See TracChangeset for help on using the changeset viewer.