From eeb77b9a2eb2c639e2a21e49139028845ffb56b7 Mon Sep 17 00:00:00 2001 From: Niccolo Venerandi Date: Sat, 15 Oct 2022 17:40:56 +0200 Subject: [PATCH 1/2] Floating panel de-floats when window touches it and is smaller BUG:455538 BUG:455483 BUG:455323 --- desktoppackage/contents/views/Panel.qml | 35 ++++++++++++++++++++----- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/desktoppackage/contents/views/Panel.qml b/desktoppackage/contents/views/Panel.qml index d0f334727..62075b14f 100644 --- a/desktoppackage/contents/views/Panel.qml +++ b/desktoppackage/contents/views/Panel.qml @@ -42,10 +42,10 @@ Item { readonly property int leftPadding: Math.round(Math.min(thickPanelSvg.fixedMargins.left, spacingAtMinSize)); readonly property int rightPadding: Math.round(Math.min(thickPanelSvg.fixedMargins.right, spacingAtMinSize)); - readonly property int bottomFloatingPadding: floating ? (floatingPrefix ? floatingPanelSvg.fixedMargins.bottom : 8) : 0 - readonly property int leftFloatingPadding: floating ? (floatingPrefix ? floatingPanelSvg.fixedMargins.left : 8) : 0 - readonly property int rightFloatingPadding: floating ? (floatingPrefix ? floatingPanelSvg.fixedMargins.right : 8) : 0 - readonly property int topFloatingPadding: floating ? (floatingPrefix ? floatingPanelSvg.fixedMargins.top : 8) : 0 + readonly property int bottomFloatingPadding: floating && containment.location !== PlasmaCore.Types.TopEdge ? (floatingPrefix ? floatingPanelSvg.fixedMargins.bottom : 8) : 0 + readonly property int leftFloatingPadding: floating && containment.location !== PlasmaCore.Types.RightEdge ? (floatingPrefix ? floatingPanelSvg.fixedMargins.left : 8) : 0 + readonly property int rightFloatingPadding: floating && containment.location !== PlasmaCore.Types.LeftEdge ? (floatingPrefix ? floatingPanelSvg.fixedMargins.right : 8) : 0 + readonly property int topFloatingPadding: floating && containment.location !== PlasmaCore.Types.BottomEdge ? (floatingPrefix ? floatingPanelSvg.fixedMargins.top : 8) : 0 TaskManager.VirtualDesktopInfo { id: virtualDesktopInfo @@ -55,14 +55,37 @@ Item { id: activityInfo } + property bool touchingWindow: false + + function rectOverlap(a, b) { + return (Math.max(a.left, b.left) - 1 <= Math.min(a.right, b.right) && + Math.max(a.top, b.top) - 1 <= Math.min(a.bottom, b.bottom)) + } + + function updateWindows() { + if (visibleWindowsModel.count === 0) { + root.touchingWindow = false + return + } + let panelGeo = panel.geometryByDistance(0) + for( var i = 0; i < visibleWindowsModel.rowCount(); i++ ) { + if (rectOverlap(panelGeo, visibleWindowsModel.get(i).Geometry)) { + root.touchingWindow = true + return + } + } + root.touchingWindow = false + } + PlasmaCore.SortFilterModel { id: visibleWindowsModel filterRole: 'IsMinimized' filterRegExp: 'false' + onDataChanged: updateWindows() + onCountChanged: updateWindows() sourceModel: TaskManager.TasksModel { filterByVirtualDesktop: true filterByActivity: true - filterNotMaximized: true filterByScreen: true filterHidden: true @@ -153,7 +176,7 @@ Item { property bool isTransparent: panel.opacityMode === Panel.Global.Translucent property bool isAdaptive: panel.opacityMode === Panel.Global.Adaptive property bool floating: panel.floating - readonly property bool screenCovered: visibleWindowsModel.count > 0 && !kwindowsystem.showingDesktop && panel.visibilityMode == Panel.Global.NormalPanel + readonly property bool screenCovered: touchingWindow && !kwindowsystem.showingDesktop && panel.visibilityMode == Panel.Global.NormalPanel property var stateTriggers: [floating, screenCovered, isOpaque, isAdaptive, isTransparent] onStateTriggersChanged: { let opaqueApplets = false -- GitLab From d740467571e448f661b79b4fa59f92ee517f7c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Venerandi?= Date: Tue, 25 Oct 2022 08:55:37 +0000 Subject: [PATCH 2/2] Avoid implicit function call --- desktoppackage/contents/views/Panel.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/desktoppackage/contents/views/Panel.qml b/desktoppackage/contents/views/Panel.qml index 62075b14f..09b5dcba6 100644 --- a/desktoppackage/contents/views/Panel.qml +++ b/desktoppackage/contents/views/Panel.qml @@ -81,8 +81,8 @@ Item { id: visibleWindowsModel filterRole: 'IsMinimized' filterRegExp: 'false' - onDataChanged: updateWindows() - onCountChanged: updateWindows() + onDataChanged: root.updateWindows() + onCountChanged: root.updateWindows() sourceModel: TaskManager.TasksModel { filterByVirtualDesktop: true filterByActivity: true -- GitLab