fix: notif popups not dodging utils panel

Also make dodging merge with osd/session
This commit is contained in:
2 * r + 2 * t 2026-05-06 20:07:53 +10:00
parent 7c78781727
commit 713302c045
7 changed files with 28 additions and 5 deletions

View file

@ -68,6 +68,7 @@ Item {
sidebarPanel: sidebar sidebarPanel: sidebar
osdPanel: osdWrapper osdPanel: osdWrapper
sessionPanel: sessionWrapper sessionPanel: sessionWrapper
utilitiesPanel: utilities
anchors.top: parent.top anchors.top: parent.top
anchors.right: parent.right anchors.right: parent.right

View file

@ -6,6 +6,7 @@ import qs.components
import qs.components.containers import qs.components.containers
import qs.components.widgets import qs.components.widgets
import qs.services import qs.services
import qs.modules.utilities as Utilities
Item { Item {
id: root id: root
@ -13,6 +14,7 @@ Item {
required property DrawerVisibilities visibilities required property DrawerVisibilities visibilities
required property Item osdPanel required property Item osdPanel
required property Item sessionPanel required property Item sessionPanel
required property Item utilitiesPanel
readonly property int padding: Tokens.padding.large readonly property int padding: Tokens.padding.large
anchors.top: parent.top anchors.top: parent.top
@ -30,13 +32,19 @@ Item {
height += (list.itemAtIndex(i) as NotifWrapper)?.nonAnimHeight ?? 0; height += (list.itemAtIndex(i) as NotifWrapper)?.nonAnimHeight ?? 0;
if (visibilities.osd) { if (visibilities.osd) {
const h = osdPanel.y - Config.border.rounding * 2 - padding * 2; const h = osdPanel.y - padding;
if (height > h) if (height > h)
height = h; height = h;
} }
if (visibilities.session) { if (visibilities.session) {
const h = sessionPanel.y - Config.border.rounding * 2 - padding * 2; const h = sessionPanel.y - padding;
if (height > h)
height = h;
}
if (visibilities.utilities) {
const h = ((QsWindow.window as QsWindow)?.screen.height ?? 0) - (utilitiesPanel as Utilities.Wrapper).nonAnimHeight - Config.border.thickness * 2 - padding * 2 - Tokens.spacing.extraLarge;
if (height > h) if (height > h)
height = h; height = h;
} }

View file

@ -8,6 +8,7 @@ Item {
required property Item sidebarPanel required property Item sidebarPanel
property alias osdPanel: content.osdPanel property alias osdPanel: content.osdPanel
property alias sessionPanel: content.sessionPanel property alias sessionPanel: content.sessionPanel
property alias utilitiesPanel: content.utilitiesPanel
visible: height > 0 visible: height > 0
anchors.topMargin: -5 anchors.topMargin: -5

View file

@ -13,6 +13,8 @@ Item {
required property BarPopouts.Wrapper popouts required property BarPopouts.Wrapper popouts
required property matrix4x4 deformMatrix required property matrix4x4 deformMatrix
readonly property real nonAnimHeight: idleInhibit.nonAnimHeight + record.nonAnimHeight + toggles.implicitHeight + layout.spacing * 2
implicitWidth: layout.implicitWidth implicitWidth: layout.implicitWidth
implicitHeight: layout.implicitHeight implicitHeight: layout.implicitHeight
@ -22,15 +24,21 @@ Item {
anchors.fill: parent anchors.fill: parent
spacing: Tokens.spacing.medium spacing: Tokens.spacing.medium
IdleInhibit {} IdleInhibit {
id: idleInhibit
}
Record { Record {
id: record
props: root.props props: root.props
visibilities: root.visibilities visibilities: root.visibilities
z: 1 z: 1
} }
Toggles { Toggles {
id: toggles
visibilities: root.visibilities visibilities: root.visibilities
popouts: root.popouts popouts: root.popouts
} }

View file

@ -26,6 +26,7 @@ Item {
} }
readonly property bool shouldBeActive: visibilities.sidebar || (visibilities.utilities && Config.utilities.enabled && !(visibilities.session && Config.session.enabled)) readonly property bool shouldBeActive: visibilities.sidebar || (visibilities.utilities && Config.utilities.enabled && !(visibilities.session && Config.session.enabled))
readonly property real totalPadding: content.anchors.margins + CUtils.clamp(content.anchors.margins - Config.border.thickness, 0, content.anchors.margins) readonly property real totalPadding: content.anchors.margins + CUtils.clamp(content.anchors.margins - Config.border.thickness, 0, content.anchors.margins)
readonly property real nonAnimHeight: ((content.item as Content)?.nonAnimHeight ?? 0) + totalPadding
property real offsetScale: shouldBeActive ? 0 : 1 property real offsetScale: shouldBeActive ? 0 : 1
property real sidebarLerp property real sidebarLerp

View file

@ -8,8 +8,10 @@ import qs.services
StyledRect { StyledRect {
id: root id: root
readonly property real nonAnimHeight: layout.implicitHeight + (IdleInhibitor.enabled ? activeChip.implicitHeight + activeChip.anchors.topMargin : 0) + Tokens.padding.extraLargeIncreased
Layout.fillWidth: true Layout.fillWidth: true
implicitHeight: layout.implicitHeight + (IdleInhibitor.enabled ? activeChip.implicitHeight + activeChip.anchors.topMargin : 0) + Tokens.padding.extraLargeIncreased implicitHeight: nonAnimHeight
radius: Tokens.rounding.large radius: Tokens.rounding.large
color: Colours.tPalette.m3surfaceContainer color: Colours.tPalette.m3surfaceContainer

View file

@ -12,6 +12,7 @@ StyledRect {
required property var props required property var props
required property DrawerVisibilities visibilities required property DrawerVisibilities visibilities
readonly property real nonAnimHeight: btnLayout.implicitHeight + listOrControls.implicitHeight + layout.spacing + layout.anchors.margins * 2
Layout.fillWidth: true Layout.fillWidth: true
implicitHeight: layout.implicitHeight + layout.anchors.margins * 2 implicitHeight: layout.implicitHeight + layout.anchors.margins * 2
@ -27,8 +28,9 @@ StyledRect {
spacing: Tokens.spacing.medium spacing: Tokens.spacing.medium
RowLayout { RowLayout {
id: btnLayout
spacing: Tokens.spacing.medium spacing: Tokens.spacing.medium
z: 1
StyledRect { StyledRect {
implicitWidth: implicitHeight implicitWidth: implicitHeight