fix 286365
diff --git a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java
index 30e1b6f..ecbe44d 100644
--- a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java
+++ b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/MessagesEditorMarkers.java
@@ -110,7 +110,6 @@
//System.out.println("CREATE EDITOR MARKER");
setChanged();
- notifyObservers(this);
}
public void clear() {
diff --git a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/MessagesBundleGroupValidator.java b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/MessagesBundleGroupValidator.java
index 6eeac6c..0fbf2d1 100644
--- a/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/MessagesBundleGroupValidator.java
+++ b/org.eclipse.babel.editor/src/org/eclipse/babel/editor/resource/validator/MessagesBundleGroupValidator.java
@@ -15,6 +15,7 @@
import org.eclipse.babel.core.message.MessagesBundleGroup;
import org.eclipse.babel.core.message.checks.DuplicateValueCheck;
import org.eclipse.babel.core.message.checks.MissingValueCheck;
+import org.eclipse.babel.editor.MessagesEditorMarkers;
import org.eclipse.babel.editor.preferences.MsgEditorPreferences;
@@ -73,6 +74,21 @@
}
}
}
+
+ /*
+ * KLUDGE to fix 286365: The notification system could do with some clean-up.
+ *
+ * The MessagesEditorMarkers is an observable object. If it
+ * finds anything that indicates that markers are required (e.g. if
+ * multiple keys have the same text) then it marks itself as 'changed'.
+ * It does not notify the observers because that would not be very
+ * efficient. We must therefore notify the observers here (noting that
+ * notifyObservers will in fact do nothing if none of the above calls to
+ * markFailed in fact set the observable as having changed).
+ */
+ if (markerStrategy instanceof MessagesEditorMarkers) {
+ ((MessagesEditorMarkers)markerStrategy).notifyObservers(null);
+ }
}
}