1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-04 04:42:05 -04:00

Connected frames & defaults

This commit is contained in:
purian23
2026-03-24 20:21:44 -04:00
parent e57ab3e1f3
commit 220bb2708b
11 changed files with 102 additions and 31 deletions

View File

@@ -10,6 +10,8 @@ Item {
required property var axis
required property var barConfig
visible: !SettingsData.frameEnabled
anchors.fill: parent
anchors.left: parent.left
@@ -38,7 +40,7 @@ Item {
property real rt: {
if (SettingsData.frameEnabled)
return 0;
return SettingsData.frameRounding;
if (barConfig?.squareCorners ?? false)
return 0;
if (barWindow.hasMaximizedToplevel)

View File

@@ -23,6 +23,31 @@ Item {
readonly property real innerPadding: barConfig?.innerPadding ?? 4
readonly property real outlineThickness: (barConfig?.widgetOutlineEnabled ?? false) ? (barConfig?.widgetOutlineThickness ?? 1) : 0
readonly property real _frameLeftInset: {
if (!SettingsData.frameEnabled || barWindow.isVertical) return 0
return barWindow.hasAdjacentLeftBar
? SettingsData.frameBarThickness
: 0
}
readonly property real _frameRightInset: {
if (!SettingsData.frameEnabled || barWindow.isVertical) return 0
return barWindow.hasAdjacentRightBar
? SettingsData.frameBarThickness
: 0
}
readonly property real _frameTopInset: {
if (!SettingsData.frameEnabled || !barWindow.isVertical) return 0
return barWindow.hasAdjacentTopBar
? SettingsData.frameThickness
: 0
}
readonly property real _frameBottomInset: {
if (!SettingsData.frameEnabled || !barWindow.isVertical) return 0
return barWindow.hasAdjacentBottomBar
? SettingsData.frameThickness
: 0
}
property alias hLeftSection: hLeftSection
property alias hCenterSection: hCenterSection
property alias hRightSection: hRightSection
@@ -31,10 +56,14 @@ Item {
property alias vRightSection: vRightSection
anchors.fill: parent
anchors.leftMargin: Math.max(Theme.spacingXS, innerPadding * 0.8)
anchors.rightMargin: Math.max(Theme.spacingXS, innerPadding * 0.8)
anchors.topMargin: barWindow.isVertical ? (barWindow.hasAdjacentTopBar ? outlineThickness : Theme.spacingXS) : 0
anchors.bottomMargin: barWindow.isVertical ? (barWindow.hasAdjacentBottomBar ? outlineThickness : Theme.spacingXS) : 0
anchors.leftMargin: Math.max(Theme.spacingXS, innerPadding * 0.8) + _frameLeftInset
anchors.rightMargin: Math.max(Theme.spacingXS, innerPadding * 0.8) + _frameRightInset
anchors.topMargin: (barWindow.isVertical
? (barWindow.hasAdjacentTopBar ? outlineThickness : Theme.spacingXS)
: 0) + _frameTopInset
anchors.bottomMargin: (barWindow.isVertical
? (barWindow.hasAdjacentBottomBar ? outlineThickness : Theme.spacingXS)
: 0) + _frameBottomInset
clip: false
property int componentMapRevision: 0

View File

@@ -7,7 +7,7 @@ import qs.Common
Variants {
id: root
model: SettingsData.frameEnabled ? SettingsData.getFrameFilteredScreens() : []
model: SettingsData.getFrameScreensAlways()
FrameInstance {
required property ShellScreen modelData

View File

@@ -7,10 +7,10 @@ import qs.Common
Item {
id: root
required property var barEdges // array of "top" | "bottom" | "left" | "right"
anchors.fill: parent
required property var barEdges
readonly property real _thickness: SettingsData.frameThickness
readonly property real _barThickness: SettingsData.frameBarThickness
readonly property real _rounding: SettingsData.frameRounding

View File

@@ -19,7 +19,7 @@ Scope {
// Skips any edge where a bar already provides its own exclusiveZone.
Loader {
active: !root.barEdges.includes("top")
active: SettingsData.frameEnabled && !root.barEdges.includes("top")
sourceComponent: EdgeExclusion {
screen: root.screen
anchorTop: true
@@ -29,7 +29,7 @@ Scope {
}
Loader {
active: !root.barEdges.includes("bottom")
active: SettingsData.frameEnabled && !root.barEdges.includes("bottom")
sourceComponent: EdgeExclusion {
screen: root.screen
anchorBottom: true
@@ -39,7 +39,7 @@ Scope {
}
Loader {
active: !root.barEdges.includes("left")
active: SettingsData.frameEnabled && !root.barEdges.includes("left")
sourceComponent: EdgeExclusion {
screen: root.screen
anchorLeft: true
@@ -49,7 +49,7 @@ Scope {
}
Loader {
active: !root.barEdges.includes("right")
active: SettingsData.frameEnabled && !root.barEdges.includes("right")
sourceComponent: EdgeExclusion {
screen: root.screen
anchorRight: true

View File

@@ -28,9 +28,7 @@ PanelWindow {
FrameBorder {
anchors.fill: parent
barEdges: {
SettingsData.barConfigs; // force re-eval when bar configs change
return SettingsData.getActiveBarEdgesForScreen(win.screen);
}
visible: SettingsData.frameEnabled
barEdges: { SettingsData.barConfigs; return SettingsData.getActiveBarEdgesForScreen(win.screen); }
}
}

View File

@@ -1036,6 +1036,8 @@ Item {
SettingsSliderRow {
id: barTransparencySlider
enabled: !SettingsData.frameEnabled
opacity: SettingsData.frameEnabled ? 0.5 : 1.0
text: I18n.tr("Bar Transparency")
value: (selectedBarConfig?.transparency ?? 1.0) * 100
minimum: 0
@@ -1077,6 +1079,35 @@ Item {
restoreMode: Binding.RestoreBinding
}
}
Item {
visible: SettingsData.frameEnabled
width: parent.width
implicitHeight: transparencyFrameNote.implicitHeight + Theme.spacingS * 2
Row {
id: transparencyFrameNote
x: Theme.spacingM
width: parent.width - Theme.spacingM * 2
anchors.verticalCenter: parent.verticalCenter
spacing: Theme.spacingS
DankIcon {
name: "frame_source"
size: Theme.fontSizeMedium
color: Theme.primary
anchors.verticalCenter: parent.verticalCenter
}
StyledText {
text: I18n.tr("Opacity is controlled by Frame Border Opacity in Frame settings")
font.pixelSize: Theme.fontSizeSmall
color: Theme.surfaceVariantText
wrapMode: Text.WordWrap
width: parent.width - Theme.fontSizeMedium - Theme.spacingS
}
}
}
}
SettingsCard {
@@ -1330,8 +1361,6 @@ Item {
SettingsToggleRow {
text: I18n.tr("No Background")
enabled: !SettingsData.frameEnabled
opacity: SettingsData.frameEnabled ? 0.5 : 1.0
checked: selectedBarConfig?.noBackground ?? false
onToggled: checked => SettingsData.updateBarConfig(selectedBarId, {
noBackground: checked

View File

@@ -60,7 +60,7 @@ Item {
minimum: 0
maximum: 100
step: 1
defaultValue: 24
defaultValue: 23
value: SettingsData.frameRounding
onSliderDragFinished: v => SettingsData.set("frameRounding", v)
@@ -80,7 +80,7 @@ Item {
minimum: 2
maximum: 100
step: 1
defaultValue: 15
defaultValue: 16
value: SettingsData.frameThickness
onSliderDragFinished: v => SettingsData.set("frameThickness", v)
@@ -101,7 +101,7 @@ Item {
minimum: 24
maximum: 100
step: 1
defaultValue: 48
defaultValue: 42
value: SettingsData.frameBarThickness
onSliderDragFinished: v => SettingsData.set("frameBarThickness", v)
@@ -116,7 +116,7 @@ Item {
id: opacitySlider
settingKey: "frameOpacity"
tags: ["frame", "border", "opacity", "transparency"]
text: I18n.tr("Border opacity")
text: I18n.tr("Frame Opacity")
unit: "%"
minimum: 0
maximum: 100