diff --git a/src/effects/effectlist/model/effectfilter.cpp b/src/effects/effectlist/model/effectfilter.cpp
index d9fa05dd6..463d8e610 100644
--- a/src/effects/effectlist/model/effectfilter.cpp
+++ b/src/effects/effectlist/model/effectfilter.cpp
@@ -1,75 +1,78 @@
/***************************************************************************
* Copyright (C) 2017 by Nicolas Carion *
* This file is part of Kdenlive. See www.kdenlive.org. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) version 3 or any later version accepted by the *
* membership of KDE e.V. (or its successor approved by the membership *
* of KDE e.V.), which shall act as a proxy defined in Section 14 of *
* version 3 of the license. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see . *
***************************************************************************/
#include "effectfilter.hpp"
#include "abstractmodel/treeitem.hpp"
#include "assets/assetlist/model/assettreemodel.hpp"
#include "effecttreemodel.hpp"
EffectFilter::EffectFilter(QObject *parent)
: AssetFilter(parent)
{
m_type_enabled = false;
}
void EffectFilter::setFilterType(bool enabled, EffectType type)
{
m_type_enabled = enabled;
m_type_value = type;
invalidateFilter();
}
void EffectFilter::reloadFilterOnFavorite()
{
if (m_type_enabled && m_type_value == EffectType::Favorites) {
invalidateFilter();
}
}
bool EffectFilter::filterType(const std::shared_ptr &item) const
{
auto itemType = item->dataColumn(AssetTreeModel::typeCol).value();
if (itemType == EffectType::Hidden) {
return false;
}
if (!m_type_enabled) {
return true;
}
if (m_type_value == EffectType::Favorites) {
return item->dataColumn(AssetTreeModel::favCol).toBool();
}
if (m_type_value == EffectType::Preferred) {
return item->dataColumn(AssetTreeModel::preferredCol).toBool();
}
if (m_type_value == EffectType::Custom) {
return itemType == m_type_value || itemType == EffectType::CustomAudio;
}
return itemType == m_type_value;
}
bool EffectFilter::applyAll(std::shared_ptr item) const
{
if (!m_name_value.isEmpty()) {
- return filterName(item);
+ if (m_type_value == EffectType::Preferred) {
+ return filterName(item);
+ }
+ return filterType(item) && filterName(item);
} else {
return filterType(item);
}
}