From: megacz Date: Fri, 30 Jan 2004 06:50:05 +0000 (+0000) Subject: 2002/08/16 23:37:17 X-Git-Tag: RC3~1564 X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=commitdiff_plain;h=75dae8186964f15f4111d12adb6f95bf34355e8d 2002/08/16 23:37:17 darcs-hash:20040130065005-2ba56-8abe52a236b6523bd69c4250da402e1dbe91f197.gz --- diff --git a/CHANGES b/CHANGES index 5e5c509..8465aa8 100644 --- a/CHANGES +++ b/CHANGES @@ -364,5 +364,7 @@ 16-Aug megacz Box.java: fixed a bug that was causing lockups on Win32... +16-Aug megacz Surface.java, Main.java: don't scar the splash screen + diff --git a/src/org/xwt/Main.java b/src/org/xwt/Main.java index f7a1d69..1cf9035 100644 --- a/src/org/xwt/Main.java +++ b/src/org/xwt/Main.java @@ -100,6 +100,7 @@ public class Main extends Applet { origin = "file:" + f.getAbsolutePath(); if (f.isDirectory()) { Resources.loadDirectory(f); + Surface.scarAllSurfacesFromNowOn = true; } else { initialTemplate = "org.xwt.builtin.splash"; } diff --git a/src/org/xwt/Surface.java b/src/org/xwt/Surface.java index da783c1..e59dfc6 100644 --- a/src/org/xwt/Surface.java +++ b/src/org/xwt/Surface.java @@ -48,6 +48,9 @@ public abstract class Surface { /** true iff button 3 is depressed, in MessageQueue-time */ public static boolean button3 = false; + /** true iff all surfaces created from now on should be scarred */ + public static boolean scarAllSurfacesFromNowOn = false; + // Public Members and State Variables ///////////////////////////////////////////////////////// @@ -97,8 +100,7 @@ public abstract class Surface { /** the last time a Click message was processed; used for simulating DoubleClick's */ static long lastClickTime = 0; - - + // Methods to be overridden by subclasses /////////////////////////////////////////////////////// @@ -337,6 +339,8 @@ public abstract class Surface { /** a striped 100x100 double buffer */ private DoubleBuffer showRenderBuf2 = null; + /** true iff this window should be scarred */ + private boolean scarred = true; // Other Methods /////////////////////////////////////////////////////////////////////////////// @@ -357,11 +361,13 @@ public abstract class Surface { /** wrapper for setSize() which makes sure to dirty the place where the scar used to be */ void _setSize(int width, int height) { - width = Math.max(width, scarPicture.getWidth()); - height = Math.max(height, scarPicture.getHeight()); - dirty(hscar, - root.size(1) - vscar - scarPicture.getHeight(), - scarPicture.getWidth(), scarPicture.getHeight()); + if (scarred) { + width = Math.max(width, scarPicture.getWidth()); + height = Math.max(height, scarPicture.getHeight()); + dirty(hscar, + root.size(1) - vscar - scarPicture.getHeight(), + scarPicture.getWidth(), scarPicture.getHeight()); + } setSize(width, height); this.width = width; this.height = height; @@ -391,6 +397,8 @@ public abstract class Surface { } public Surface(Box root) { + this.scarred = scarAllSurfacesFromNowOn; + scarAllSurfacesFromNowOn = true; this.root = root; if (root.surface != null && root.surface.root == root) root.surface.dispose(); root.remove(); @@ -417,9 +425,9 @@ public abstract class Surface { if (root.size(0) != width || root.size(1) != height) { // since the scar will be moving, dirty the place it used to be - dirty(hscar, - root.size(1) - vscar - scarPicture.getHeight(), - scarPicture.getWidth(), scarPicture.getHeight()); + if (scarred) dirty(hscar, + root.size(1) - vscar - scarPicture.getHeight(), + scarPicture.getWidth(), scarPicture.getHeight()); // sort of ugly; we can't use set() here because it will cause an infinite mutual recursion root._size_0 = (short)width; @@ -466,7 +474,7 @@ public abstract class Surface { root.render(x, y, w, h, backbuffer); // if any area under the scar was repainted, rescar that area - if (x < hscar + scarPicture.getWidth() && + if (scarred && x < hscar + scarPicture.getWidth() && y + h > height - scarPicture.getHeight() - vscar) { int _x1 = Math.max(x, hscar); int _x2 = Math.min(x + w, hscar + scarPicture.getWidth());