Ticket #1984: save-geometry.diff

File save-geometry.diff, 3.4 KB (added by anonymous, 17 years ago)
  • src/org/openstreetmap/josm/actions/ExitAction.java

     
    2424    }
    2525
    2626    public void actionPerformed(ActionEvent e) {
    27         if (!Main.breakBecauseUnsavedChanges())
     27        if (!Main.breakBecauseUnsavedChanges()) {
     28            Main.saveGuiGeometry();
    2829            System.exit(0);
     30        }
    2931    }
    3032}
  • src/org/openstreetmap/josm/gui/MainApplication.java

     
    5555            @Override public void windowClosing(final WindowEvent arg0) {
    5656                if (Main.breakBecauseUnsavedChanges())
    5757                    return;
     58                Main.saveGuiGeometry();
    5859                System.exit(0);
    5960            }
    6061        });
     
    213214        mainFrame.setVisible(true);
    214215        splash.closeSplash();
    215216
    216         if (!args.containsKey("no-fullscreen") && !args.containsKey("geometry") && Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH))
     217        if (!args.containsKey("no-fullscreen") && !args.containsKey("geometry") && Main.pref.get("gui.geometry") == null && Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH))
    217218            mainFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    218219
    219220        EventQueue.invokeLater(new Runnable(){
  • src/org/openstreetmap/josm/Main.java

     
    411411        UIManager.put("OptionPane.noIcon", UIManager.get("OptionPane.cancelIcon"));
    412412
    413413        Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
     414        String geometry = Main.pref.get("gui.geometry");
    414415        if (args.containsKey("geometry")) {
    415             String geometry = args.get("geometry").iterator().next();
     416            geometry = args.get("geometry").iterator().next();
     417        }
     418        if (geometry.length() != 0) {
    416419            final Matcher m = Pattern.compile("(\\d+)x(\\d+)(([+-])(\\d+)([+-])(\\d+))?").matcher(geometry);
    417420            if (m.matches()) {
    418421                int w = Integer.valueOf(m.group(1));
     
    427430                        y = screenDimension.height - y - h;
    428431                }
    429432                bounds = new Rectangle(x,y,w,h);
     433                if(!Main.pref.get("gui.geometry").equals(geometry)) {
     434                    // remember this geometry
     435                    Main.pref.put("gui.geometry", geometry);
     436                }
    430437            } else
    431438                System.out.println("Ignoring malformed geometry: "+geometry);
    432439        }
     
    539546    {
    540547        return Locale.getDefault().getLanguage() + ":";
    541548    }
     549
     550    static public void saveGuiGeometry() {
     551        // if the gui.geometry preference is already set,
     552        // save the current window geometry
     553        String curGeometryPref = pref.get("gui.geometry");
     554        if(curGeometryPref.length() != 0) {
     555            Rectangle bounds = parent.getBounds();
     556            pref.put("gui.geometry",
     557                     (int)bounds.getWidth() +
     558                     "x" + (int)bounds.getHeight() +
     559                     "+" + (int)bounds.getX() +
     560                     "+" + (int)bounds.getY());
     561        }
     562    }
    542563}