put osds into loaders

This commit is contained in:
end-4
2025-05-14 23:29:44 +02:00
parent 13f10fc0f0
commit 006b6c00d9
2 changed files with 100 additions and 89 deletions
@@ -47,62 +47,68 @@ Scope {
Variants { Variants {
model: Quickshell.screens model: Quickshell.screens
PanelWindow { Loader {
id: osdLoader
property var modelData property var modelData
active: showOsdValues
screen: modelData PanelWindow {
exclusionMode: ExclusionMode.Normal property var modelData
WlrLayershell.namespace: "quickshell:onScreenDisplay"
WlrLayershell.layer: WlrLayer.Overlay
color: "transparent"
anchors { screen: modelData
top: true exclusionMode: ExclusionMode.Normal
} WlrLayershell.namespace: "quickshell:onScreenDisplay"
mask: Region { WlrLayershell.layer: WlrLayer.Overlay
item: osdValuesWrapper color: "transparent"
}
implicitWidth: columnLayout.implicitWidth anchors {
implicitHeight: columnLayout.implicitHeight top: true
visible: showOsdValues }
mask: Region {
ColumnLayout { item: osdValuesWrapper
id: columnLayout
anchors.horizontalCenter: parent.horizontalCenter
Item {
height: 1 // Prevent Wayland protocol error
} }
Item {
id: osdValuesWrapper
// Extra space for shadow
implicitHeight: true ? (osdValues.implicitHeight + Appearance.sizes.elevationMargin * 2) : 0
implicitWidth: osdValues.implicitWidth + Appearance.sizes.elevationMargin * 2
clip: true
MouseArea { implicitWidth: columnLayout.implicitWidth
anchors.fill: parent implicitHeight: columnLayout.implicitHeight
hoverEnabled: true visible: osdLoader.active
onEntered: root.showOsdValues = false
ColumnLayout {
id: columnLayout
anchors.horizontalCenter: parent.horizontalCenter
Item {
height: 1 // Prevent Wayland protocol error
} }
Item {
id: osdValuesWrapper
// Extra space for shadow
implicitHeight: true ? (osdValues.implicitHeight + Appearance.sizes.elevationMargin * 2) : 0
implicitWidth: osdValues.implicitWidth + Appearance.sizes.elevationMargin * 2
clip: true
Behavior on implicitHeight { MouseArea {
NumberAnimation { anchors.fill: parent
duration: Appearance.animation.menuDecel.duration hoverEnabled: true
easing.type: Appearance.animation.menuDecel.type onEntered: root.showOsdValues = false
}
Behavior on implicitHeight {
NumberAnimation {
duration: Appearance.animation.menuDecel.duration
easing.type: Appearance.animation.menuDecel.type
}
}
OsdValueIndicator {
id: osdValues
anchors.centerIn: parent
value: Brightness.value
icon: "light_mode"
name: qsTr("Brightness")
} }
} }
OsdValueIndicator {
id: osdValues
anchors.centerIn: parent
value: Brightness.value
icon: "light_mode"
name: qsTr("Brightness")
}
} }
}
}
} }
} }
@@ -51,62 +51,67 @@ Scope {
Variants { Variants {
model: Quickshell.screens model: Quickshell.screens
PanelWindow { Loader {
id: osdLoader
property var modelData property var modelData
active: showOsdValues
PanelWindow {
property var modelData
screen: modelData screen: modelData
exclusionMode: ExclusionMode.Normal exclusionMode: ExclusionMode.Normal
WlrLayershell.namespace: "quickshell:onScreenDisplay" WlrLayershell.namespace: "quickshell:onScreenDisplay"
WlrLayershell.layer: WlrLayer.Overlay WlrLayershell.layer: WlrLayer.Overlay
color: "transparent" color: "transparent"
anchors { anchors {
top: true top: true
} }
mask: Region { mask: Region {
item: osdValuesWrapper item: osdValuesWrapper
}
implicitWidth: columnLayout.implicitWidth
implicitHeight: columnLayout.implicitHeight
visible: showOsdValues
ColumnLayout {
id: columnLayout
anchors.horizontalCenter: parent.horizontalCenter
Item {
height: 1 // Prevent Wayland protocol error
} }
Item {
id: osdValuesWrapper
// Extra space for shadow
implicitHeight: true ? (osdValues.implicitHeight + Appearance.sizes.elevationMargin * 2) : 0
implicitWidth: osdValues.implicitWidth + Appearance.sizes.elevationMargin * 2
clip: true
MouseArea { implicitWidth: columnLayout.implicitWidth
anchors.fill: parent implicitHeight: columnLayout.implicitHeight
hoverEnabled: true visible: osdLoader.active
onEntered: root.showOsdValues = false
ColumnLayout {
id: columnLayout
anchors.horizontalCenter: parent.horizontalCenter
Item {
height: 1 // Prevent Wayland protocol error
} }
Item {
id: osdValuesWrapper
// Extra space for shadow
implicitHeight: true ? (osdValues.implicitHeight + Appearance.sizes.elevationMargin * 2) : 0
implicitWidth: osdValues.implicitWidth + Appearance.sizes.elevationMargin * 2
clip: true
Behavior on implicitHeight { MouseArea {
NumberAnimation { anchors.fill: parent
duration: Appearance.animation.menuDecel.duration hoverEnabled: true
easing.type: Appearance.animation.menuDecel.type onEntered: root.showOsdValues = false
}
Behavior on implicitHeight {
NumberAnimation {
duration: Appearance.animation.menuDecel.duration
easing.type: Appearance.animation.menuDecel.type
}
}
OsdValueIndicator {
id: osdValues
anchors.centerIn: parent
value: Audio.sink?.audio.volume ?? 0
icon: Audio.sink?.audio.muted ? "volume_off" : "volume_up"
name: qsTr("Volume")
} }
} }
OsdValueIndicator {
id: osdValues
anchors.centerIn: parent
value: Audio.sink?.audio.volume ?? 0
icon: Audio.sink?.audio.muted ? "volume_off" : "volume_up"
name: qsTr("Volume")
}
} }
}
}
} }
} }