// Methods to implement org.ibex.js.JS //////////////////////////////////////
-
public JS call(JS method, JS[] args) throws JSExn {
switch (args.length) {
/** Entry point for the Ibex Engine; handles splash screen, initial xwar loading, and argument processing */
public class Main {
+ // ugly hack: we have to set these properties before AWT loads
+ static {
+ System.setProperty("apple.awt.showGrowBox", "false");
+ System.setProperty("apple.awt.graphics.EnableLazyDrawing", "40");
+ System.setProperty("apple.awt.graphics.EnableLazyDrawing", "true");
+ System.setProperty("apple.awt.window.position.forceSafeUserPositioning", "true");
+ System.setProperty("apple.awt.window.position.forceSafeCreation", "true");
+ System.setProperty("com.apple.hwaccel", "true");
+ System.setProperty("com.apple.forcehwaccel", "true");
+ }
+
/**
* FEATURE: this should be implemented using self-emulation
* Used for security checks. If this is null, it means that only
pendingHeight = height;
syncRootBoxToSurface = true;
abort = true;
- Platform.Scheduler.renderAll();
+ Refresh();
}
// FEATURE: can we avoid creating objects here?
// This is how subclasses signal a 'shallow dirty', indicating that although the backbuffer is valid, the screen is not
public final void Dirty(int x, int y, int w, int h) {
- screenDirtyRegions.dirty(x, y, w, h);
- Platform.Scheduler.renderAll();
+ //screenDirtyRegions.dirty(x, y, w, h);
+ //Refresh();
+ blit(x,y,w,h);
}
public void dirty(int x, int y, int w, int h) {
public void setIcon(Picture i) { if (frame != null) frame.setIconImage(((AWTPicture)i).i); }
public void _setSize(int width, int height) {
g = null;
- window.setSize(width + (insets.left + insets.right), height + (insets.top + insets.bottom)); }
+ //window.setSize(width + (insets.left + insets.right), height + (insets.top + insets.bottom));
+ }
public void setInvisible(boolean b) { window.setVisible(!b); }
protected void _setMinimized(boolean b) { if (Log.on) Log.info(this, "JDK 1.1 platforms cannot minimize or unminimize windows"); }
protected void _setMaximized(boolean b) {
class InnerFrame extends Frame {
public InnerFrame() throws java.lang.UnsupportedOperationException { }
public Dimension getMinimumSize() { return new Dimension(root.minwidth(), root.minheight()); }
- public void update(Graphics gr) { paint(gr); }
+ public void update(Graphics gr) {
+ Rectangle r = gr.getClipBounds();
+ super.update(gr);
+ dirtify(r);
+ }
public void paint(Graphics gr) {
// Mac OS X Jdk1.4 Bug: after a componentResized(), you must wait for the paint() before you redraw
Rectangle r = gr.getClipBounds();
-
+ super.paint(gr);
+ dirtify(r);
+ }
+ private void dirtify(java.awt.Rectangle r) {
+ if (r != null) {
+ Dirty(r.x - insets.left, r.y - insets.top, r.width, r.height);
+ } else {
+ Dirty(0, 0,
+ Math.max(getWidth() - insets.left - insets.right, root.width),
+ Math.min(getHeight() - insets.top - insets.bottom, root.height));
+ }
// ugly hack for Java1.4 dynamicLayout on Win32 -- this catches expansions during smooth resize
- int newwidth = Math.max(r.x - insets.left + r.width, root.width);
- int newheight = Math.max(r.y - insets.top + r.height, root.height);
- if (newwidth > root.width || newheight > root.height)
- componentResized(window.getWidth() - insets.left - insets.right,
- window.getHeight() - insets.top - insets.bottom);
-
- //Dirty(r.x - insets.left, r.y - insets.top, r.width, r.height);
- g = gr;
- blit(r.x - insets.left, r.y - insets.top, r.width, r.height);
- g.setClip(0, 0, getWidth(), getHeight());
+ int newwidth = Math.max(getWidth() - insets.left - insets.right, root.width);
+ int newheight = Math.max(getHeight() - insets.top - insets.bottom, root.height);
+ if (newwidth != root.width || newheight != root.height) componentResized(newwidth, newheight);
}
}
SizeChange(newwidth, newheight);
//if (newwidth > root.width) Dirty(root.width, 0, newwidth-root.width, newheight);
//if (newheight > root.height) Dirty(0, root.height, newwidth, newheight-root.height);
+ Refresh();
}
public void keyTyped(KeyEvent k) { }
protected String getDescriptiveName() { return "Java 1.2+ JVM"; }
public Java2() {
- // Properties for Apple JDK 1.3
- System.setProperty("apple.awt.showGrowBox", "false");
- System.setProperty("com.apple.hwaccel", "true");
- System.setProperty("com.apple.forcehwaccel", "true");
- System.setProperty("apple.awt.window.position.forceSafeUserPositioning", "true");
- System.setProperty("apple.awt.window.position.forceSafeCreation", "true");
-
// disable the focus manager so we can intercept the tab key
javax.swing.FocusManager.setCurrentManager(new javax.swing.FocusManager() {
public void processKeyEvent(Component focusedComponent, KeyEvent anEvent) { }
protected String getDescriptiveName() { return "Java 1.4+ JVM"; }
public Java4() {
java.awt.Toolkit.getDefaultToolkit().setDynamicLayout(true);
- /*
- // Properties for Apple JDK 1.4
- System.setProperty("apple.awt.showGrowBox", "false");
- System.setProperty("apple.awt.graphics.EnableLazyDrawing", "40");
- System.setProperty("apple.awt.graphics.EnableLazyDrawing", "true");
- System.setProperty("apple.awt.window.position.forceSafeUserPositioning", "true");
- System.setProperty("apple.awt.window.position.forceSafeCreation", "true");
- */
}
protected Surface __createSurface(final Box root, final boolean framed) { return new Java4Surface(root, framed); }
public static class Java4Surface extends Java2Surface implements WindowStateListener, MouseWheelListener {