quickshell: open the column border over merged panels, fade panel edge stroke with melt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-06-12 09:35:46 +01:00
parent 2d43e6ed24
commit ad2cbd0eaa

View file

@ -514,12 +514,13 @@ in
} }
} }
// Frame right-column inner border always full: when a panel // Frame right-column inner border opens up over a merged
// is merged, its own right-edge stroke sits exactly on this // panel (a border must not slice an open junction) and
// line, so they coincide instead of needing a gap. // resumes exactly at the panel's bottom flare. Driven by the
// melt progress so it follows the morph smoothly.
Rectangle { Rectangle {
x: bar.width - Theme.frameWidth - Theme.borderWidth / 2 x: bar.width - Theme.frameWidth - Theme.borderWidth / 2
y: 38 y: 38 + chrome.height * chrome.mergeP
width: Theme.borderWidth width: Theme.borderWidth
height: Math.max(0, bar.height - Theme.frameWidth - 8 - y) height: Math.max(0, bar.height - Theme.frameWidth - 8 - y)
color: Theme.base03 color: Theme.base03
@ -1267,6 +1268,16 @@ in
control1X: pshape.xr - pshape.ear + 4.42; control1Y: pshape.height control1X: pshape.xr - pshape.ear + 4.42; control1Y: pshape.height
control2X: pshape.xr; control2Y: pshape.bey + pshape.bck control2X: pshape.xr; control2Y: pshape.bey + pshape.bck
} }
}
// Right edge + ear stroke, fading out with the melt a
// merged junction must not be sliced by its own border.
ShapePath {
fillColor: "transparent"
strokeColor: Qt.alpha(Theme.base03, 1 - pshape.merge)
strokeWidth: Theme.borderWidth
capStyle: ShapePath.FlatCap
startX: pshape.xr; startY: pshape.bey
PathLine { x: pshape.xr; y: Math.min(pshape.re, pshape.height) } PathLine { x: pshape.xr; y: Math.min(pshape.re, pshape.height) }
PathCubic { PathCubic {
x: pshape.xr + pshape.re; y: 0 x: pshape.xr + pshape.re; y: 0