diff --git a/quickshell/Modals/Common/DankModalConnected.qml b/quickshell/Modals/Common/DankModalConnected.qml index f56f60ff..424f6c6b 100644 --- a/quickshell/Modals/Common/DankModalConnected.qml +++ b/quickshell/Modals/Common/DankModalConnected.qml @@ -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 diff --git a/quickshell/Modules/ControlCenter/Components/DragDropGrid.qml b/quickshell/Modules/ControlCenter/Components/DragDropGrid.qml index 54dc09b4..4d2fa7db 100644 --- a/quickshell/Modules/ControlCenter/Components/DragDropGrid.qml +++ b/quickshell/Modules/ControlCenter/Components/DragDropGrid.qml @@ -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 diff --git a/quickshell/Modules/DankBar/DankBarWindow.qml b/quickshell/Modules/DankBar/DankBarWindow.qml index d2197f3e..6237a43d 100644 --- a/quickshell/Modules/DankBar/DankBarWindow.qml +++ b/quickshell/Modules/DankBar/DankBarWindow.qml @@ -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; } } diff --git a/quickshell/Modules/Dock/Dock.qml b/quickshell/Modules/Dock/Dock.qml index a3ca6e97..6e621bfd 100644 --- a/quickshell/Modules/Dock/Dock.qml +++ b/quickshell/Modules/Dock/Dock.qml @@ -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 diff --git a/quickshell/Modules/Notifications/Center/NotificationCard.qml b/quickshell/Modules/Notifications/Center/NotificationCard.qml index 788496b5..8b9c03c5 100644 --- a/quickshell/Modules/Notifications/Center/NotificationCard.qml +++ b/quickshell/Modules/Notifications/Center/NotificationCard.qml @@ -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; } diff --git a/quickshell/Modules/Notifications/Popup/NotificationPopup.qml b/quickshell/Modules/Notifications/Popup/NotificationPopup.qml index 570fd829..a6711f0b 100644 --- a/quickshell/Modules/Notifications/Popup/NotificationPopup.qml +++ b/quickshell/Modules/Notifications/Popup/NotificationPopup.qml @@ -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) diff --git a/quickshell/Modules/Settings/ThemeColorsTab.qml b/quickshell/Modules/Settings/ThemeColorsTab.qml index e88408b2..be78b134 100644 --- a/quickshell/Modules/Settings/ThemeColorsTab.qml +++ b/quickshell/Modules/Settings/ThemeColorsTab.qml @@ -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) } diff --git a/quickshell/Widgets/DankPopoutConnected.qml b/quickshell/Widgets/DankPopoutConnected.qml index fd60b7b7..b7d98f18 100644 --- a/quickshell/Widgets/DankPopoutConnected.qml +++ b/quickshell/Widgets/DankPopoutConnected.qml @@ -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 { diff --git a/quickshell/Widgets/DankPopoutStandalone.qml b/quickshell/Widgets/DankPopoutStandalone.qml index e7b2e9c8..3dcc0373 100644 --- a/quickshell/Widgets/DankPopoutStandalone.qml +++ b/quickshell/Widgets/DankPopoutStandalone.qml @@ -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