Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 3443)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 3444)
@@ -36,4 +36,5 @@
 import javax.swing.UIManager;
 
+import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.OpenFileAction;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
@@ -313,4 +314,14 @@
     }
 
+    public static void unregisterActionShortcut(JosmAction action) {
+        unregisterActionShortcut(action, action.getShortcut());
+    }
+
+    public static void unregisterActionShortcut(Action action, Shortcut shortcut) {
+        contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(shortcut.getKeyStroke());
+        contentPanePrivate.getActionMap().remove(action);
+    }
+
+
     ///////////////////////////////////////////////////////////////////////////
     //  Implementation part
Index: trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 3443)
+++ trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 3444)
@@ -108,5 +108,5 @@
     public void destroy() {
         if (sc != null) {
-            Main.unregisterActionShortcut(sc);
+            Main.unregisterActionShortcut(this);
         }
         MapView.removeLayerChangeListener(layerChangeAdapter);
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 3443)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 3444)
@@ -63,14 +63,4 @@
     //static private final Logger logger = Logger.getLogger(SelectAction.class.getName());
 
-    /**
-     * Replies true if we are currently running on OSX
-     *
-     * @return true if we are currently running on OSX
-     */
-    public static boolean isPlatformOsx() {
-        return Main.platform != null
-        && Main.platform instanceof PlatformHookOsx;
-    }
-
     enum Mode { move, rotate, select }
     private Mode mode = null;
@@ -274,5 +264,5 @@
         // Mac OSX simulates with  ctrl + mouse 1  the second mouse button hence no dragging events get fired.
         //
-        if (isPlatformOsx() && mode == Mode.rotate) {
+        if ((Main.platform instanceof PlatformHookOsx) && mode == Mode.rotate) {
             mouseDragged(e);
         }
@@ -490,6 +480,7 @@
                         if (!nodesToMerge.isEmpty()) {
                             Command cmd = MergeNodesAction.mergeNodes(Main.main.getEditLayer(),nodesToMerge, targetNode);
-                            if(cmd != null)
+                            if(cmd != null) {
                                 Main.main.undoRedo.add(cmd);
+                            }
                         }
                     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 3443)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 3444)
@@ -71,6 +71,4 @@
                         Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
         build();
-        DataSet.addSelectionListener(model);
-
         HelpUtil.setHelpContext(this, HelpUtil.ht("/Dialog/HistoryDialog"));
     }
@@ -142,4 +140,5 @@
     public void showNotify() {
         HistoryDataSet.getInstance().addHistoryDataSetListener(this);
+        DataSet.addSelectionListener(model);
     }
 
@@ -147,4 +146,5 @@
     public void hideNotify() {
         HistoryDataSet.getInstance().removeHistoryDataSetListener(this);
+        DataSet.removeSelectionListener(model);
     }
 
@@ -278,4 +278,5 @@
      */
     class ReloadAction extends AbstractAction implements ListSelectionListener {
+
         public ReloadAction() {
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs","refresh"));
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 3443)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 3444)
@@ -151,5 +151,5 @@
     // button in the upper right corner of this dialog
     public static JPanel pluginHook = new JPanel();
-    
+
     private final Map<String, Map<String, Integer>> valueCount = new TreeMap<String, Map<String, Integer>>();
 
@@ -179,5 +179,5 @@
         SelectionEventManager.getInstance().removeSelectionListener(this);
         MapView.removeEditLayerChangeListener(this);
-        Main.unregisterActionShortcut(addActionShortcut);
+        Main.unregisterActionShortcut(addAction, addActionShortcut);
     }
 
