[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31621] trunk/blender/source/blender/ editors/space_outliner/outliner.c: patch [#23535] Fix for [23408] in Outliner plus other UI fixes there

Campbell Barton ideasman42 at gmail.com
Sat Aug 28 00:22:10 CEST 2010


Revision: 31621
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31621
Author:   campbellbarton
Date:     2010-08-28 00:22:10 +0200 (Sat, 28 Aug 2010)

Log Message:
-----------
patch [#23535] Fix for [23408] in Outliner plus other UI fixes there
from Alexander Kuznetsov (alexk) 

Authors comments
---
- Rename textfield sometimes exceeded scroll bars' and window's borders.
- Restrict buttons were over not under the rename field.
- Restrict lines didn't go all the way.
- Because of 2.4x interface system, in 2.5 rows were shifted 2 pixels up.
- In Datablocks and User Preferences view bottom line was down by one.
- Rows in Datablocks, User Preferences and Keymap view didn't extend all the way but check boxes and text fields did. It was visible while scrolling horizontally  or at right bottom corner.
- Vertical lines in Datablocks and User Preferences didn't stop at the last horizontal line after last row.

This patch fixes those problems.
P.S. I tested the vertical offset with value of 40 so it works perfectly.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_outliner/outliner.c

Modified: trunk/blender/source/blender/editors/space_outliner/outliner.c
===================================================================
--- trunk/blender/source/blender/editors/space_outliner/outliner.c	2010-08-27 22:12:59 UTC (rev 31620)
+++ trunk/blender/source/blender/editors/space_outliner/outliner.c	2010-08-27 22:22:10 UTC (rev 31621)
@@ -102,6 +102,8 @@
 #define OL_H	19
 #define OL_X	18
 
+#define OL_Y_OFFSET	2
+
 #define OL_TOG_RESTRICT_VIEWX	54
 #define OL_TOG_RESTRICT_SELECTX	36
 #define OL_TOG_RESTRICT_RENDERX	18
@@ -2498,7 +2500,7 @@
 		int row;
 		
 		/* get row number - 100 here is just a dummy value since we don't need the column */
-		UI_view2d_listview_view_to_cell(&ar->v2d, 1000, OL_H, 0.0f, 0.0f, 
+		UI_view2d_listview_view_to_cell(&ar->v2d, 1000, OL_H, 0.0f, OL_Y_OFFSET, 
 						fmval[0], fmval[1], NULL, &row);
 		
 		/* select relevant row */
@@ -4711,13 +4713,13 @@
 		/* selection status */
 		if((tselem->flag & TSE_CLOSED)==0)
 			if(tselem->type == TSE_RNA_STRUCT)
-				glRecti(0, *starty+1, (int)ar->v2d.cur.xmax, *starty+OL_H-1);
+				glRecti(0, *starty+1, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, *starty+OL_H-1);
 
 		*starty-= OL_H;
 		if((tselem->flag & TSE_CLOSED)==0) {
 			outliner_draw_struct_marks(ar, soops, &te->subtree, starty);
 			if(tselem->type == TSE_RNA_STRUCT)
-				fdrawline(0, (float)*starty+OL_H-1, ar->v2d.cur.xmax, (float)*starty+OL_H-1);
+				fdrawline(0, (float)*starty+OL_H, ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, (float)*starty+OL_H);
 		}
 	}
 }
@@ -4752,24 +4754,24 @@
 		/* struct marks */
 		UI_ThemeColorShadeAlpha(TH_BACK, -15, -200);
 		//UI_ThemeColorShade(TH_BACK, -20);
-		starty= (int)ar->v2d.tot.ymax-OL_H;
+		starty= (int)ar->v2d.tot.ymax-OL_H-OL_Y_OFFSET;
 		outliner_draw_struct_marks(ar, soops, &soops->tree, &starty);
 	}
 	
 	/* always draw selection fill before hierarchy */
 	UI_GetThemeColor3fv(TH_BACK, col);
 	glColor3f(col[0]+0.06f, col[1]+0.08f, col[2]+0.10f);
-	starty= (int)ar->v2d.tot.ymax-OL_H;
+	starty= (int)ar->v2d.tot.ymax-OL_H-OL_Y_OFFSET;
 	outliner_draw_selection(ar, soops, &soops->tree, &starty);
 	
 	// grey hierarchy lines
 	UI_ThemeColorBlend(TH_BACK, TH_TEXT, 0.2f);
-	starty= (int)ar->v2d.tot.ymax-OL_H/2;
+	starty= (int)ar->v2d.tot.ymax-OL_H/2-OL_Y_OFFSET;
 	startx= 6;
 	outliner_draw_hierarchy(soops, &soops->tree, startx, &starty);
 	
 	// items themselves
-	starty= (int)ar->v2d.tot.ymax-OL_H;
+	starty= (int)ar->v2d.tot.ymax-OL_H-OL_Y_OFFSET;
 	startx= 0;
 	for(te= soops->tree.first; te; te= te->next) {
 		outliner_draw_tree_element(C, block, scene, ar, soops, te, startx, &starty);
@@ -4783,10 +4785,10 @@
 	
 	UI_ThemeColorShade(TH_BACK, 6);
 	ystart= (int)ar->v2d.tot.ymax;
-	ystart= OL_H*(ystart/(OL_H));
+	ystart= OL_H*(ystart/(OL_H))-OL_Y_OFFSET;
 	
 	while(ystart+2*OL_H > ar->v2d.cur.ymin) {
-		glRecti(0, ystart, (int)ar->v2d.cur.xmax, ystart+OL_H);
+		glRecti(0, ystart, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, ystart+OL_H);
 		ystart-= 2*OL_H;
 	}
 }
