Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 18682)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 18683)
@@ -11,4 +11,5 @@
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
@@ -21,6 +22,8 @@
 import javax.swing.JSeparator;
 
+import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainFrame;
+import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.Logging;
@@ -38,10 +41,14 @@
         @Override
         public int compare(JMenuItem o1, JMenuItem o2) {
-            if (MainApplication.getMenu().presetSearchAction.equals(o1.getAction()))
-                return -1;
-            else if (MainApplication.getMenu().presetSearchAction.equals(o2.getAction()))
-                return 1;
-            else
-                return AlphanumComparator.getInstance().compare(o1.getText(), o2.getText());
+            final MainMenu menu = MainApplication.getMenu();
+            // This is needed to keep the order of the search actions -> preferences
+            for (JosmAction action : Arrays.asList(menu.presetSearchAction, menu.presetSearchPrimitiveAction)) {
+                if (action.equals(o1.getAction())) {
+                    return -1;
+                } else if (action.equals(o2.getAction())) {
+                    return 1;
+                }
+            }
+            return AlphanumComparator.getInstance().compare(o1.getText(), o2.getText());
         }
     }
