Bug 460092 Performance of Validation on TreeMasterDetail with
visibility-derived validation markers

Fixed missing check that at least one child control is visible

Change-Id: Id02e03f9129ff699c05747481bd38c8230d66d31
Signed-off-by: Eugen Neufeld <eneufeld@eclipsesource.com>
diff --git a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java
index 8c7b0c1..1cf8790 100644
--- a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java
+++ b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java
@@ -110,6 +110,7 @@
 	private final Map<EMFFormsViewContext, VElement> contextParentMap = new LinkedHashMap<EMFFormsViewContext, VElement>();
 	private final Map<EMFFormsViewContext, ViewModelListener> contextListenerMap = new LinkedHashMap<EMFFormsViewContext, ViewModelListener>();
 	private final ModelChangeAddRemoveListenerImplementation viewModelChangeListener;
+	private boolean disposed;
 
 	/**
 	 * Creates a new instance of {@link SettingToControlMapperImpl}.
@@ -325,6 +326,9 @@
 	 */
 	@Override
 	public void childContextDisposed(EMFFormsViewContext childContext) {
+		if (disposed) {
+			return;
+		}
 		childContext.unregisterViewChangeListener(viewModelChangeListener);
 		contextParentMap.remove(childContext);
 		final ViewModelListener listener = contextListenerMap.remove(childContext);
@@ -363,6 +367,7 @@
 		controlContextMap.clear();
 		contextParentMap.clear();
 		contextListenerMap.clear();
+		disposed = true;
 	}
 
 	@Override