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 ************* */


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to