Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 11070)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 11071)
@@ -460,4 +460,7 @@
         Set<MapViewPaintable> invalidated = invalidatedListener.collectInvalidatedLayers();
         for (Layer l: visibleLayers) {
+            // `isChanged` for backward compatibility, see https://josm.openstreetmap.de/ticket/13175#comment:7
+            // Layers that still implement it (plugins) will use it to tell the MapView that they have been changed.
+            // This is why the MapView still uses it in addition to the invalidation events.
             if (l.isChanged() || invalidated.contains(l)) {
                 break;
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java	(revision 11070)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java	(revision 11071)
@@ -83,5 +83,4 @@
         assertEquals("<html>0 tracks, 0 routes, 0 waypoints<br>Length: < 0.01 m<br></html>", layer2.getToolTipText());
 
-        assertFalse(layer.isChanged());
         assertTrue(layer.checkSaveConditions());
         assertTrue(layer.isInfoResizable());
