Revision: 2296
          http://vexi.svn.sourceforge.net/vexi/?rev=2296&view=rev
Author:   clrg
Date:     2007-09-21 10:40:50 -0700 (Fri, 21 Sep 2007)

Log Message:
-----------
Change the way we handle Box textures:
- put to contentwidth/contentheight instead of minwidth/minheight
- means we move the trap handling to reflow
- unanticipated benefit of this is it is a major optimization
- no more incremental layout

Modified Paths:
--------------
    trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2007-09-21 00:52:49 UTC 
(rev 2295)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2007-09-21 17:40:50 UTC 
(rev 2296)
@@ -304,9 +304,14 @@
             Log.debug(Box.class, "Called run() on a Box with a null texture");
         } else if (texture.isLoaded) {
             if (test(TILE_IMAGE)) {
-                putAndTriggerTraps(SC_minwidth, JSU.N(texture.width));
-                putAndTriggerTraps(SC_minheight, JSU.N(texture.height));
+               // the texture affects contentsize but that's irrelevant if the
+               // box is already allocated a bigger space than the the texture
+               if (texture.width > width || texture.height > height) {
+                       setConstrain();
+                       return null;
+               }
             }
+               // in which case we just need to 'paint' our texture
             dirty();
         } else if (texture.loadFailed) {
             JS res = texture.stream;
@@ -439,7 +444,11 @@
             set(HAS_WIDTH_SLACK);
         else clear(HAS_WIDTH_SLACK);
         // constrain contentwidth
-        newwidth = min(maxwidth, max(minwidth, max(newwidth, text.width)));
+        if (!test(HAS_EMPTY_STRING))
+               newwidth = max(newwidth, text.width);
+        if (texture != null)
+               newwidth = max(newwidth, texture.width);
+        newwidth = min(maxwidth, max(minwidth, newwidth));
 
         // mark 
         if (newwidth != contentwidth) {


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to