Index: trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 2097)
+++ trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 2098)
@@ -66,5 +66,5 @@
     }
 
-    protected void completeTagCollectionWithMissingTags(TagCollection tc, Collection<Node> mergedNodes) {
+    protected static void completeTagCollectionWithMissingTags(TagCollection tc, Collection<Node> mergedNodes) {
         for (String key: tc.getKeys()) {
             // make sure the empty value is in the tag set if a tag is not present
@@ -82,5 +82,5 @@
     }
 
-    protected void completeTagCollectionForEditing(TagCollection tc) {
+    protected static void completeTagCollectionForEditing(TagCollection tc) {
         for (String key: tc.getKeys()) {
             // make sure the empty value is in the tag set such that we can delete the tag
@@ -98,5 +98,5 @@
      * @return the selected target node
      */
-    public Node selectTargetNode(Collection<Node> candidates) {
+    public static Node selectTargetNode(Collection<Node> candidates) {
         // Find which node to merge into (i.e. which one will be left)
         // - this should be combined from two things:
@@ -124,5 +124,4 @@
     }
 
-
     /**
      * Merges the nodes in <code>node</code> onto one of the nodes. Uses the dataset
@@ -136,5 +135,5 @@
      * 
      */
-    public Command mergeNodes(OsmDataLayer layer, Collection<Node> nodes, Node targetNode) throws IllegalArgumentException{
+    public static Command mergeNodes(OsmDataLayer layer, Collection<Node> nodes, Node targetNode) throws IllegalArgumentException{
         if (layer == null)
             throw new IllegalArgumentException(tr("parameter ''{0}'' must not be null", "nodes"));
@@ -163,5 +162,5 @@
      * @throw IllegalArgumentException thrown if  backreferences.getSource() != layer.data
      */
-    public Command mergeNodes(OsmDataLayer layer, BackreferencedDataSet backreferences, Collection<Node> nodes, Node targetNode) {
+    public static Command mergeNodes(OsmDataLayer layer, BackreferencedDataSet backreferences, Collection<Node> nodes, Node targetNode) {
         if (layer == null)
             throw new IllegalArgumentException(tr("parameter ''{0}'' must not be null", "nodes"));
Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 2097)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 2098)
@@ -36,8 +36,11 @@
      * Execute the command and add it to the intern command queue.
      */
-    public void add(final Command c) {
+    public void addNoRedraw(final Command c) {
         c.executeCommand();
         commands.add(c);
         redoCommands.clear();
+    }
+
+    public void afterAdd() {
         if (Main.map != null && Main.map.mapView.getActiveLayer() instanceof OsmDataLayer) {
             OsmDataLayer data = (OsmDataLayer)Main.map.mapView.getActiveLayer();
@@ -48,4 +51,12 @@
         // the command may have changed the selection so tell the listeners about the current situation
         DataSet.fireSelectionChanged(Main.main.getCurrentDataSet().getSelected());
+    }
+
+    /**
+     * Execute the command and add it to the intern command queue.
+     */
+    public void add(final Command c) {
+        addNoRedraw(c);
+        afterAdd();
     }
 
