Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 4220)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 4221)
@@ -14,5 +14,4 @@
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -431,5 +430,5 @@
         public SelectAction(boolean add) {
             putValue(SHORT_DESCRIPTION, add ? tr("Add the selected relations to the current selection")
-            : tr("Set the current selection to the list of selected relations"));
+                    : tr("Set the current selection to the list of selected relations"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
             putValue(NAME, add ? tr("Select relation (add)") : tr("Select relation"));
@@ -446,8 +445,9 @@
                 selection.add(model.getRelation(i));
             }
-            if(add)
+            if(add) {
                 Main.map.mapView.getEditLayer().data.addSelected(selection);
-            else
+            } else {
                 Main.map.mapView.getEditLayer().data.setSelected(selection);
+            }
         }
 
@@ -469,5 +469,5 @@
         public SelectMembersAction(boolean add) {
             putValue(SHORT_DESCRIPTION,add ? tr("Add the members of all selected relations to current selection")
-            : tr("Select the members of all selected relations"));
+                    : tr("Select the members of all selected relations"));
             putValue(SMALL_ICON, ImageProvider.get("selectall"));
             putValue(NAME, add ? tr("Select members (add)") : tr("Select members"));
@@ -483,8 +483,9 @@
                 members.addAll(r.getMemberPrimitives());
             }
-            if(add)
+            if(add) {
                 Main.map.mapView.getEditLayer().data.addSelected(members);
-            else
+            } else {
                 Main.map.mapView.getEditLayer().data.setSelected(members);
+            }
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 4220)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 4221)
@@ -44,4 +44,5 @@
 import javax.swing.JToolBar;
 import javax.swing.KeyStroke;
+import javax.swing.SwingUtilities;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
@@ -282,9 +283,9 @@
         cellEditorTextField.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
         cellEditorTextField.addFocusListener(
-            new FocusAdapter() {
-                @Override public void focusGained(FocusEvent e) {
-                    cellEditorTextField.selectAll();
+                new FocusAdapter() {
+                    @Override public void focusGained(FocusEvent e) {
+                        cellEditorTextField.selectAll();
+                    }
                 }
-            }
         );
         DefaultCellEditor cellEditor = new DefaultCellEditor(cellEditorTextField);
@@ -1100,5 +1101,5 @@
          */
         protected void applyNewRelation() {
-            Relation newRelation = new Relation();
+            final Relation newRelation = new Relation();
             tagEditorPanel.getModel().applyToPrimitive(newRelation);
             memberTableModel.applyToRelation(newRelation);
@@ -1130,4 +1131,11 @@
                     GenericRelationEditor.this
             );
+            SwingUtilities.invokeLater(new Runnable() {
+                @Override
+                public void run() {
+                	// Relation list gets update in EDT so selecting my be postponed to following EDT run
+                    Main.map.relationListDialog.selectRelation(newRelation);
+                }
+            });
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 4220)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 4221)
@@ -785,6 +785,6 @@
             if (rows != -1)
             {
-                double height = renderer.getListCellRendererComponent(list, 
-                    new PresetListEntry("x"), 0, false, false).getPreferredSize().getHeight() * rows;
+                double height = renderer.getListCellRendererComponent(list,
+                        new PresetListEntry("x"), 0, false, false).getPreferredSize().getHeight() * rows;
                 sp.setPreferredSize(new Dimension((int) sp.getPreferredSize().getWidth(), (int) height));
             }
@@ -1098,7 +1098,7 @@
         putValue("toolbar", "tagging_" + getRawName());
         putValue(OPTIONAL_TOOLTIP_TEXT, (group != null ?
-            tr("Use preset ''{0}'' of group ''{1}''", getLocaleName(), group.getName()) :
-            tr("Use preset ''{0}''", getLocaleName())));
-   }
+                tr("Use preset ''{0}'' of group ''{1}''", getLocaleName(), group.getName()) :
+                    tr("Use preset ''{0}''", getLocaleName())));
+    }
 
     public String getLocaleName() {
@@ -1369,5 +1369,4 @@
             }
         } else if (answer == DIALOG_ANSWER_NEW_RELATION) {
-            List<Command> cmds = new ArrayList<Command>(2);
             final Relation r = new Relation();
             final Collection<RelationMember> members = new HashSet<RelationMember>();
@@ -1375,5 +1374,5 @@
                 r.put(t.getKey(), t.getValue());
             }
-            for(OsmPrimitive osm : sel) {
+            for(OsmPrimitive osm : Main.main.getCurrentDataSet().getSelected()) {
                 RelationMember rm = new RelationMember("", osm);
                 r.addMember(rm);
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java	(revision 4220)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java	(revision 4221)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.preferences.TaggingPresetPreference;
@@ -56,4 +57,7 @@
     private int CLASSIFICATION_GROUP_MATCH = 200;
     private int CLASSIFICATION_TAGS_MATCH = 100;
+
+    private final BooleanProperty SEARCH_IN_TAGS = new BooleanProperty("taggingpreset.dialog.search-in-tags", true);
+    private final BooleanProperty ONLY_APPLICABLE  = new BooleanProperty("taggingpreset.dialog.only-applicable-to-selection", true);
 
     private static class ResultListCellRenderer extends DefaultListCellRenderer {
@@ -286,5 +290,5 @@
             ckOnlyApplicable.setEnabled(false);
         } else {
-            ckOnlyApplicable.setSelected(true);
+            ckOnlyApplicable.setSelected(ONLY_APPLICABLE.get());
             ckOnlyApplicable.addItemListener(new ItemListener() {
                 @Override
@@ -297,5 +301,5 @@
         ckSearchInTags = new JCheckBox();
         ckSearchInTags.setText(tr("Search in tags"));
-        ckSearchInTags.setSelected(Main.pref.getBoolean("taggingpreset.dialog.search-in-tags", true));
+        ckSearchInTags.setSelected(SEARCH_IN_TAGS.get());
         ckSearchInTags.addItemListener(new ItemListener() {
             @Override
@@ -432,5 +436,8 @@
         }
 
-        Main.pref.put("taggingpreset.dialog.search-in-tags", ckSearchInTags.isSelected());
+        SEARCH_IN_TAGS.put(ckSearchInTags.isSelected());
+        if (ckOnlyApplicable.isEnabled()) {
+            ONLY_APPLICABLE.put(ckOnlyApplicable.isSelected());
+        }
     }
 
