1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-15 07:35:20 -04:00

Refactor connected chrome rendering & remove legacy components

This commit is contained in:
purian23
2026-06-12 10:16:07 -04:00
parent fdee09b583
commit 92569d8b4d
17 changed files with 430 additions and 1132 deletions
+29 -9
View File
@@ -747,16 +747,36 @@ Variants {
onHeightChanged: dock._syncDockChromeState()
}
ConnectedShape {
Item {
id: dockConnectedChrome
visible: Theme.isConnectedEffect && dock.reveal && !SettingsData.connectedFrameModeActive
barSide: dock.connectedBarSide
bodyWidth: dockBackground.width
bodyHeight: dockBackground.height
connectorRadius: Theme.connectedCornerRadius
surfaceRadius: dock.surfaceRadius
fillColor: dock.surfaceColor
x: dockBackground.x - bodyX
y: dockBackground.y - bodyY
readonly property real extraLeft: dock.isVertical ? 0 : Theme.connectedCornerRadius
readonly property real extraTop: dock.isVertical ? Theme.connectedCornerRadius : 0
readonly property real bodyRadius: dock.surfaceRadius
readonly property bool barTop: dock.connectedBarSide === "top"
readonly property bool barBottom: dock.connectedBarSide === "bottom"
readonly property bool barLeft: dock.connectedBarSide === "left"
readonly property bool barRight: dock.connectedBarSide === "right"
x: dockBackground.x - extraLeft
y: dockBackground.y - extraTop
width: dockBackground.width + extraLeft * 2
height: dockBackground.height + extraTop * 2
ShaderEffect {
anchors.fill: parent
fragmentShader: Qt.resolvedUrl("../../Shaders/qsb/connected_chrome.frag.qsb")
property real widthPx: width
property real heightPx: height
property vector4d surfaceColor: Qt.vector4d(dock.surfaceColor.r, dock.surfaceColor.g, dock.surfaceColor.b, dock.surfaceColor.a)
property vector4d shadowColor: Qt.vector4d(0, 0, 0, 0)
property vector4d shadowParam: Qt.vector4d(0, 0, 0, 0)
property vector4d ambientParam: Qt.vector4d(0, 0, 0, 0)
property vector4d bodyRect: Qt.vector4d(dockConnectedChrome.extraLeft, dockConnectedChrome.extraTop, dockBackground.width, dockBackground.height)
property vector4d cornerRadius: Qt.vector4d(dockConnectedChrome.barTop || dockConnectedChrome.barLeft ? 0 : dockConnectedChrome.bodyRadius, dockConnectedChrome.barTop || dockConnectedChrome.barRight ? 0 : dockConnectedChrome.bodyRadius, dockConnectedChrome.barBottom || dockConnectedChrome.barRight ? 0 : dockConnectedChrome.bodyRadius, dockConnectedChrome.barBottom || dockConnectedChrome.barLeft ? 0 : dockConnectedChrome.bodyRadius)
property vector4d edgeParam: Qt.vector4d(dockConnectedChrome.barTop ? 0 : (dockConnectedChrome.barBottom ? 1 : (dockConnectedChrome.barLeft ? 2 : 3)), Theme.connectedCornerRadius, 0, 0)
}
}
Shape {
+32 -36
View File
@@ -49,10 +49,6 @@ PanelWindow {
readonly property var _dockDescriptor: ConnectedModeState.surfaceDescriptor(win._screenName, "dock")
readonly property var _notifDescriptor: ConnectedModeState.surfaceDescriptor(win._screenName, "notification")
readonly property var _modalDescriptor: ConnectedModeState.surfaceDescriptor(win._screenName, "modal")
readonly property var _popoutState: ConnectedModeState.legacySurfaceState(win._screenName, "popout")
readonly property var _dockState: ConnectedModeState.legacySurfaceState(win._screenName, "dock")
readonly property var _notifState: ConnectedModeState.legacySurfaceState(win._screenName, "notification")
readonly property var _modalState: ConnectedModeState.legacySurfaceState(win._screenName, "modal")
readonly property bool _connectedActive: CompositorService.usesConnectedFrameChromeForScreen(win.targetScreen)
readonly property string _barSide: {
@@ -68,7 +64,7 @@ PanelWindow {
readonly property real _ccr: Theme.connectedCornerRadius
readonly property bool _popoutHorizontal: SurfaceGeometry.isHorizontal(win._popoutDescriptor.barSide)
readonly property bool _modalHorizontal: ConnectorGeometry.isHorizontal(win._modalState.barSide)
readonly property bool _modalHorizontal: SurfaceGeometry.isHorizontal(win._modalDescriptor.barSide)
readonly property var _popoutBodyGeometry: SurfaceGeometry.animatedBodyRect(win._popoutDescriptor, win._dpr)
readonly property var _modalBodyGeometry: SurfaceGeometry.animatedBodyRect(win._modalDescriptor, win._dpr)
readonly property var _notifBodyGeometry: SurfaceGeometry.bodyRect(win._notifDescriptor, win._dpr)
@@ -86,15 +82,15 @@ PanelWindow {
readonly property real _dockConnectorRadiusValue: {
if (!_dockBodyBlurAnchor._active)
return win._ccr;
const thickness = (win._dockState.barSide === "left" || win._dockState.barSide === "right") ? _dockBodyBlurAnchor.width : _dockBodyBlurAnchor.height;
const thickness = SurfaceGeometry.isVertical(win._dockDescriptor.barSide) ? _dockBodyBlurAnchor.width : _dockBodyBlurAnchor.height;
const bodyRadius = win._dockBodyBlurRadiusValue;
const maxConnectorRadius = Math.max(0, thickness - bodyRadius - win._seamOverlap);
return Math.max(0, Math.min(win._ccr, bodyRadius, maxConnectorRadius));
}
readonly property real _notifSideUnderlapValue: ConnectorGeometry.isVertical(win._notifState.barSide) ? win._seamOverlap : 0
readonly property real _notifStartUnderlapValue: win._notifState.omitStartConnector ? win._seamOverlap : 0
readonly property real _notifEndUnderlapValue: win._notifState.omitEndConnector ? win._seamOverlap : 0
readonly property real _notifSideUnderlapValue: SurfaceGeometry.isVertical(win._notifDescriptor.barSide) ? win._seamOverlap : 0
readonly property real _notifStartUnderlapValue: win._notifDescriptor.omitStartConnector ? win._seamOverlap : 0
readonly property real _notifEndUnderlapValue: win._notifDescriptor.omitEndConnector ? win._seamOverlap : 0
// Theme.snap rounds to integer pixel: equal rounded values suppress
// downstream Changed during sub-pixel morph jitter.
@@ -284,7 +280,7 @@ PanelWindow {
Region {
id: _popoutBodyBlurCap
readonly property string _side: win._popoutState.barSide
readonly property string _side: win._popoutDescriptor.barSide
readonly property real _capThickness: win._popoutBlurCapThickness()
readonly property bool _active: _popoutBodyBlurAnchor._active && _capThickness > 0 && _popoutBodyBlurAnchor.width > 0 && _popoutBodyBlurAnchor.height > 0
readonly property int _capWidth: (_side === "left" || _side === "right") ? Math.round(Math.min(_capThickness, _popoutBodyBlurAnchor.width)) : _popoutBodyBlurAnchor.width
@@ -311,7 +307,7 @@ PanelWindow {
id: _popoutLeftConnectorCutout
readonly property bool _active: _popoutLeftConnectorBlurAnchor.width > 0 && _popoutLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._popoutState.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._popoutDescriptor.barSide, "left")
readonly property real _radius: win._popoutConnectorRadiusLeft
intersection: Intersection.Subtract
@@ -338,7 +334,7 @@ PanelWindow {
id: _popoutRightConnectorCutout
readonly property bool _active: _popoutRightConnectorBlurAnchor.width > 0 && _popoutRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._popoutState.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._popoutDescriptor.barSide, "right")
readonly property real _radius: win._popoutConnectorRadiusRight
intersection: Intersection.Subtract
@@ -389,8 +385,8 @@ PanelWindow {
id: _popoutFarStartConnectorCutout
readonly property bool _active: _popoutFarStartConnectorBlurAnchor.width > 0 && _popoutFarStartConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._popoutState.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._popoutState.barSide, "left")
readonly property string _barSide: win._farConnectorBarSide(win._popoutDescriptor.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._popoutDescriptor.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectivePopoutFarStartCcr
@@ -418,8 +414,8 @@ PanelWindow {
id: _popoutFarEndConnectorCutout
readonly property bool _active: _popoutFarEndConnectorBlurAnchor.width > 0 && _popoutFarEndConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._popoutState.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._popoutState.barSide, "right")
readonly property string _barSide: win._farConnectorBarSide(win._popoutDescriptor.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._popoutDescriptor.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectivePopoutFarEndCcr
@@ -446,7 +442,7 @@ PanelWindow {
Region {
id: _dockBodyBlurCap
readonly property string _side: win._dockState.barSide
readonly property string _side: win._dockDescriptor.barSide
readonly property bool _active: _dockBodyBlurAnchor._active && _dockBodyBlurAnchor.width > 0 && _dockBodyBlurAnchor.height > 0
readonly property int _capWidth: (_side === "left" || _side === "right") ? Math.round(Math.min(win._dockConnectorRadiusValue, _dockBodyBlurAnchor.width)) : _dockBodyBlurAnchor.width
readonly property int _capHeight: (_side === "top" || _side === "bottom") ? Math.round(Math.min(win._dockConnectorRadiusValue, _dockBodyBlurAnchor.height)) : _dockBodyBlurAnchor.height
@@ -471,7 +467,7 @@ PanelWindow {
id: _dockLeftConnectorCutout
readonly property bool _active: _dockLeftConnectorBlurAnchor.width > 0 && _dockLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._dockState.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._dockDescriptor.barSide, "left")
intersection: Intersection.Subtract
radius: win._dockConnectorRadiusValue
@@ -496,7 +492,7 @@ PanelWindow {
id: _dockRightConnectorCutout
readonly property bool _active: _dockRightConnectorBlurAnchor.width > 0 && _dockRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._dockState.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._dockDescriptor.barSide, "right")
intersection: Intersection.Subtract
radius: win._dockConnectorRadiusValue
@@ -522,7 +518,7 @@ PanelWindow {
Region {
id: _notifBodyBlurCap
readonly property string _side: win._notifState.barSide
readonly property string _side: win._notifDescriptor.barSide
readonly property real _capRadius: win._effectiveNotifMaxCcr
readonly property bool _active: _notifBodySceneBlurAnchor._active && _notifBodySceneBlurAnchor.width > 0 && _notifBodySceneBlurAnchor.height > 0 && _capRadius > 0
readonly property int _capWidth: (_side === "left" || _side === "right") ? Math.round(Math.min(_capRadius, _notifBodySceneBlurAnchor.width)) : _notifBodySceneBlurAnchor.width
@@ -549,7 +545,7 @@ PanelWindow {
id: _notifLeftConnectorCutout
readonly property bool _active: _notifLeftConnectorBlurAnchor.width > 0 && _notifLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._notifState.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._notifDescriptor.barSide, "left")
readonly property real _radius: win._notifConnectorRadiusLeft
intersection: Intersection.Subtract
@@ -576,7 +572,7 @@ PanelWindow {
id: _notifRightConnectorCutout
readonly property bool _active: _notifRightConnectorBlurAnchor.width > 0 && _notifRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._notifState.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._notifDescriptor.barSide, "right")
readonly property real _radius: win._notifConnectorRadiusRight
intersection: Intersection.Subtract
@@ -627,8 +623,8 @@ PanelWindow {
id: _notifFarStartConnectorCutout
readonly property bool _active: _notifFarStartConnectorBlurAnchor.width > 0 && _notifFarStartConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._notifState.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._notifState.barSide, "left")
readonly property string _barSide: win._farConnectorBarSide(win._notifDescriptor.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._notifDescriptor.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveNotifFarStartCcr
@@ -656,8 +652,8 @@ PanelWindow {
id: _notifFarEndConnectorCutout
readonly property bool _active: _notifFarEndConnectorBlurAnchor.width > 0 && _notifFarEndConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._notifState.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._notifState.barSide, "right")
readonly property string _barSide: win._farConnectorBarSide(win._notifDescriptor.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._notifDescriptor.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveNotifFarEndCcr
@@ -684,7 +680,7 @@ PanelWindow {
Region {
id: _modalBodyBlurCap
readonly property string _side: win._modalState.barSide
readonly property string _side: win._modalDescriptor.barSide
readonly property real _capThickness: win._modalBlurCapThickness()
readonly property bool _active: _modalBodyBlurAnchor._active && _capThickness > 0 && _modalBodyBlurAnchor.width > 0 && _modalBodyBlurAnchor.height > 0
readonly property int _capWidth: (_side === "left" || _side === "right") ? Math.round(Math.min(_capThickness, _modalBodyBlurAnchor.width)) : _modalBodyBlurAnchor.width
@@ -711,7 +707,7 @@ PanelWindow {
id: _modalLeftConnectorCutout
readonly property bool _active: _modalLeftConnectorBlurAnchor.width > 0 && _modalLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._modalState.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._modalDescriptor.barSide, "left")
readonly property real _radius: win._modalConnectorRadiusLeft
intersection: Intersection.Subtract
@@ -738,7 +734,7 @@ PanelWindow {
id: _modalRightConnectorCutout
readonly property bool _active: _modalRightConnectorBlurAnchor.width > 0 && _modalRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._modalState.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._modalDescriptor.barSide, "right")
readonly property real _radius: win._modalConnectorRadiusRight
intersection: Intersection.Subtract
@@ -789,8 +785,8 @@ PanelWindow {
id: _modalFarStartConnectorCutout
readonly property bool _active: _modalFarStartConnectorBlurAnchor.width > 0 && _modalFarStartConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._modalState.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._modalState.barSide, "left")
readonly property string _barSide: win._farConnectorBarSide(win._modalDescriptor.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._modalDescriptor.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveModalFarStartCcr
@@ -818,8 +814,8 @@ PanelWindow {
id: _modalFarEndConnectorCutout
readonly property bool _active: _modalFarEndConnectorBlurAnchor.width > 0 && _modalFarEndConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._modalState.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._modalState.barSide, "right")
readonly property string _barSide: win._farConnectorBarSide(win._modalDescriptor.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._modalDescriptor.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveModalFarEndCcr
@@ -835,7 +831,7 @@ PanelWindow {
// Notif body scene rect, accounting for start/end/side underlaps per bar orientation.
function _notifBodyScene() {
const isHoriz = ConnectorGeometry.isHorizontal(win._notifState.barSide);
const isHoriz = SurfaceGeometry.isHorizontal(win._notifDescriptor.barSide);
const start = win._notifStartUnderlapValue;
const end = win._notifEndUnderlapValue;
const side = win._notifSideUnderlapValue;
@@ -848,7 +844,7 @@ PanelWindow {
};
}
return {
"x": _notifBodyBlurAnchor.x - (win._notifState.barSide === "left" ? side : 0),
"x": _notifBodyBlurAnchor.x - (win._notifDescriptor.barSide === "left" ? side : 0),
"y": _notifBodyBlurAnchor.y - start,
"width": _notifBodyBlurAnchor.width + side,
"height": _notifBodyBlurAnchor.height + start + end
@@ -871,7 +867,7 @@ PanelWindow {
function _unifiedSurfaces() {
const arr = [];
const p = win._popoutBodyGeometry;
if (win._popoutDescriptor.visible && win._popoutState.screen === win._screenName && p.width > 0 && p.height > 0)
if (win._popoutDescriptor.visible && win._popoutDescriptor.screenName === win._screenName && p.width > 0 && p.height > 0)
arr.push({
"side": win._popoutDescriptor.barSide,
"body": {"x": p.x, "y": p.y, "width": p.width, "height": p.height},