2002/08/16 23:37:17
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:50:05 +0000 (06:50 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:50:05 +0000 (06:50 +0000)
darcs-hash:20040130065005-2ba56-8abe52a236b6523bd69c4250da402e1dbe91f197.gz

CHANGES
src/org/xwt/Main.java
src/org/xwt/Surface.java

diff --git a/CHANGES b/CHANGES
index 5e5c509..8465aa8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
 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
+
 
 
index f7a1d69..1cf9035 100644 (file)
@@ -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";
                     }
index da783c1..e59dfc6 100644 (file)
@@ -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());