Index: trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 11930)
+++ trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 11931)
@@ -170,5 +170,5 @@
     }
 
-    private enum Polarity {
+    enum Polarity {
         NORTH(LatLon.NORTH_POLE),
         SOUTH(LatLon.SOUTH_POLE);
@@ -180,5 +180,5 @@
         }
 
-        private LatLon getLatLon() {
+        LatLon getLatLon() {
             return latlon;
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 11930)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 11931)
@@ -142,39 +142,5 @@
     @Override
     public LayerPainter attachToMapView(MapViewEvent event) {
-        event.getMapView().addMouseListener(new MouseAdapter() {
-            @Override
-            public void mousePressed(MouseEvent e) {
-                if (e.getButton() != MouseEvent.BUTTON1)
-                    return;
-                boolean mousePressedInButton = false;
-                for (Marker mkr : data) {
-                    if (mkr.containsPoint(e.getPoint())) {
-                        mousePressedInButton = true;
-                        break;
-                    }
-                }
-                if (!mousePressedInButton)
-                    return;
-                mousePressed = true;
-                if (isVisible()) {
-                    invalidate();
-                }
-            }
-
-            @Override
-            public void mouseReleased(MouseEvent ev) {
-                if (ev.getButton() != MouseEvent.BUTTON1 || !mousePressed)
-                    return;
-                mousePressed = false;
-                if (!isVisible())
-                    return;
-                for (Marker mkr : data) {
-                    if (mkr.containsPoint(ev.getPoint())) {
-                        mkr.actionPerformed(new ActionEvent(this, 0, null));
-                    }
-                }
-                invalidate();
-            }
-        });
+        event.getMapView().addMouseListener(new MarkerMouseAdapter());
 
         if (event.getMapView().playHeadMarker == null) {
@@ -475,4 +441,40 @@
     }
 
+    private final class MarkerMouseAdapter extends MouseAdapter {
+        @Override
+        public void mousePressed(MouseEvent e) {
+            if (e.getButton() != MouseEvent.BUTTON1)
+                return;
+            boolean mousePressedInButton = false;
+            for (Marker mkr : data) {
+                if (mkr.containsPoint(e.getPoint())) {
+                    mousePressedInButton = true;
+                    break;
+                }
+            }
+            if (!mousePressedInButton)
+                return;
+            mousePressed = true;
+            if (isVisible()) {
+                invalidate();
+            }
+        }
+
+        @Override
+        public void mouseReleased(MouseEvent ev) {
+            if (ev.getButton() != MouseEvent.BUTTON1 || !mousePressed)
+                return;
+            mousePressed = false;
+            if (!isVisible())
+                return;
+            for (Marker mkr : data) {
+                if (mkr.containsPoint(ev.getPoint())) {
+                    mkr.actionPerformed(new ActionEvent(this, 0, null));
+                }
+            }
+            invalidate();
+        }
+    }
+
     public static final class ShowHideMarkerText extends AbstractAction implements LayerAction {
         private final transient MarkerLayer layer;
