Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 17638)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 17639)
@@ -19,4 +19,5 @@
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -47,5 +48,5 @@
 
     @Override
-    protected void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches) {
+    protected void addToPanelAnchor(JPanel p, String def, TaggingPresetItemGuiSupport support) {
         if (!usage.unused()) {
             for (String s : usage.values) {
@@ -77,5 +78,5 @@
         }
         combobox.setEditor(tf);
-        combobox.setSelectedItem(getItemToSelect(def, presetInitiallyMatches, false));
+        combobox.setSelectedItem(getItemToSelect(def, support, false));
 
         if (key != null && ("colour".equals(key) || key.startsWith("colour:") || key.endsWith(":colour"))) {
@@ -92,4 +93,5 @@
             p.add(combobox, GBC.eol().fill(GBC.HORIZONTAL));
         }
+        combobox.addActionListener(l -> support.fireItemValueModified(this, key, getSelectedValue()));
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17638)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17639)
@@ -188,5 +188,5 @@
     protected abstract Object getSelectedItem();
 
-    protected abstract void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches);
+    protected abstract void addToPanelAnchor(JPanel p, String def, TaggingPresetItemGuiSupport support);
 
     @Override
@@ -220,5 +220,5 @@
         label.setComponentPopupMenu(getPopupMenu());
         p.add(label, GBC.std().insets(0, 0, 10, 0));
-        addToPanelAnchor(p, default_, support.isPresetInitiallyMatches());
+        addToPanelAnchor(p, default_, support);
         label.setLabelFor(component);
         component.setToolTipText(getKeyTooltipText());
@@ -343,5 +343,5 @@
     }
 
-    protected Object getItemToSelect(String def, boolean presetInitiallyMatches, boolean multi) {
+    protected Object getItemToSelect(String def, TaggingPresetItemGuiSupport support, boolean multi) {
         final Object itemToSelect;
         if (usage.hasUniqueValue()) {
@@ -367,5 +367,5 @@
             // all items were unset (and so is default)
             originalValue = multi ? null : getListEntry("");
-            if (LAST_VALUES.containsKey(key) && isUseLastAsDefault() && (!presetInitiallyMatches || isForceUseLastAsDefault())) {
+            if (LAST_VALUES.containsKey(key) && isUseLastAsDefault() && (!support.isPresetInitiallyMatches() || isForceUseLastAsDefault())) {
                 itemToSelect = getListEntry(LAST_VALUES.get(key));
             } else {
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java	(revision 17638)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java	(revision 17639)
@@ -15,4 +15,5 @@
 
 import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
 import org.openstreetmap.josm.tools.GBC;
 
@@ -30,10 +31,10 @@
 
     @Override
-    protected void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches) {
+    protected void addToPanelAnchor(JPanel p, String def, TaggingPresetItemGuiSupport support) {
         list = new ConcatenatingJList(delimiter, presetListEntries.toArray(new PresetListEntry[0]));
         component = list;
         ListCellRenderer<PresetListEntry> renderer = getListCellRenderer();
         list.setCellRenderer(renderer);
-        list.setSelectedItem(getItemToSelect(def, presetInitiallyMatches, true));
+        list.setSelectedItem(getItemToSelect(def, support, true));
         JScrollPane sp = new JScrollPane(list);
         // if a number of rows has been specified in the preset,
@@ -44,4 +45,5 @@
             sp.setPreferredSize(new Dimension((int) sp.getPreferredSize().getWidth(), (int) height));
         }
+        list.addListSelectionListener(l -> support.fireItemValueModified(this, key, getSelectedValue()));
         p.add(sp, GBC.eol().fill(GBC.HORIZONTAL));
     }
