Thanks for your help. I tried it with this code:
var searchDelegate = {}; searchDelegate.filter = function(data) { var name = data.get("name").toLowerCase(); var searchString = searchTextField.getValue().toLowerCase(); var containsString = name.indexOf(searchString) > -1; var childMatchString = false; return (recursiveSearch(data, searchString) || containsString); }; function recursiveSearch(model, searchString){ var matchString = false; var childMatchString = false; model.get("children").forEach(function(entry) { var childname = entry.get("name").toLowerCase(); if(childname.indexOf(searchString) > -1){ matchString = true; } childMatchString = recursiveSearch(entry, searchString); if(childMatchString || matchString) tree.openNodeWithoutScrolling(entry); }); return (childMatchString || matchString); } Without the tree.openNodeWithoutScrolling the Search works well, but if i take it in i get an "Maximum call stack size exceeded". This happens also when the matched string is in the second level only one time, so tree.openNodeWithoutScrolling(entry); should be called only one time. -- View this message in context: http://qooxdoo.678.n2.nabble.com/Open-All-Nodes-in-VirtualTree-tp7587679p7587743.html Sent from the qooxdoo mailing list archive at Nabble.com. ------------------------------------------------------------------------------ _______________________________________________ qooxdoo-devel mailing list qooxdoo-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel