mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-08 04:09:15 -04:00
refactor(fullscreen): Refine fullscreen layering and frame overlay behavior
- Replaced fullscreen hide/reveal toggles with Show Over Fullscreen layer toggles - Added Launcher opt to Show Over Fullscreen setting - Kept fullscreen stacking compositor-owned via top/overlay layer choices - Fixed Hyrland Special Workspaces - Updated DMS Advanced Configuration docs
This commit is contained in:
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Services
|
||||
|
||||
QtObject {
|
||||
id: root
|
||||
@@ -10,7 +11,6 @@ QtObject {
|
||||
property string edge: "bottom"
|
||||
property bool dockVisible: false
|
||||
property bool autoHide: false
|
||||
property bool hasFullscreenToplevel: false
|
||||
property real iconSize: 40
|
||||
property real spacing: 4
|
||||
property real borderThickness: 0
|
||||
@@ -23,14 +23,14 @@ QtObject {
|
||||
return Math.round(value * dpr) / dpr;
|
||||
}
|
||||
|
||||
readonly property bool frameExclusionActive: SettingsData.frameEnabled && !!screen && SettingsData.isScreenInPreferences(screen, SettingsData.frameScreenPreferences)
|
||||
readonly property bool connectedMode: Theme.isConnectedEffect
|
||||
readonly property bool connectedBarActiveOnEdge: connectedMode && !!screen && SettingsData.getActiveBarEdgesForScreen(screen).includes(edge)
|
||||
readonly property bool frameExclusionActive: CompositorService.frameWindowVisibleForScreen(screen)
|
||||
readonly property bool usesConnectedFrameChrome: CompositorService.usesConnectedFrameChromeForScreen(screen)
|
||||
readonly property bool connectedBarActiveOnEdge: usesConnectedFrameChrome && !!screen && SettingsData.getActiveBarEdgesForScreen(screen).includes(edge)
|
||||
|
||||
readonly property real connectedJoinInset: {
|
||||
if (connectedMode)
|
||||
if (usesConnectedFrameChrome)
|
||||
return connectedBarActiveOnEdge ? SettingsData.frameBarSize : SettingsData.frameThickness;
|
||||
if (SettingsData.frameEnabled)
|
||||
if (frameExclusionActive)
|
||||
return SettingsData.frameEdgeInsetForSide(screen, edge);
|
||||
return 0;
|
||||
}
|
||||
@@ -38,15 +38,15 @@ QtObject {
|
||||
readonly property real frameInset: {
|
||||
if (!frameExclusionActive)
|
||||
return 0;
|
||||
if (connectedMode)
|
||||
if (usesConnectedFrameChrome)
|
||||
return connectedJoinInset;
|
||||
return SettingsData.frameThickness;
|
||||
}
|
||||
|
||||
readonly property real effectiveMargin: connectedMode ? 0 : margin
|
||||
readonly property real visualOffset: connectedMode ? 0 : offset
|
||||
readonly property real effectiveMargin: usesConnectedFrameChrome ? 0 : margin
|
||||
readonly property real visualOffset: usesConnectedFrameChrome ? 0 : offset
|
||||
readonly property real reserveOffset: offset
|
||||
readonly property real joinedEdgeMargin: connectedMode ? 0 : (barSpacing + effectiveMargin + 1 + borderThickness)
|
||||
readonly property real joinedEdgeMargin: usesConnectedFrameChrome ? 0 : (barSpacing + effectiveMargin + 1 + borderThickness)
|
||||
readonly property real bodyEdgeMargin: frameInset + joinedEdgeMargin
|
||||
|
||||
readonly property real bodyThickness: iconSize + spacing * 2 + borderThickness * 2
|
||||
@@ -57,5 +57,5 @@ QtObject {
|
||||
// Frame/bar edge exclusions already reserve the edge itself, so the dock
|
||||
// reservation covers only the dock body and user offset beyond that edge.
|
||||
readonly property real reserveZone: px(bodyThickness + reserveOffset + effectiveMargin)
|
||||
readonly property bool shouldReserveSpace: dockVisible && !hasFullscreenToplevel && !autoHide && barSpacing <= 0
|
||||
readonly property bool shouldReserveSpace: dockVisible && !autoHide && barSpacing <= 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user