X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Fplat%2FAWT.java;h=e186789eb67088c180360684a56597678205f245;hb=1019725cfa88d9ad5dfabaf178e87da79c9c3e17;hp=6850927d3e719410c1d2e382aca0f747e3fed4d7;hpb=a81a151e639664cb340cf3726f9e8b9c77d125fb;p=org.ibex.core.git diff --git a/src/org/xwt/plat/AWT.java b/src/org/xwt/plat/AWT.java index 6850927..e186789 100644 --- a/src/org/xwt/plat/AWT.java +++ b/src/org/xwt/plat/AWT.java @@ -20,9 +20,10 @@ public class AWT extends JVM { protected int _getScreenWidth() { return Toolkit.getDefaultToolkit().getScreenSize().width; } protected int _getScreenHeight() { return Toolkit.getDefaultToolkit().getScreenSize().height; } protected Surface _createSurface(Box b, boolean framed) { return new AWTSurface(b, framed); } - protected boolean _supressDirtyOnResize() { return false; } protected void postInit() { + System.setProperty("com.apple.mrj.application.live-resize", "true"); + System.setProperty("com.apple.mrj.application.growbox.intrudes", "false"); if (Log.on) Log.log(Platform.class, " color depth = " + Toolkit.getDefaultToolkit().getColorModel().getPixelSize() + "bpp"); } @@ -108,7 +109,7 @@ public class AWT extends JVM { final Semaphore s = new Semaphore(); FileDialogHelper fd = new FileDialogHelper(suggestedFileName, s, write); s.block(); - return fd.getDirectory() + File.separatorChar + fd.getFile(); + return fd.getDirectory() == null ? null : (fd.getDirectory() + File.separatorChar + fd.getFile()); } @@ -169,10 +170,22 @@ public class AWT extends JVM { public void fillRect(int x, int y, int x2, int y2, int argb) { // FEATURE: use an LRU cache for Color objects - g.setColor(new Color((argb & 0x00FF0000) >> 16, (argb & 0x0000FF00) >> 8, (argb & 0x000000FF))); - g.fillRect(x, y, x2 - x, y2 - y); } + // FIXME: try to use os acceleration + public void fillTrapezoid(int x1, int x2, int y1, int x3, int x4, int y2, int argb) { + g.setColor(new Color((argb & 0x00FF0000) >> 16, (argb & 0x0000FF00) >> 8, (argb & 0x000000FF))); + if (x1 == x3 && x2 == x4) { + g.fillRect(x1, y1, x4 - x1, y2 - y1); + } else for(int y=y1; y _x2) { int _x0 = _x1; _x1 = _x2; _x2 = _x0; } + g.fillRect(_x1, _y1, _x2 - _x1, _y2 - _y1); + } + } } @@ -181,7 +194,12 @@ public class AWT extends JVM { public void blit(PixelBuffer s, int sx, int sy, int dx, int dy, int dx2, int dy2) { if (ourGraphics == null) ourGraphics = window.getGraphics(); - ourGraphics.drawImage(((AWTPixelBuffer)s).i, dx + insets.left, dy + insets.top, dx2 + insets.left, dy2 + insets.top, + insets = (frame == null ? window : frame).getInsets(); + ourGraphics.drawImage(((AWTPixelBuffer)s).i, + dx + insets.left, + dy + insets.top, + dx2 + insets.left, + dy2 + insets.top, sx, sy, sx + (dx2 - dx), sy + (dy2 - dy), null); } @@ -314,7 +332,7 @@ public class AWT extends JVM { public void windowDeiconified(WindowEvent e) { dirty(0, 0, root.width, root.height); Minimized(false); } public void windowActivated(WindowEvent e) { Focused(true); } public void windowDeactivated(WindowEvent e) { Focused(false); } - public void componentMoved(ComponentEvent e) { PosChange(window.getLocation().x + insets.left, window.getLocation().y + insets.top); } + public void componentMoved(ComponentEvent e) { PosChange(window.getLocation().x + insets.left, window.getLocation().y + insets.top); } public void componentResized(ComponentEvent e) { // we have to periodically do this; I don't know why @@ -374,7 +392,7 @@ public class AWT extends JVM { case KeyEvent.VK_F3: return "f3"; case KeyEvent.VK_F4: return "f4"; case KeyEvent.VK_F5: return "f5"; - case KeyEvent.VK_F6: return "f6"; + case KeyEvent.VK_F6: return "f6"; case KeyEvent.VK_F7: return "f7"; case KeyEvent.VK_F8: return "f8"; case KeyEvent.VK_F9: return "f9";