@@ -4797,11 +4799,11 @@
 	
 	/* background underneath */
 	UI_ThemeColor(TH_BACK);
-	glRecti((int)ar->v2d.cur.xmax-OL_TOGW, (int)ar->v2d.cur.ymin, (int)ar->v2d.cur.xmax, (int)ar->v2d.cur.ymax);
+	glRecti((int)ar->v2d.cur.xmax-OL_TOGW, (int)ar->v2d.cur.ymin-V2D_SCROLL_HEIGHT-1, (int)ar->v2d.cur.xmax+V2D_SCROLL_WIDTH, (int)ar->v2d.cur.ymax);
 	
 	UI_ThemeColorShade(TH_BACK, 6);
 	ystart= (int)ar->v2d.tot.ymax;
-	ystart= OL_H*(ystart/(OL_H));
+	ystart= OL_H*(ystart/(OL_H))-OL_Y_OFFSET;
 	
 	while(ystart+2*OL_H > ar->v2d.cur.ymin) {
 		glRecti((int)ar->v2d.cur.xmax-OL_TOGW, ystart, (int)ar->v2d.cur.xmax, ystart+OL_H);
@@ -4814,19 +4816,19 @@
 	fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX,
 		ar->v2d.cur.ymax,
 		ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX,
-		ar->v2d.cur.ymin);
+		ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT);
 
 	/* render */
 	fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX,
 		ar->v2d.cur.ymax,
 		ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX,
-		ar->v2d.cur.ymin);
+		ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT);
 
 	/* render */
 	fdrawline(ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX,
 		ar->v2d.cur.ymax,
 		ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX,
-		ar->v2d.cur.ymin);
+		ar->v2d.cur.ymin - V2D_SCROLL_HEIGHT);
 }
 
 static void restrictbutton_view_cb(bContext *C, void *poin, void *poin2)
@@ -5215,19 +5217,22 @@
 static void outliner_draw_rnacols(ARegion *ar, SpaceOops *soops, int sizex)
 {
 	View2D *v2d= &ar->v2d;
-	
+
+	float miny = v2d->cur.ymin-V2D_SCROLL_HEIGHT;
+	if(miny<v2d->tot.ymin) miny = v2d->tot.ymin;
+
 	UI_ThemeColorShadeAlpha(TH_BACK, -15, -200);
 
 	/* draw column separator lines */
 	fdrawline((float)sizex,
 		v2d->cur.ymax,
 		(float)sizex,
-		v2d->cur.ymin);
+		miny);
 
 	fdrawline((float)sizex+OL_RNA_COL_SIZEX,
 		v2d->cur.ymax,
 		(float)sizex+OL_RNA_COL_SIZEX,
-		v2d->cur.ymin);
+		miny);
 }
 
 static void outliner_draw_rnabuts(uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, int sizex, ListBase *lb)
@@ -5531,7 +5536,7 @@
 	uiBut *bt;
 	TreeElement *te;
 	TreeStoreElem *tselem;
-	int dx, len;
+	int spx, dx, len;
 	
 	for(te= lb->first; te; te= te->next) {
 		tselem= TREESTORE(te);
@@ -5552,8 +5557,10 @@
 
 				dx= (int)UI_GetStringWidth(te->name);
 				if(dx<100) dx= 100;
-				
-				bt= uiDefBut(block, TEX, OL_NAMEBUTTON, "",  (short)te->xs+2*OL_X-4, (short)te->ys, dx+10, OL_H-1, te->name, 1.0, (float)len-1, 0, 0, "");
+				spx=te->xs+2*OL_X-4;
+				if(spx+dx+10>ar->v2d.cur.xmax) dx = ar->v2d.cur.xmax-spx-10;
+
+				bt= uiDefBut(block, TEX, OL_NAMEBUTTON, "", spx, (short)te->ys, dx+10, OL_H-1, te->name, 1.0, (float)len-1, 0, 0, "");
 				uiButSetRenameFunc(bt, namebutton_cb, tselem);
 				
 				/* returns false if button got removed */
@@ -5614,19 +5621,19 @@
 	/* tweak to display last line (when list bigger than window) */
 	sizey += V2D_SCROLL_HEIGHT;
 	
+	/* adds vertical offset */
+	sizey += OL_Y_OFFSET;
+
 	/* update size of tot-rect (extents of data/viewable area) */
 	UI_view2d_totRect_set(v2d, sizex, sizey);
 
 	/* set matrix for 2d-view controls */
 	UI_view2d_view_ortho(C, v2d);
 
-	/* draw outliner stuff (background and hierachy lines) */
+	/* draw outliner stuff (background, hierachy lines and names) */
 	outliner_back(ar, soops);
 	block= uiBeginBlock(C, ar, "outliner buttons", UI_EMBOSS);
 	outliner_draw_tree((bContext *)C, block, scene, ar, soops);
-
-	/* draw icons and names */
-	outliner_buttons(C, block, ar, soops, &soops->tree);
 	
 	if(ELEM(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF)) {
 		/* draw rna buttons */
@@ -5641,7 +5648,10 @@
 		outliner_draw_restrictcols(ar, soops);
 		outliner_draw_restrictbuts(block, scene, ar, soops, &soops->tree);
 	}
-	
+
+	/* draw edit buttons if nessecery */
+	outliner_buttons(C, block, ar, soops, &soops->tree);	
+
 	uiEndBlock(C, block);
 	uiDrawBlock(C, block);
 	





More information about the Bf-blender-cvs mailing list