Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 3181)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 3182)
@@ -548,5 +548,7 @@
         }
         super.setVisible(visible);
-        if (!visible) {
+        if (visible) {
+            RelationDialogManager.getRelationDialogManager().positionOnScreen(this);
+        } else {
             // make sure all registered listeners are unregistered
             //
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 3181)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 3182)
@@ -226,19 +226,4 @@
 
     /**
-     * Positions an {@see RelationEditor} centered on the screen
-     *
-     * @param editor the editor
-     */
-    protected void centerOnScreen(RelationEditor editor) {
-        Point p = new Point(0,0);
-        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
-        p.x = (d.width - editor.getSize().width)/2;
-        p.y = (d.height - editor.getSize().height)/2;
-        p.x = Math.max(p.x,0);
-        p.y = Math.max(p.y,0);
-        editor.setLocation(p);
-    }
-
-    /**
      * Replies true, if there is another open {@see RelationEditor} whose
      * upper left corner is close to <code>p</code>.
@@ -259,24 +244,4 @@
 
     /**
-     * Positions a {@see RelationEditor} close to the center of the screen, in such
-     * a way, that it doesn't entirely cover another {@see RelationEditor}
-     *
-     * @param editor
-     */
-    protected void positionCloseToScreenCenter(RelationEditor editor) {
-        Point p = new Point(0,0);
-        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
-        p.x = (d.width - editor.getSize().width)/2;
-        p.y = (d.height - editor.getSize().height)/2;
-        p.x = Math.max(p.x,0);
-        p.y = Math.max(p.y,0);
-        while(hasEditorWithCloseUpperLeftCorner(p)) {
-            p.x += 20;
-            p.y += 20;
-        }
-        editor.setLocation(p);
-    }
-
-    /**
      * Positions a {@see RelationEditor} on the screen. Tries to center it on the
      * screen. If it hide another instance of an editor at the same position this
@@ -288,8 +253,12 @@
     public void positionOnScreen(RelationEditor editor) {
         if (editor == null) return;
-        if (openDialogs.isEmpty()) {
-            centerOnScreen(editor);
-        } else {
-            positionCloseToScreenCenter(editor);
+        if (!openDialogs.isEmpty()) {
+            Point corner = editor.getLocation();
+            while(hasEditorWithCloseUpperLeftCorner(corner)) {
+                // shift a little, so that the dialogs are not exactly on top of each other
+                corner.x += 20;
+                corner.y += 20;
+            }
+            editor.setLocation(corner);
         }
     }
