1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-05-03 02:52:07 -04:00

fix(Frame): Update all remaining known issues & align state modes

This commit is contained in:
purian23
2026-05-01 21:17:22 -04:00
parent e07696a963
commit ec073ddd67
9 changed files with 37 additions and 28 deletions

View File

@@ -87,7 +87,7 @@ Item {
readonly property alias contentWindow: contentWindow
readonly property alias clickCatcher: clickCatcher
readonly property bool useHyprlandFocusGrab: CompositorService.useHyprlandFocusGrab
readonly property bool useBackground: showBackground && SettingsData.modalDarkenBackground
readonly property bool useBackground: false
readonly property bool useSingleWindow: CompositorService.isHyprland
signal opened

View File

@@ -266,7 +266,7 @@ Column {
}
Behavior on height {
enabled: SettingsData.connectedFrameModeActive
enabled: true
NumberAnimation {
duration: Theme.variantDuration(Theme.popoutAnimationDuration, detailHost.active)
easing.type: Easing.BezierSpline

View File

@@ -99,7 +99,9 @@ PanelWindow {
case "background":
return WlrLayer.background;
default:
return WlrLayer.Top;
// Elevate to Overlay when Frame is enabled so the bar stays above
// the FrameWindow (WlrLayer.Top) when it is re-mapped on mode switch.
return SettingsData.frameEnabled ? WlrLayer.Overlay : WlrLayer.Top;
}
}

View File

@@ -29,6 +29,7 @@ Variants {
}
WlrLayershell.namespace: "dms:dock"
WlrLayershell.layer: SettingsData.frameEnabled ? WlrLayer.Overlay : WlrLayer.Top
readonly property bool isVertical: SettingsData.dockPosition === SettingsData.Position.Left || SettingsData.dockPosition === SettingsData.Position.Right

View File

@@ -66,11 +66,11 @@ Rectangle {
function expansionMotionDuration() {
if (isDescriptionToggleAnimation)
return descriptionExpanded ? Theme.notificationInlineExpandDuration : Theme.notificationInlineCollapseDuration;
return root.connectedFrameMode ? Theme.variantDuration(Theme.popoutAnimationDuration, root.expanded) : (root.expanded ? Theme.notificationExpandDuration : Theme.notificationCollapseDuration);
return Theme.variantDuration(Theme.popoutAnimationDuration, root.expanded);
}
function expansionMotionCurve() {
return root.connectedFrameMode ? (root.expanded ? Theme.variantPopoutEnterCurve : Theme.variantPopoutExitCurve) : Theme.expressiveCurves.emphasized;
return root.expanded ? Theme.variantPopoutEnterCurve : Theme.variantPopoutExitCurve;
}
Behavior on scale {
@@ -114,7 +114,7 @@ Rectangle {
}
Behavior on expandedContentOpacity {
enabled: root.connectedFrameMode && root.__initialized && root.userInitiatedExpansion && root.animateExpansion
enabled: root.__initialized && root.userInitiatedExpansion && root.animateExpansion
NumberAnimation {
duration: root.expansionMotionDuration()
easing.type: Easing.BezierSpline
@@ -123,7 +123,7 @@ Rectangle {
}
Behavior on collapsedContentOpacity {
enabled: root.connectedFrameMode && root.__initialized && root.userInitiatedExpansion && root.animateExpansion
enabled: root.__initialized && root.userInitiatedExpansion && root.animateExpansion
NumberAnimation {
duration: root.expansionMotionDuration()
easing.type: Easing.BezierSpline
@@ -138,9 +138,7 @@ Rectangle {
if (keyboardNavigationActive && expanded && selectedNotificationIndex >= 0) {
return Theme.primaryHoverLight;
}
if (connectedFrameMode)
return Theme.popupLayerColor(Theme.surfaceContainerHigh);
return Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency);
return Theme.floatingSurfaceHigh;
}
border.color: {
if (isGroupSelected && keyboardNavigationActive) {
@@ -166,16 +164,16 @@ Rectangle {
}
return Theme.layerOutlineWidth;
}
clip: connectedFrameMode && _clipAnimatedContent
clip: _clipAnimatedContent
onExpandedChanged: {
if (connectedFrameMode && __initialized && userInitiatedExpansion && animateExpansion)
if (__initialized && userInitiatedExpansion && animateExpansion)
_clipAnimatedContent = true;
if (expanded) {
_retainedExpandedContent = false;
return;
}
if (connectedFrameMode && __initialized && userInitiatedExpansion && animateExpansion)
if (__initialized && userInitiatedExpansion && animateExpansion)
_retainedExpandedContent = true;
}

View File

@@ -258,7 +258,7 @@ PanelWindow {
}
Behavior on renderedAlignedHeight {
enabled: win.connectedFrameMode && !exiting && !_isDestroying
enabled: !win.exiting && !win._isDestroying
NumberAnimation {
id: renderedHeightAnim
duration: win.inlineMotionDuration(win.inlineGeometryGrowing)
@@ -666,7 +666,7 @@ PanelWindow {
sourceRect.width: Math.max(0, content.width - (content.cardInset * 2))
sourceRect.height: Math.max(0, content.height - (content.cardInset * 2))
sourceRect.radius: win.connectedFrameMode ? Theme.connectedSurfaceRadius : Theme.cornerRadius
sourceRect.color: win.connectedFrameMode ? Theme.popupLayerColor(Theme.surfaceContainer) : Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
sourceRect.color: Theme.floatingSurface
sourceRect.antialiasing: true
sourceRect.layer.enabled: false
sourceRect.layer.textureSize: Qt.size(0, 0)

View File

@@ -2250,12 +2250,20 @@ Item {
settingKey: "modalBackground"
iconName: "layers"
SettingsControlledByFrame {
visible: themeColorsTab.connectedFrameModeActive
parentModal: themeColorsTab.parentModal
settingLabel: I18n.tr("Darken Modal Background")
reason: I18n.tr("Managed by Frame in Connected Mode")
}
SettingsToggleRow {
tab: "theme"
tags: ["modal", "darken", "background", "overlay"]
settingKey: "modalDarkenBackground"
text: I18n.tr("Darken Modal Background")
description: I18n.tr("Show darkened overlay behind modal dialogs")
visible: !themeColorsTab.connectedFrameModeActive
checked: SettingsData.modalDarkenBackground
onToggled: checked => SettingsData.set("modalDarkenBackground", checked)
}

View File

@@ -771,17 +771,17 @@ Item {
Region {
id: contentInputMask
// Outside-click dismissal needs full-screen input only while interactive.
item: (shouldBeVisible && backgroundInteractive) ? fullScreenMaskItem : contentMaskRect
// Use bar-aware mask so bar widget clicks pass through when a popout is open.
item: (shouldBeVisible && backgroundInteractive) ? backgroundDismissalMask : contentMaskRect
}
Item {
id: fullScreenMaskItem
id: backgroundDismissalMask
visible: false
x: 0
y: 0
width: 32767
height: 32767
x: root.maskX
y: root.maskY
width: root.maskWidth
height: root.maskHeight
}
Item {

View File

@@ -236,7 +236,7 @@ Item {
function _setAnimatedSurfaceEnvelope() {
if (!shouldBeVisible)
return;
if (_fullHeight || !fluidStandaloneActive) {
if (_fullHeight) {
_setSettledSurfaceGeometry();
return;
}
@@ -374,7 +374,7 @@ Item {
readonly property bool renderedGeometryGrowing: alignedHeight >= renderedAlignedHeight
Behavior on renderedAlignedY {
enabled: root.animationsEnabled && fluidStandaloneActive && contentWindow.visible && root.shouldBeVisible
enabled: root.animationsEnabled && contentWindow.visible && root.shouldBeVisible
NumberAnimation {
duration: Theme.variantDuration(root.animationDuration, root.renderedGeometryGrowing)
easing.type: Easing.BezierSpline
@@ -383,7 +383,7 @@ Item {
}
Behavior on renderedAlignedHeight {
enabled: root.animationsEnabled && fluidStandaloneActive && contentWindow.visible && root.shouldBeVisible
enabled: root.animationsEnabled && contentWindow.visible && root.shouldBeVisible
NumberAnimation {
duration: Theme.variantDuration(root.animationDuration, root.renderedGeometryGrowing)
easing.type: Easing.BezierSpline
@@ -633,15 +633,15 @@ Item {
x: contentContainer.x
y: contentContainer.y
width: contentWindow.closeVisualActive ? root.alignedWidth : 0
height: contentWindow.closeVisualActive ? (root.fluidStandaloneActive ? root.renderedAlignedHeight : root.alignedHeight) : 0
height: contentWindow.closeVisualActive ? root.renderedAlignedHeight : 0
}
Item {
id: contentContainer
x: shadowBuffer + root.alignedX - root._surfaceBodyX
y: root._fullHeight ? (root.fluidStandaloneActive ? root.renderedAlignedY : root.alignedY) : shadowBuffer + (root.fluidStandaloneActive ? root.renderedAlignedY : root.alignedY) - root._surfaceBodyY
y: root._fullHeight ? root.renderedAlignedY : shadowBuffer + root.renderedAlignedY - root._surfaceBodyY
width: root.alignedWidth
height: root.fluidStandaloneActive ? root.renderedAlignedHeight : root.alignedHeight
height: root.renderedAlignedHeight
readonly property bool barTop: effectiveBarPosition === SettingsData.Position.Top
readonly property bool barBottom: effectiveBarPosition === SettingsData.Position.Bottom