[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28355] trunk/blender/source/blender/ editors: - Added search filter in outliner header.

Ton Roosendaal ton at blender.org
Thu Apr 22 20:16:57 CEST 2010


Revision: 28355
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28355
Author:   ton
Date:     2010-04-22 20:16:56 +0200 (Thu, 22 Apr 2010)

Log Message:
-----------
- Added search filter in outliner header. Only activates filter on enter,
  should make it do 'live' search while types.
- Connecting Viewer nodes sometimes didn't recalculate, depsgraph needed
  remade

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

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2010-04-22 17:35:00 UTC (rev 28354)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2010-04-22 18:16:56 UTC (rev 28355)
@@ -970,14 +970,13 @@
 		
 		if(link==NULL) {
 			nodeAddLink(snode->edittree, tonode, tonode->outputs.first, node, node->inputs.first);
-			ntreeSolveOrder(snode->edittree);
-			NodeTagChanged(snode->edittree, node);
 		}
-		else if(link) {
+		else {
 			link->fromnode= tonode;
 			link->fromsock= tonode->outputs.first;
-			NodeTagChanged(snode->edittree, node);
 		}
+		ntreeSolveOrder(snode->edittree);
+		NodeTagChanged(snode->edittree, node);
 	}
 }
 

Modified: trunk/blender/source/blender/editors/space_outliner/outliner.c
===================================================================
--- trunk/blender/source/blender/editors/space_outliner/outliner.c	2010-04-22 17:35:00 UTC (rev 28354)
+++ trunk/blender/source/blender/editors/space_outliner/outliner.c	2010-04-22 18:16:56 UTC (rev 28355)
@@ -1235,6 +1235,46 @@
 	}
 }
 
+static int outliner_filter_has_name(TreeElement *te, char *name, int flags)
+{
+	int found= 0;
+	
+	/* determine if match */
+	if(flags==OL_FIND)
+		found= BLI_strcasestr(te->name, name)!=NULL;
+	else if(flags==OL_FIND_CASE)
+		found= strstr(te->name, name)!=NULL;
+	else if(flags==OL_FIND_COMPLETE)
+		found= BLI_strcasecmp(te->name, name)==0;
+	else
+		found= strcmp(te->name, name)==0;
+	
+	return found;
+}
+
+static void outliner_filter_tree(SpaceOops *soops, ListBase *lb)
+{
+	TreeElement *te, *ten;
+	
+	if(soops->search_string[0]==0) return;
+
+	for (te= lb->first; te; te= ten) {
+		ten= te->next;
+		
+		if(0==outliner_filter_has_name(te, soops->search_string, OL_FIND)) {
+			
+			outliner_free_tree(&te->subtree);
+			BLI_remlink(lb, te);
+			
+			if(te->flag & TE_FREE_NAME) MEM_freeN(te->name);
+			MEM_freeN(te);
+		}
+		else
+			outliner_filter_tree(soops, &te->subtree);
+	}
+}
+
+
 static void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops)
 {
 	Base *base;
@@ -1416,6 +1456,7 @@
 	}
 
 	outliner_sort(soops, &soops->tree);
+	outliner_filter_tree(soops, &soops->tree);
 }
 
 /* **************** INTERACTIVE ************* */





More information about the Bf-blender-cvs mailing list