Index: src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapFrame.java	(revision 5434)
+++ src/org/openstreetmap/josm/gui/MapFrame.java	(working copy)
@@ -112,6 +112,7 @@
     public final SelectAction mapModeSelect;
     private final MapMode mapModeDraw;
     private final MapMode mapModeZoom;
+    public final MapMode mapModeLassoSelect;
 
     /**
      * The panel list of all toggle dialog icons. To add new toggle dialog actions, use addToggleDialog
@@ -159,7 +160,7 @@
         // toolbar
         toolBarActions.setFloatable(false);
         addMapMode(new IconToggleButton(mapModeSelect = new SelectAction(this)));
-        addMapMode(new IconToggleButton(new LassoModeAction(), true));
+        addMapMode(new IconToggleButton(mapModeLassoSelect = new LassoModeAction(), true));
         addMapMode(new IconToggleButton(mapModeDraw = new DrawAction(this)));
         addMapMode(new IconToggleButton(mapModeZoom = new ZoomAction(this)));
         addMapMode(new IconToggleButton(new DeleteAction(this), true));
@@ -361,8 +362,10 @@
             return false;
 
         MapMode oldMapMode = this.mapMode;
-        if (newMapMode == oldMapMode)
+        if (newMapMode == oldMapMode) {
+            newMapMode.reenterMode();
             return true;
+        }
         if (oldMapMode != null) {
             oldMapMode.exitMode();
         }
Index: src/org/openstreetmap/josm/actions/LassoModeAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/LassoModeAction.java	(revision 5434)
+++ src/org/openstreetmap/josm/actions/LassoModeAction.java	(working copy)
@@ -31,4 +31,9 @@
         Main.map.mapModeSelect.exitMode();
         super.exitMode();
     }
+    
+    @Override
+    public void reenterMode() {
+        if (Main.map!=null)  Main.map.selectMapMode(Main.map.mapModeSelect);
+    }
 }
Index: src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 5434)
+++ src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(working copy)
@@ -201,6 +201,11 @@
         removeHighlighting();
     }
 
+    @Override
+    public void reenterMode() {
+        if (Main.map!=null)  Main.map.selectMapMode(Main.map.mapModeLassoSelect);
+    }
+
     int previousModifiers;
     
      /**
Index: src/org/openstreetmap/josm/actions/mapmode/MapMode.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 5434)
+++ src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(working copy)
@@ -58,6 +58,12 @@
         Main.map.mapView.resetCursor(this);
     }
 
+    /**
+     * For optionlal overloading - called when action is repeated while mapmode is already active
+     */
+    public void reenterMode() {
+    }
+
     protected void updateStatusLine() {
         Main.map.statusLine.setHelpText(getModeHelpText());
         Main.map.statusLine.repaint();
