Index: src/org/openstreetmap/josm/actions/DownloadAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 415)
+++ src/org/openstreetmap/josm/actions/DownloadAction.java	(working copy)
@@ -66,6 +66,7 @@
         		JOptionPane.showMessageDialog(Main.parent, tr("Please select at least one task to download"));
         }
 
+                dialog = null;
 		dlg.dispose();
 	}
 }
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 415)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(working copy)
@@ -22,15 +22,15 @@
 
 	private static class Task extends PleaseWaitRunnable {
 		private BoundingBoxDownloader reader;
-		private DownloadAction action;
 		private Collection<Collection<GpsPoint>> rawData;
 		private final boolean newLayer;
+                private String name;
 
-		public Task(boolean newLayer, BoundingBoxDownloader reader, DownloadAction action) {
+		public Task(boolean newLayer, BoundingBoxDownloader reader, String name) {
 			super(tr("Downloading GPS data"));
 			this.reader = reader;
-			this.action = action;
 			this.newLayer = newLayer;
+			this.name = name;
 		}
 
 		@Override public void realRun() throws IOException, SAXException {
@@ -40,7 +40,6 @@
 		@Override protected void finish() {
 			if (rawData == null)
 				return;
-			String name = action.dialog.minlat + " " + action.dialog.minlon + " x " + action.dialog.maxlat + " " + action.dialog.maxlon;
 			RawGpsLayer layer = new RawGpsLayer(true, rawData, name, null);
 			if (newLayer || findMergeLayer() == null)
 	            Main.main.addLayer(layer);
@@ -69,7 +68,8 @@
 	private JCheckBox checkBox = new JCheckBox(tr("Raw GPS data"));
 
 	public void download(DownloadAction action, double minlat, double minlon, double maxlat, double maxlon) {
-		Task task = new Task(action.dialog.newLayer.isSelected(), new BoundingBoxDownloader(minlat, minlon, maxlat, maxlon), action);
+                String name = minlat + " " + minlon + " x " + maxlat + " " + maxlon;
+		Task task = new Task(action.dialog.newLayer.isSelected(), new BoundingBoxDownloader(minlat, minlon, maxlat, maxlon), name);
 		Main.worker.execute(task);
 	}
 
Index: src/org/openstreetmap/josm/gui/SelectionManager.java
===================================================================
--- src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 415)
+++ src/org/openstreetmap/josm/gui/SelectionManager.java	(working copy)
@@ -126,15 +126,6 @@
 		eventSource.addMouseListener(this);
 		eventSource.addMouseMotionListener(this);
 		selectionEndedListener.addPropertyChangeListener(this);
-		Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "SelectionManager");
-        Main.contentPane.getActionMap().put("SelectionManager", new AbstractAction(){
-			public void actionPerformed(ActionEvent e) {
-				if (mousePos != null && mousePosStart != null)
-					paintRect();
-				mousePosStart = null;
-				mousePos = null;
-            }
-        });
         eventSource.addPropertyChangeListener("scale", new PropertyChangeListener(){
 			public void propertyChange(PropertyChangeEvent evt) {
 				if (mousePosStart != null) {
@@ -154,8 +145,6 @@
 		eventSource.removeMouseListener(this);
 		eventSource.removeMouseMotionListener(this);
 		selectionEndedListener.removePropertyChangeListener(this);
-		Main.contentPane.getInputMap().remove(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
-		Main.contentPane.getActionMap().remove("SelectionManager");
 	}
 
 	/**
