quickshell: session menu was painted UNDER the chrome shader — move above it, calendar palette
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
a4a34e7248
commit
d2bcdad2fe
1 changed files with 42 additions and 43 deletions
|
|
@ -531,6 +531,44 @@ in
|
||||||
sessionMenu.toggle();
|
sessionMenu.toggle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ── Shell chrome: bar, frame, panel and toast rendered as
|
||||||
|
// ONE signed-distance field (caelestia-style). Surfaces merge
|
||||||
|
// via circular smooth-min, and the 2px border is the distance
|
||||||
|
// band just inside the boundary — borders flow through every
|
||||||
|
// junction fillet by construction, so all of the previous
|
||||||
|
// ears / border-gaps / melt geometry lives in the math now.
|
||||||
|
ShaderEffect {
|
||||||
|
anchors.fill: parent
|
||||||
|
readonly property real panelLeft: chrome.x + 8
|
||||||
|
readonly property real panelRight: chrome.x + chrome.width + (chrome.flushRight ? 4 : -8)
|
||||||
|
property vector4d cutout: Qt.vector4d(
|
||||||
|
bar.width / 2,
|
||||||
|
(30 + bar.height - Theme.frameWidth) / 2,
|
||||||
|
bar.width / 2 - Theme.frameWidth,
|
||||||
|
(bar.height - Theme.frameWidth - 30) / 2)
|
||||||
|
property vector4d panel: chrome.visible
|
||||||
|
? Qt.vector4d((panelLeft + panelRight) / 2, 26 + chrome.height / 2,
|
||||||
|
(panelRight - panelLeft) / 2, 4 + chrome.height / 2)
|
||||||
|
: Qt.vector4d(0, 0, 0, 0)
|
||||||
|
property vector4d toast: toastItem.visible && _toastRect.height > 0.5
|
||||||
|
? Qt.vector4d(toastItem.x + 8 + _toastRect.width / 2, 26 + _toastRect.height / 2,
|
||||||
|
_toastRect.width / 2, 4 + _toastRect.height / 2)
|
||||||
|
: Qt.vector4d(0, 0, 0, 0)
|
||||||
|
readonly property real sessRight: bar.width - Theme.frameWidth + 4
|
||||||
|
property vector4d session: sessionMenu.visible
|
||||||
|
? Qt.vector4d((sessionMenu.x + sessRight) / 2, sessionMenu.y + sessionMenu.height / 2,
|
||||||
|
(sessRight - sessionMenu.x) / 2, sessionMenu.height / 2)
|
||||||
|
: Qt.vector4d(0, 0, 0, 0)
|
||||||
|
property vector4d fillColor: Qt.vector4d(Theme.barBg.r, Theme.barBg.g, Theme.barBg.b, Theme.barBg.a)
|
||||||
|
property vector4d borderColor: Qt.vector4d(Theme.base03.r, Theme.base03.g, Theme.base03.b, 1)
|
||||||
|
property vector2d res: Qt.vector2d(width, height)
|
||||||
|
property real cutoutR: 8
|
||||||
|
property real panelR: 8
|
||||||
|
property real meltK: 12
|
||||||
|
property real borderW: Theme.borderWidth
|
||||||
|
fragmentShader: "file://${chromeShader}"
|
||||||
|
}
|
||||||
|
|
||||||
// ── Session menu: icon-only power controls morphing out of
|
// ── Session menu: icon-only power controls morphing out of
|
||||||
// the right frame column at screen centre (Super+L). Keyboard:
|
// the right frame column at screen centre (Super+L). Keyboard:
|
||||||
// arrows/Tab move the selection, Enter activates, Esc closes.
|
// arrows/Tab move the selection, Enter activates, Esc closes.
|
||||||
|
|
@ -640,11 +678,10 @@ in
|
||||||
Text {
|
Text {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: sessBtn.modelData.icon
|
text: sessBtn.modelData.icon
|
||||||
// Accent for the active icon (like the workspace
|
// Calendar palette: base05 icons; red only when
|
||||||
// pill), base05 idle, base08 for armed danger
|
// a destructive action is the armed selection
|
||||||
color: sessBtn.selected
|
color: sessBtn.selected && sessBtn.modelData.danger
|
||||||
? (sessBtn.modelData.danger ? Theme.base08 : Theme.base0D)
|
? Theme.base08 : Theme.base05
|
||||||
: Theme.base05
|
|
||||||
Behavior on color { ColorAnimation { duration: 120 } }
|
Behavior on color { ColorAnimation { duration: 120 } }
|
||||||
font.family: Theme.iconFont
|
font.family: Theme.iconFont
|
||||||
font.pixelSize: 20
|
font.pixelSize: 20
|
||||||
|
|
@ -666,44 +703,6 @@ in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Shell chrome: bar, frame, panel and toast rendered as
|
|
||||||
// ONE signed-distance field (caelestia-style). Surfaces merge
|
|
||||||
// via circular smooth-min, and the 2px border is the distance
|
|
||||||
// band just inside the boundary — borders flow through every
|
|
||||||
// junction fillet by construction, so all of the previous
|
|
||||||
// ears / border-gaps / melt geometry lives in the math now.
|
|
||||||
ShaderEffect {
|
|
||||||
anchors.fill: parent
|
|
||||||
readonly property real panelLeft: chrome.x + 8
|
|
||||||
readonly property real panelRight: chrome.x + chrome.width + (chrome.flushRight ? 4 : -8)
|
|
||||||
property vector4d cutout: Qt.vector4d(
|
|
||||||
bar.width / 2,
|
|
||||||
(30 + bar.height - Theme.frameWidth) / 2,
|
|
||||||
bar.width / 2 - Theme.frameWidth,
|
|
||||||
(bar.height - Theme.frameWidth - 30) / 2)
|
|
||||||
property vector4d panel: chrome.visible
|
|
||||||
? Qt.vector4d((panelLeft + panelRight) / 2, 26 + chrome.height / 2,
|
|
||||||
(panelRight - panelLeft) / 2, 4 + chrome.height / 2)
|
|
||||||
: Qt.vector4d(0, 0, 0, 0)
|
|
||||||
property vector4d toast: toastItem.visible && _toastRect.height > 0.5
|
|
||||||
? Qt.vector4d(toastItem.x + 8 + _toastRect.width / 2, 26 + _toastRect.height / 2,
|
|
||||||
_toastRect.width / 2, 4 + _toastRect.height / 2)
|
|
||||||
: Qt.vector4d(0, 0, 0, 0)
|
|
||||||
readonly property real sessRight: bar.width - Theme.frameWidth + 4
|
|
||||||
property vector4d session: sessionMenu.visible
|
|
||||||
? Qt.vector4d((sessionMenu.x + sessRight) / 2, sessionMenu.y + sessionMenu.height / 2,
|
|
||||||
(sessRight - sessionMenu.x) / 2, sessionMenu.height / 2)
|
|
||||||
: Qt.vector4d(0, 0, 0, 0)
|
|
||||||
property vector4d fillColor: Qt.vector4d(Theme.barBg.r, Theme.barBg.g, Theme.barBg.b, Theme.barBg.a)
|
|
||||||
property vector4d borderColor: Qt.vector4d(Theme.base03.r, Theme.base03.g, Theme.base03.b, 1)
|
|
||||||
property vector2d res: Qt.vector2d(width, height)
|
|
||||||
property real cutoutR: 8
|
|
||||||
property real panelR: 8
|
|
||||||
property real meltK: 12
|
|
||||||
property real borderW: Theme.borderWidth
|
|
||||||
fragmentShader: "file://${chromeShader}"
|
|
||||||
}
|
|
||||||
|
|
||||||
property var activeDropdown: null
|
property var activeDropdown: null
|
||||||
|
|
||||||
function closeAllDropdowns() {
|
function closeAllDropdowns() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue