diff --git a/desktoppackage/contents/views/Panel.qml b/desktoppackage/contents/views/Panel.qml --- a/desktoppackage/contents/views/Panel.qml +++ b/desktoppackage/contents/views/Panel.qml @@ -20,6 +20,7 @@ import QtQuick.Layouts 1.1 import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.taskmanager 0.1 as TaskManager PlasmaCore.FrameSvgItem { id: root @@ -34,6 +35,64 @@ readonly property bool verticalPanel: containment && containment.formFactor === PlasmaCore.Types.Vertical + property bool preferOpaque: false + + TaskManager.VirtualDesktopInfo { + id: virtualDesktopInfo + } + + TaskManager.ActivityInfo { + id: activityInfo + } + + TaskManager.TasksModel { + filterByVirtualDesktop: true + filterByActivity: true + + virtualDesktop: virtualDesktopInfo.currentDesktop + activity: activityInfo.currentActivity + + screenGeometry: panel.screenGeometry + id: tasksModel + groupMode: TaskManager.TasksModel.GroupDisabled + onActiveTaskChanged: { + visibleWindowsModel.sourceModel = tasksModel + } + onDataChanged: checkMaximized() + } + + PlasmaCore.SortFilterModel { + id: visibleWindowsModel + filterRole: 'IsMinimized' + filterRegExp: 'false' + sourceModel: tasksModel + } + + function checkMaximized() { + for (var i = 0; i < visibleWindowsModel.count; i++) { + var window = visibleWindowsModel.get(i) + if (window.IsMaximized) { + preferOpaque = true + return + } + preferOpaque = false + } + } + + PlasmaCore.FrameSvgItem { + id: opaqueOverlay + opacity: preferOpaque + Behavior on opacity { + PropertyAnimation { + duration: units.veryLongDuration + easing.type: Easing.InOutQuad + } + } + imagePath: "opaque/widgets/panel-background" + enabledBorders: panel.enabledBorders + anchors.fill: parent + } + function adjustPrefix() { if (!containment) { return "";