diff --git a/libtaskmanager/taskfilterproxymodel.h b/libtaskmanager/taskfilterproxymodel.h --- a/libtaskmanager/taskfilterproxymodel.h +++ b/libtaskmanager/taskfilterproxymodel.h @@ -53,6 +53,7 @@ Q_PROPERTY(bool filterByScreen READ filterByScreen WRITE setFilterByScreen NOTIFY filterByScreenChanged) Q_PROPERTY(bool filterByActivity READ filterByActivity WRITE setFilterByActivity NOTIFY filterByActivityChanged) Q_PROPERTY(bool filterNotMinimized READ filterNotMinimized WRITE setFilterNotMinimized NOTIFY filterNotMinimizedChanged) + Q_PROPERTY(bool filterNotMaximized READ filterNotMaximized WRITE setFilterNotMaximized NOTIFY filterNotMaximizedChanged) Q_PROPERTY(bool filterSkipTaskbar READ filterSkipTaskbar WRITE setFilterSkipTaskbar NOTIFY filterSkipTaskbarChanged) Q_PROPERTY(bool filterSkipPager READ filterSkipPager WRITE setFilterSkipPager NOTIFY filterSkipPagerChanged) @@ -212,6 +213,23 @@ **/ void setFilterNotMinimized(bool filter); + /** + * Whether non-maximized tasks should be filtered. Defaults to + * @c false. + * + * @see setFilterNotMaximized + * @returns @c true if non-maximized tasks should be filtered. + **/ + bool filterNotMaximized() const; + + /** + * Set whether non-maximized tasks should be filtered. + * + * @see filterNotMaximized + * @param filter Whether non-maximized tasks should be filtered. + **/ + void setFilterNotMaximized(bool filter); + /** * Whether tasks which should be omitted from 'task bars' should be * filtered. Defaults to @c true. @@ -285,6 +303,7 @@ void filterByScreenChanged() const; void filterByActivityChanged() const; void filterNotMinimizedChanged() const; + void filterNotMaximizedChanged() const; void filterSkipTaskbarChanged() const; void filterSkipPagerChanged() const; void demandingAttentionSkipsFiltersChanged() const; diff --git a/libtaskmanager/taskfilterproxymodel.cpp b/libtaskmanager/taskfilterproxymodel.cpp --- a/libtaskmanager/taskfilterproxymodel.cpp +++ b/libtaskmanager/taskfilterproxymodel.cpp @@ -41,6 +41,7 @@ bool filterByScreen = false; bool filterByActivity = false; bool filterNotMinimized = false; + bool filterNotMaximized = false; bool filterSkipTaskbar = true; bool filterSkipPager = false; @@ -186,6 +187,22 @@ } } +bool TaskFilterProxyModel::filterNotMaximized() const +{ + return d->filterNotMaximized; +} + +void TaskFilterProxyModel::setFilterNotMaximized(bool filter) +{ + if (d->filterNotMaximized != filter) { + d->filterNotMaximized = filter; + + invalidateFilter(); + + emit filterNotMaximizedChanged(); + } +} + bool TaskFilterProxyModel::filterSkipTaskbar() const { return d->filterSkipTaskbar; @@ -302,6 +319,15 @@ } } + // Filter not maximized. + if (d->filterNotMaximized) { + bool isMaximized = sourceIdx.data(AbstractTasksModel::IsMaximized).toBool(); + + if (!isMaximized) { + return false; + } + } + return true; } diff --git a/libtaskmanager/tasksmodel.h b/libtaskmanager/tasksmodel.h --- a/libtaskmanager/tasksmodel.h +++ b/libtaskmanager/tasksmodel.h @@ -74,6 +74,7 @@ Q_PROPERTY(bool filterByScreen READ filterByScreen WRITE setFilterByScreen NOTIFY filterByScreenChanged) Q_PROPERTY(bool filterByActivity READ filterByActivity WRITE setFilterByActivity NOTIFY filterByActivityChanged) Q_PROPERTY(bool filterNotMinimized READ filterNotMinimized WRITE setFilterNotMinimized NOTIFY filterNotMinimizedChanged) + Q_PROPERTY(bool filterNotMaximized READ filterNotMaximized WRITE setFilterNotMaximized NOTIFY filterNotMaximized) Q_PROPERTY(SortMode sortMode READ sortMode WRITE setSortMode NOTIFY sortModeChanged) Q_PROPERTY(bool separateLaunchers READ separateLaunchers WRITE setSeparateLaunchers NOTIFY separateLaunchersChanged) @@ -297,6 +298,23 @@ **/ void setFilterNotMinimized(bool filter); + /** + * Whether non-maximized tasks should be filtered. Defaults to + * @c false. + * + * @see setFilterNotMaximized + * @returns @c true if non-maximized tasks should be filtered. + **/ + bool filterNotMaximized() const; + + /** + * Set whether non-maximized tasks should be filtered. + * + * @see filterNotMaximized + * @param filter Whether non-maximized tasks should be filtered. + **/ + void setFilterNotMaximized(bool filter); + /** * The sort mode used in sorting tasks. Defaults to SortAlpha. * @@ -852,6 +870,7 @@ void filterByScreenChanged() const; void filterByActivityChanged() const; void filterNotMinimizedChanged() const; + void filterNotMaximizedChanged() const; void sortModeChanged() const; void separateLaunchersChanged() const; void launchInPlaceChanged() const; diff --git a/libtaskmanager/tasksmodel.cpp b/libtaskmanager/tasksmodel.cpp --- a/libtaskmanager/tasksmodel.cpp +++ b/libtaskmanager/tasksmodel.cpp @@ -316,6 +316,8 @@ q, &TasksModel::filterByActivityChanged); QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterNotMinimizedChanged, q, &TasksModel::filterNotMinimizedChanged); + QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterNotMaximizedChanged, + q, &TasksModel::filterNotMaximizedChanged); groupingProxyModel = new TaskGroupingProxyModel(q); groupingProxyModel->setSourceModel(filterProxyModel); @@ -1188,6 +1190,16 @@ d->filterProxyModel->setFilterNotMinimized(filter); } +bool TasksModel::filterNotMaximized() const +{ + return d->filterProxyModel->filterNotMaximized(); +} + +void TasksModel::setFilterNotMaximized(bool filter) +{ + d->filterProxyModel->setFilterNotMaximized(filter); +} + TasksModel::SortMode TasksModel::sortMode() const { return d->sortMode;