[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11989] trunk/blender/source/blender/src/ drawipo.c: Bugfix #7294:

Joshua Leung aligorith at gmail.com
Mon Sep 10 09:24:26 CEST 2007


Revision: 11989
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11989
Author:   aligorith
Date:     2007-09-10 09:24:26 +0200 (Mon, 10 Sep 2007)

Log Message:
-----------
Bugfix #7294:

When resizing an Outliner window, the contents would eventually get 'pushed out of view' when shrinking the view. 

I've added a bit of a 'hack', which will ensure that this doesn't happen, by forcing the view to look at the left-side of the outliner tree, when the width of the outliner window decreses due to resizing. 

Modified Paths:
--------------
    trunk/blender/source/blender/src/drawipo.c

Modified: trunk/blender/source/blender/src/drawipo.c
===================================================================
--- trunk/blender/source/blender/src/drawipo.c	2007-09-10 06:09:48 UTC (rev 11988)
+++ trunk/blender/source/blender/src/drawipo.c	2007-09-10 07:24:26 UTC (rev 11989)
@@ -614,17 +614,23 @@
 			else if( dy > 1.0) do_x= 0; else do_x= 1;
 		}
 		
-		v2d->oldwinx= winx; 
-		v2d->oldwiny= winy;
-		
 		if( do_x ) {
-			
-			/* portrait window: correct for x */
-			dx= cur->ymax-cur->ymin;
-			temp= (cur->xmax+cur->xmin);
-			
-			cur->xmin= temp/2.0 - 0.5*dx/dy;
-			cur->xmax= temp/2.0 + 0.5*dx/dy;
+			if (v2d->keeptot == 2 && winx < v2d->oldwinx) {
+				/* This is a special hack for the outliner, to ensure that the 
+				 * outliner contents will not eventually get pushed out of view
+				 * when shrinking the view. 
+				 */
+				cur->xmax -= cur->xmin;
+				cur->xmin= 0.0f;
+			}
+			else {
+				/* portrait window: correct for x */
+				dx= cur->ymax-cur->ymin;
+				temp= (cur->xmax+cur->xmin);
+				
+				cur->xmin= temp/2.0 - 0.5*dx/dy;
+				cur->xmax= temp/2.0 + 0.5*dx/dy;
+			}
 		}
 		else {
 			dx= cur->xmax-cur->xmin;
@@ -633,6 +639,9 @@
 			cur->ymin= temp/2.0 - 0.5*dy*dx;
 			cur->ymax= temp/2.0 + 0.5*dy*dx;
 		}
+		
+		v2d->oldwinx= winx; 
+		v2d->oldwiny= winy;
 	}
 	
 	if(v2d->keeptot) {
@@ -664,6 +673,7 @@
 				cur->xmax+= dx;
 			}
 			else if((v2d->keeptot!=2) && (cur->xmax > tot->xmax)) {
+				/* keeptot==2 is a special case for the outliner. see space.c, init_v2d_oops for details */
 				dx= cur->xmax-tot->xmax;
 				cur->xmin-= dx;
 				cur->xmax-= dx;





More information about the Bf-blender-cvs mailing list