From a3fbdc78bc5f2c2837c156124dd87e17834f9580 Mon Sep 17 00:00:00 2001 From: Alberto Villa Date: Tue, 30 Mar 2010 11:35:38 +0000 Subject: [PATCH] - Hide empty effects folders when filtering by effect type. Submitted by: Till Theato svn path=/trunk/kdenlive/; revision=4362 --- src/effectslistview.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/effectslistview.cpp b/src/effectslistview.cpp index 6593c8e9..a9d37762 100644 --- a/src/effectslistview.cpp +++ b/src/effectslistview.cpp @@ -65,19 +65,25 @@ void EffectsListView::focusInEvent(QFocusEvent * /*event*/) void EffectsListView::filterList(int pos) { - QTreeWidgetItem *item; - QTreeWidgetItem *folder; for (int i = 0; i < m_effectsList->topLevelItemCount(); i++) { - folder = m_effectsList->topLevelItem(i); + QTreeWidgetItem *folder = m_effectsList->topLevelItem(i); + bool hideFolder = true; for (int j = 0; j < folder->childCount(); j++) { - item = folder->child(j); - if (pos == 0) item->setHidden(false); - else if (item->data(0, Qt::UserRole).toInt() == pos) item->setHidden(false); - else item->setHidden(true); + QTreeWidgetItem *item = folder->child(j); + if (pos == 0 || pos == item->data(0, Qt::UserRole).toInt()) { + item->setHidden(false); + hideFolder = false; + } else { + item->setHidden(true); + } } + // do not hide the folder if it's empty but "All" is selected + if (pos == 0) + hideFolder = false; + folder->setHidden(hideFolder); } - item = m_effectsList->currentItem(); - /*if (item) { + /*item = m_effectsList->currentItem(); + if (item) { if (item->isHidden()) { int i; for (i = 0; i < m_effectsList->count() && m_effectsList->item(i)->isHidden(); i++); //do nothing -- 2.39.2