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