Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 18039)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 18040)
@@ -22,5 +22,4 @@
 import javax.swing.JPanel;
 import javax.swing.JToggleButton;
-import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.data.osm.Tag;
@@ -250,18 +249,14 @@
 
     private void setupListeners(AutoCompletingTextField textField, TaggingPresetItemGuiSupport support) {
-        textField.getDocument().addDocumentListener(DocumentAdapter.create(ignore ->
-                support.fireItemValueModified(this, key, textField.getText())));
-
-        if (valueTemplate != null) {
+        if (valueTemplate == null) { // only fire on normal fields
+            textField.getDocument().addDocumentListener(DocumentAdapter.create(ignore ->
+                    support.fireItemValueModified(this, key, textField.getText())));
+        } else { // only listen on calculated fields
             textField.setForeground(Color.BLUE);
             support.addListener((source, key, newValue) -> {
-                if (source != this) {
-                    String valueTemplateText = valueTemplate.getText(support);
-                    Logging.trace("Evaluating value_template {0} for key {1} from {2} with new value {3} => {4}",
-                            valueTemplate, key, source, newValue, valueTemplateText);
-                    if (!textField.getText().equals(valueTemplateText)) {
-                        SwingUtilities.invokeLater(() -> textField.setItem(valueTemplateText));
-                    }
-                }
+                String valueTemplateText = valueTemplate.getText(support);
+                Logging.trace("Evaluating value_template {0} for key {1} from {2} with new value {3} => {4}",
+                        valueTemplate, key, source, newValue, valueTemplateText);
+                textField.setItem(valueTemplateText);
             });
         }
