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); + } } }