Index: trunk/src/org/openstreetmap/josm/actions/PasteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 1843)
+++ trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 1844)
@@ -120,10 +120,7 @@
     @Override
     protected void updateEnabledState() {
-        if (getCurrentDataSet() == null) {
+        if (getCurrentDataSet() == null || Main.pasteBuffer == null) {
             setEnabled(false);
             return;
-        }
-        if (Main.pasteBuffer == null) {
-            setEnabled(false);
         }
         setEnabled(
Index: trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 1843)
+++ trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 1844)
@@ -18,20 +18,14 @@
 import org.openstreetmap.josm.corrector.ReverseWayTagCorrector;
 import org.openstreetmap.josm.corrector.UserCancelException;
-import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
 import org.openstreetmap.josm.tools.Shortcut;
 
-public final class ReverseWayAction extends JosmAction implements SelectionChangedListener, LayerChangeListener {
+public final class ReverseWayAction extends JosmAction {
 
     public ReverseWayAction() {
         super(tr("Reverse Ways"), "wayflip", tr("Reverse the direction of all selected ways."),
                 Shortcut.registerShortcut("tools:reverse", tr("Tool: {0}", tr("Reverse Ways")), KeyEvent.VK_R, Shortcut.GROUP_EDIT), true);
-        DataSet.selListeners.add(this);
-        Layer.listeners.add(this);
-        refreshEnabled();
     }
 
@@ -93,23 +87,7 @@
     }
 
-    protected void refreshEnabled() {
+    @Override
+    protected void updateEnabledState() {
         setEnabled(getNumWaysInSelection() > 0);
     }
-
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
-        refreshEnabled();
-    }
-
-    public void layerAdded(Layer newLayer) {
-        refreshEnabled();
-
-    }
-
-    public void layerRemoved(Layer oldLayer) {
-        refreshEnabled();
-    }
-
-    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-        refreshEnabled();
-    }
 }
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 1843)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 1844)
@@ -31,4 +31,5 @@
 import java.util.Map;
 import java.util.Set;
+import java.util.logging.Logger;
 
 import javax.swing.JComponent;
@@ -62,4 +63,6 @@
  */
 public class DrawAction extends MapMode implements MapViewPaintable, SelectionChangedListener, AWTEventListener {
+    static private final Logger logger = Logger.getLogger(DrawAction.class.getName());
+
     final private Cursor cursorCrosshair;
     final private Cursor cursorJoinNode;
@@ -239,4 +242,9 @@
         } catch (SecurityException ex) {
         }
+
+        // when exiting we let everybody know about the currently selected
+        // primitives
+        //
+        DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
     }
 
@@ -274,4 +282,7 @@
      */
     private void finishDrawing() {
+        // let everybody else know about the current selection
+        //
+        DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
         lastUsedNode = null;
         wayIsFinished = true;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1843)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1844)
@@ -18,4 +18,5 @@
 import java.util.List;
 import java.util.TreeSet;
+import java.util.logging.Logger;
 
 import javax.swing.JOptionPane;
@@ -59,4 +60,5 @@
  */
 public class SelectAction extends MapMode implements SelectionEnded {
+    static private final Logger logger = Logger.getLogger(SelectAction.class.getName());
 
     /**
