Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 6424)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 6425)
@@ -865,4 +865,6 @@
         public String delimiter = ";";
         public String use_last_as_default = "false";
+        /** whether to use values for search via {@link TaggingPresetSelector} */
+        public String values_searchable = "false";
 
         protected JComponent component;
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 6424)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 6425)
@@ -123,16 +123,17 @@
             TaggingPreset group = preset.group;
             while (group != null) {
-                for (String word: group.getLocaleName().toLowerCase().split("\\s")) {
-                    groups.add(word);
-                }
+                Collections.addAll(groups, group.getLocaleName().toLowerCase().split("\\s"));
                 group = group.group;
             }
-            for (String word: preset.getLocaleName().toLowerCase().split("\\s")) {
-                names.add(word);
-            }
+            Collections.addAll(names, preset.getLocaleName().toLowerCase().split("\\s"));
             for (TaggingPresetItem item: preset.data) {
                 if (item instanceof KeyedItem) {
                     tags.add(((KeyedItem) item).key);
-                    // Should combo values also be added?
+                    if (item instanceof TaggingPresetItems.ComboMultiSelect) {
+                        final TaggingPresetItems.ComboMultiSelect cms = (TaggingPresetItems.ComboMultiSelect) item;
+                        if (Boolean.parseBoolean(cms.values_searchable)) {
+                            tags.addAll(cms.getDisplayValues());
+                        }
+                    }
                     if (item instanceof Key && ((Key) item).value != null) {
                         tags.add(((Key) item).value);
@@ -152,5 +153,5 @@
                 boolean foundFirst = false;
                 for (String value: values) {
-                    int index = value.indexOf(word);
+                    int index = value.toLowerCase().indexOf(word);
                     if (index == 0) {
                         foundFirst = true;
