Revision: 32757
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32757
Author:   campbellbarton
Date:     2010-10-28 19:46:31 +0200 (Thu, 28 Oct 2010)

Log Message:
-----------
bugfix [#24428] Interface Regions will not keep relative proportions
screen verts were being rounded so resizing a window would end up moving the 
border in one direction.
for this to work properly we should store floats internally but for now 
compensate for this.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_edit.c

Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c   2010-10-28 
13:35:33 UTC (rev 32756)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c   2010-10-28 
17:46:31 UTC (rev 32757)
@@ -608,6 +608,10 @@
 }
 
 /* test if screen vertices should be scaled */
+
+/* needed to alternate AREAGRID snapping else it shifts one way
+ * to avoid this we should use floats at least during runtime [#24428]. */
+static char scale_alt_bool= 0;
 static void screen_test_scale(bScreen *sc, int winsizex, int winsizey)
 {
        ScrVert *sv=NULL;
@@ -643,20 +647,26 @@
                
                /* make sure it fits! */
                for(sv= sc->vertbase.first; sv; sv= sv->next) {
+                       /* 0.1519 was 0.5f, but tweaked so resizing the window 
doesnt favor one direction
+                        * also note scale_alt_bool */
                        tempf= ((float)sv->vec.x)*facx;
-                       sv->vec.x= (short)(tempf+0.5);
-                       sv->vec.x+= AREAGRID-1;
+                       sv->vec.x= (short)(tempf+0.1519);
+                       sv->vec.x+=  AREAGRID-2;
+                       sv->vec.x-=  scale_alt_bool;
                        sv->vec.x-=  (sv->vec.x % AREAGRID); 
                        
                        CLAMP(sv->vec.x, 0, winsizex);
                        
                        tempf= ((float)sv->vec.y )*facy;
-                       sv->vec.y= (short)(tempf+0.5);
-                       sv->vec.y+= AREAGRID-1;
+                       sv->vec.y= (short)(tempf+0.1519);
+                       sv->vec.y+=  AREAGRID-2;
+                       sv->vec.y-=  scale_alt_bool;
                        sv->vec.y-=  (sv->vec.y % AREAGRID); 
                        
                        CLAMP(sv->vec.y, 0, winsizey);
                }
+
+               scale_alt_bool= scale_alt_bool ? 0:1;
        }
        
        /* test for collapsed areas. This could happen in some blender 
version... */


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to