mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-05-13 07:42:46 -04:00
feat(bar/dock): add 'Hide When Fullscreen' opt-out toggles (#2349)
Adds per-bar 'fullscreenDetection' and global 'dockHideOnFullscreen' settings to gate CompositorService.hasFullscreenToplevelOnScreen()
This commit is contained in:
@@ -589,6 +589,7 @@ Singleton {
|
|||||||
property bool showDock: false
|
property bool showDock: false
|
||||||
property bool dockAutoHide: false
|
property bool dockAutoHide: false
|
||||||
property bool dockSmartAutoHide: false
|
property bool dockSmartAutoHide: false
|
||||||
|
property bool dockHideOnFullscreen: true
|
||||||
property bool dockGroupByApp: false
|
property bool dockGroupByApp: false
|
||||||
property bool dockRestoreSpecialWorkspaceOnClick: false
|
property bool dockRestoreSpecialWorkspaceOnClick: false
|
||||||
property bool dockOpenOnOverview: false
|
property bool dockOpenOnOverview: false
|
||||||
|
|||||||
@@ -329,6 +329,7 @@ var SPEC = {
|
|||||||
showDock: { def: false },
|
showDock: { def: false },
|
||||||
dockAutoHide: { def: false },
|
dockAutoHide: { def: false },
|
||||||
dockSmartAutoHide: { def: false },
|
dockSmartAutoHide: { def: false },
|
||||||
|
dockHideOnFullscreen: { def: true },
|
||||||
dockGroupByApp: { def: false },
|
dockGroupByApp: { def: false },
|
||||||
dockRestoreSpecialWorkspaceOnClick: { def: false },
|
dockRestoreSpecialWorkspaceOnClick: { def: false },
|
||||||
dockOpenOnOverview: { def: false },
|
dockOpenOnOverview: { def: false },
|
||||||
@@ -491,6 +492,7 @@ var SPEC = {
|
|||||||
popupGapsAuto: true,
|
popupGapsAuto: true,
|
||||||
popupGapsManual: 4,
|
popupGapsManual: 4,
|
||||||
maximizeDetection: true,
|
maximizeDetection: true,
|
||||||
|
fullscreenDetection: true,
|
||||||
scrollEnabled: true,
|
scrollEnabled: true,
|
||||||
scrollXBehavior: "column",
|
scrollXBehavior: "column",
|
||||||
scrollYBehavior: "workspace",
|
scrollYBehavior: "workspace",
|
||||||
|
|||||||
@@ -310,6 +310,10 @@ PanelWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _updateHasFullscreenToplevel() {
|
function _updateHasFullscreenToplevel() {
|
||||||
|
if (!(barConfig?.fullscreenDetection ?? true)) {
|
||||||
|
hasFullscreenToplevel = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
hasFullscreenToplevel = CompositorService.hasFullscreenToplevelOnScreen(screenName);
|
hasFullscreenToplevel = CompositorService.hasFullscreenToplevelOnScreen(screenName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -593,6 +597,7 @@ PanelWindow {
|
|||||||
barWindow.updateGpuTempConfig();
|
barWindow.updateGpuTempConfig();
|
||||||
barWindow._updateBackgroundAlpha();
|
barWindow._updateBackgroundAlpha();
|
||||||
barWindow._updateHasMaximizedToplevel();
|
barWindow._updateHasMaximizedToplevel();
|
||||||
|
barWindow._updateHasFullscreenToplevel();
|
||||||
barWindow._updateShouldHideForWindows();
|
barWindow._updateShouldHideForWindows();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -164,6 +164,8 @@ Variants {
|
|||||||
|
|
||||||
readonly property string _dockScreenName: dock.modelData ? dock.modelData.name : (dock.screen ? dock.screen.name : "")
|
readonly property string _dockScreenName: dock.modelData ? dock.modelData.name : (dock.screen ? dock.screen.name : "")
|
||||||
readonly property bool hasFullscreenToplevel: {
|
readonly property bool hasFullscreenToplevel: {
|
||||||
|
if (!SettingsData.dockHideOnFullscreen)
|
||||||
|
return false;
|
||||||
CompositorService.sortedToplevels;
|
CompositorService.sortedToplevels;
|
||||||
ToplevelManager.activeToplevel;
|
ToplevelManager.activeToplevel;
|
||||||
if (CompositorService.isNiri) {
|
if (CompositorService.isNiri) {
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ Item {
|
|||||||
popupGapsAuto: defaultBar.popupGapsAuto ?? true,
|
popupGapsAuto: defaultBar.popupGapsAuto ?? true,
|
||||||
popupGapsManual: defaultBar.popupGapsManual ?? 4,
|
popupGapsManual: defaultBar.popupGapsManual ?? 4,
|
||||||
maximizeDetection: defaultBar.maximizeDetection ?? true,
|
maximizeDetection: defaultBar.maximizeDetection ?? true,
|
||||||
|
fullscreenDetection: defaultBar.fullscreenDetection ?? true,
|
||||||
scrollEnabled: defaultBar.scrollEnabled ?? true,
|
scrollEnabled: defaultBar.scrollEnabled ?? true,
|
||||||
scrollXBehavior: defaultBar.scrollXBehavior ?? "column",
|
scrollXBehavior: defaultBar.scrollXBehavior ?? "column",
|
||||||
scrollYBehavior: defaultBar.scrollYBehavior ?? "workspace",
|
scrollYBehavior: defaultBar.scrollYBehavior ?? "workspace",
|
||||||
@@ -706,6 +707,24 @@ Item {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: 1
|
||||||
|
color: Theme.outline
|
||||||
|
opacity: 0.15
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsToggleRow {
|
||||||
|
text: I18n.tr("Hide When Fullscreen", "bar visibility toggle: hide the bar when a window is fullscreen")
|
||||||
|
checked: selectedBarConfig?.fullscreenDetection ?? true
|
||||||
|
onToggled: toggled => {
|
||||||
|
SettingsData.updateBarConfig(selectedBarId, {
|
||||||
|
fullscreenDetection: toggled
|
||||||
|
});
|
||||||
|
notifyHorizontalBarChange();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingsControlledByFrame {
|
SettingsControlledByFrame {
|
||||||
|
|||||||
@@ -87,6 +87,16 @@ Item {
|
|||||||
visible: CompositorService.isNiri
|
visible: CompositorService.isNiri
|
||||||
onToggled: checked => SettingsData.set("dockOpenOnOverview", checked)
|
onToggled: checked => SettingsData.set("dockOpenOnOverview", checked)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SettingsToggleRow {
|
||||||
|
settingKey: "dockHideOnFullscreen"
|
||||||
|
tags: ["dock", "fullscreen", "hide"]
|
||||||
|
text: I18n.tr("Hide When Fullscreen", "dock visibility toggle: hide the dock when a window is fullscreen")
|
||||||
|
description: I18n.tr("Hide the dock when a window is fullscreen", "dock visibility toggle description")
|
||||||
|
checked: SettingsData.dockHideOnFullscreen
|
||||||
|
visible: SettingsData.showDock
|
||||||
|
onToggled: checked => SettingsData.set("dockHideOnFullscreen", checked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingsCard {
|
SettingsCard {
|
||||||
|
|||||||
Reference in New Issue
Block a user