Index: src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 1401)
+++ src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(working copy)
@@ -160,6 +160,7 @@
         if(e.getClickCount() > 1) {
             // A double click equals "user clicked last node again, finish way"
             lastUsedNode = null;
+            Main.map.selectSelectTool(true);
             return;
         }
         // we copy ctrl/alt/shift from the event just in case our global
@@ -325,6 +326,8 @@
             // User clicked last node again, finish way
             if(n0 == n) {
                 lastUsedNode = null;
+                Main.map.selectSelectTool(true);
+                System.out.println("now1");
                 return;
             }
 
Index: src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1401)
+++ src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(working copy)
@@ -18,8 +18,8 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.MergeNodesAction;
 import org.openstreetmap.josm.command.AddCommand;
+import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
-import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.command.RotateCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -31,12 +31,12 @@
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor;
 import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor;
-import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.SelectionManager;
 import org.openstreetmap.josm.gui.SelectionManager.SelectionEnded;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -328,6 +328,10 @@
     @Override public void mouseReleased(MouseEvent e) {
         if (mode == Mode.select) {
             selectionManager.unregister(Main.map.mapView);
+            if(Main.ds.getSelected().size() == 0) {
+                Main.map.selectDrawTool(true);
+                System.out.println("rofle");
+            }
         }
         restoreCursor();
 
Index: src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapFrame.java	(revision 1401)
+++ src/org/openstreetmap/josm/gui/MapFrame.java	(working copy)
@@ -111,6 +111,21 @@
         // status line below the map
         statusLine = new MapStatus(this);
     }
+    
+    public void selectSelectTool(boolean onlyIfModeless) {
+        if(onlyIfModeless && !Main.pref.getBoolean("modeless", false))
+            return;
+        
+        selectMapMode((MapMode)getDefaultButtonAction());
+    }
+    
+    public void selectDrawTool(boolean onlyIfModeless) {
+        if(onlyIfModeless && !Main.pref.getBoolean("modeless", false))
+            return;
+        
+        Action drawAction = ((AbstractButton)toolBarActions.getComponent(1)).getAction();
+        selectMapMode((MapMode)drawAction);
+    }
 
     /**
      * Called as some kind of destructor when the last layer has been removed.
