Index: trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 14211)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 14212)
@@ -327,5 +327,5 @@
     @Override
     public void otherDatasetChange(AbstractDatasetChangedEvent event) {
-        if (!DatasetEventType.FILTERS_CHANGED.equals(event.getType())) {
+        if (DatasetEventType.FILTERS_CHANGED != event.getType()) {
             filterModel.executeFilters();
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 14211)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 14212)
@@ -759,8 +759,12 @@
 
         @Override
-        public void layerRemoving(LayerRemoveEvent e) {}
-
-        @Override
-        public void layerOrderChanged(LayerOrderChangeEvent e) {}
+        public void layerRemoving(LayerRemoveEvent e) {
+            // Not used
+        }
+
+        @Override
+        public void layerOrderChanged(LayerOrderChangeEvent e) {
+            // Not used
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java	(revision 14211)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java	(revision 14212)
@@ -5,4 +5,5 @@
 import java.io.File;
 import java.util.Collections;
+import java.util.Objects;
 
 import org.openstreetmap.josm.data.gpx.GpxImageEntry;
@@ -63,3 +64,18 @@
         }
     }
+
+    @Override
+    public int hashCode() {
+        return 31 * super.hashCode() + ((thumbnail == null) ? 0 : thumbnail.hashCode());
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (!super.equals(obj) || getClass() != obj.getClass())
+            return false;
+        ImageEntry other = (ImageEntry) obj;
+        return Objects.equals(thumbnail, other.thumbnail);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/ImageEntryTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/ImageEntryTest.java	(revision 14211)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/ImageEntryTest.java	(revision 14212)
@@ -8,4 +8,8 @@
 import org.junit.Test;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.data.gpx.GpxImageEntry;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+import nl.jqno.equalsverifier.Warning;
 
 /**
@@ -23,3 +27,15 @@
         assertNotNull(e.getExifTime());
     }
+
+    /**
+     * Unit test of methods {@link ImageEntry#equals} and {@link ImageEntry#hashCode}.
+     */
+    @Test
+    public void testEqualsContract() {
+        TestUtils.assumeWorkingEqualsVerifier();
+        EqualsVerifier.forClass(ImageEntry.class).usingGetClass()
+            .suppress(Warning.NONFINAL_FIELDS)
+            .withPrefabValues(GpxImageEntry.class, new GpxImageEntry(new File("foo")), new GpxImageEntry(new File("bar")))
+            .verify();
+    }
 }
