- 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
This commit is contained in:
2010-04-22 18:16:56 +00:00
parent 749f027e1d
commit 7a4a0d8082
2 changed files with 44 additions and 4 deletions

View File

@@ -970,14 +970,13 @@ static void node_link_viewer(SpaceNode *snode, bNode *tonode)
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);
}
}

View File

@@ -1235,6 +1235,46 @@ void add_seq_dup(SpaceOops *soops, Sequence *seq, TreeElement *te, short index)
}
}
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 @@ static void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops)
}
outliner_sort(soops, &soops->tree);
outliner_filter_tree(soops, &soops->tree);
}
/* **************** INTERACTIVE ************* */