[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