Changeset 6522 in josm
- Timestamp:
- 2013-12-24T17:21:56+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java
r6104 r6522 291 291 public void applySafe(Window window) { 292 292 Point p = new Point(topLeft); 293 293 Dimension size = new Dimension(extent); 294 295 Rectangle virtualBounds = getVirtualScreenBounds(); 296 297 // Ensure window fit on screen 298 299 if (p.x < virtualBounds.x) { 300 p.x = virtualBounds.x; 301 } else if (p.x > virtualBounds.x + virtualBounds.width - size.width) { 302 p.x = virtualBounds.x + virtualBounds.width - size.width; 303 } 304 305 if (p.y < virtualBounds.y) { 306 p.y = virtualBounds.y; 307 } else if (p.y > virtualBounds.y + virtualBounds.height - size.height) { 308 p.y = virtualBounds.y + virtualBounds.height - size.height; 309 } 310 311 int deltax = (p.x + size.width) - (virtualBounds.x + virtualBounds.width); 312 if (deltax > 0) { 313 size.width -= deltax; 314 } 315 316 int deltay = (p.x + size.height) - (virtualBounds.y + virtualBounds.height); 317 if (deltay > 0) { 318 size.height -= deltay; 319 } 320 321 // Ensure window does not hide taskbar 322 323 Rectangle maxbounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); 324 325 deltax = size.width - maxbounds.width; 326 if (deltax > 0) { 327 size.width -= deltax; 328 } 329 330 deltay = size.height - maxbounds.height; 331 if (deltay > 0) { 332 size.height -= deltay; 333 } 334 335 window.setLocation(p); 336 window.setSize(size); 337 } 338 339 /** 340 * Computes the virtual bounds of graphics environment, as an union of all screen bounds. 341 * @return The virtual bounds of graphics environment, as an union of all screen bounds. 342 * @since 6522 343 */ 344 public Rectangle getVirtualScreenBounds() { 294 345 Rectangle virtualBounds = new Rectangle(); 295 GraphicsEnvironment ge = GraphicsEnvironment 296 .getLocalGraphicsEnvironment(); 297 GraphicsDevice[] gs = ge.getScreenDevices(); 298 for (GraphicsDevice gd : gs) { 346 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 347 for (GraphicsDevice gd : ge.getScreenDevices()) { 299 348 if (gd.getType() == GraphicsDevice.TYPE_RASTER_SCREEN) { 300 349 virtualBounds = virtualBounds.union(gd.getDefaultConfiguration().getBounds()); 301 350 } 302 351 } 303 304 if (p.x < virtualBounds.x) { 305 p.x = virtualBounds.x; 306 } else if (p.x > virtualBounds.x + virtualBounds.width - extent.width) { 307 p.x = virtualBounds.x + virtualBounds.width - extent.width; 308 } 309 310 if (p.y < virtualBounds.y) { 311 p.y = virtualBounds.y; 312 } else if (p.y > virtualBounds.y + virtualBounds.height - extent.height) { 313 p.y = virtualBounds.y + virtualBounds.height - extent.height; 314 } 315 316 window.setLocation(p); 317 window.setSize(extent); 352 return virtualBounds; 318 353 } 319 354 … … 385 420 } 386 421 422 @Override 387 423 public String toString() { 388 424 return "WindowGeometry{topLeft="+topLeft+",extent="+extent+"}";
Note:
See TracChangeset
for help on using the changeset viewer.