diff --git a/doc/ChangeLog b/doc/ChangeLog index 3236d2e43..b81b8d325 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -11,6 +11,10 @@ However, if there is a path and it comes out blank in getSourceNameAsPath() then that means %DATADIR% expansion failed. + * Fixed #2440. Now when a firewall is matched in the quick + filter, all child elements (e.g. policies, interfaces) will be + displayed as well. + 2011-07-11 theron * Implemented #2514, support for address table alternate paths. There's a "data directory" setting under user preferences. If the diff --git a/src/libgui/ObjectTreeView.cpp b/src/libgui/ObjectTreeView.cpp index b83325556..25edf5d49 100644 --- a/src/libgui/ObjectTreeView.cpp +++ b/src/libgui/ObjectTreeView.cpp @@ -868,6 +868,7 @@ void ObjectTreeView::setFilter(QString text) if (fwbdebug) qDebug() << "ObjectTreeView::setFilter " << text; + list expand; for (QTreeWidgetItemIterator wit(this); *wit; ++wit) { ObjectTreeViewItem *otvi = dynamic_cast(*wit); if (otvi->getUserFolderParent() != 0) continue; @@ -876,6 +877,10 @@ void ObjectTreeView::setFilter(QString text) if (filterMatches(text, otvi, obj)) { (*wit)->setHidden(false); + if (Firewall::cast(obj) != 0) { + expand.push_back(otvi); + } + QTreeWidgetItem *parent = (*wit)->parent(); while (parent != 0) { parent->setHidden(false); @@ -886,6 +891,14 @@ void ObjectTreeView::setFilter(QString text) } } + list::const_iterator iter; + for (iter = expand.begin(); iter != expand.end(); ++iter) { + QTreeWidgetItem *item = *iter; + item->setHidden(false); + for (int ii = 0; ii < item->childCount(); ii++) { + expand.push_back(item->child(ii)); + } + } + if (!text.isEmpty()) this->expandAll(); } -