From: Patric Plitzner
Date: Wed, 28 Aug 2013 15:41:04 +0000 (+0000)
Subject: - fixed stackOverflow for ToggleableTextFieldController
X-Git-Tag: 3.6.0~841^2~126
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/9142fb50a291d92b3ed62ba2f4b1f3d26d76c09a
- fixed stackOverflow for ToggleableTextFieldController
---
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java
index 2e7f7e34f..1307f0496 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java
@@ -21,8 +21,10 @@ import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
+import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
@@ -101,9 +103,14 @@ public class ToggleableTextFieldController extends AbstractCdmFormElement implem
Text textField = toggleableTextField.getText();
int caretPosition = textField.getCaretPosition();
- textField.removeModifyListener(this);
- textField.setText(text);
- textField.addModifyListener(this);
+ Listener[] listeners = textField.getListeners(SWT.Modify);
+ for (Listener listener : listeners) {
+ textField.removeListener(SWT.Modify, listener);
+ }
+ textField.setText(CdmUtils.Nz(text));
+ for (Listener listener : listeners) {
+ textField.addListener(SWT.Modify, listener);
+ }
// restore caret position
textField.setSelection(caretPosition);