Index: MapFrame.java
===================================================================
--- MapFrame.java	(revision 4453)
+++ MapFrame.java	(working copy)
@@ -285,7 +285,7 @@
         }
         return button;
     }
-    
+
     public void validateToolBarToggle() {
         toolBarToggle.removeAll();
         for (ToggleDialog dlg : allDialogs) {
@@ -471,8 +471,10 @@
             MapMode newMapMode = lastMapMode.get(newLayer);
             modeChanged = newMapMode != mapMode;
             if (newMapMode != null) {
-                selectMapMode(newMapMode);
-            } // it would be nice to select first supported mode when layer is first selected, but it don't work well with for example editgpx layer
+                selectMapMode(newMapMode); // it would be nice to select first supported mode when layer is first selected, but it don't work well with for example editgpx layer
+            } else {
+                mapMode.exitMode(); // if new mode is null - simply exit from previous mode
+            }
         }
         if (!modeChanged && mapMode != null) {
             // Let mapmodes know about new active layer
@@ -484,7 +486,11 @@
     }
 
     @Override
-    public void layerAdded(Layer newLayer) { }
+    public void layerAdded(Layer newLayer) {
+        if (!lastMapMode.containsKey(newLayer)) {
+            lastMapMode.put(newLayer, null);
+        }
+    }
 
     @Override
     public void layerRemoved(Layer oldLayer) {
