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

feat: add FullscreenToplevel detection (#2069)

* feat: add FullscreenToplevel detection

For animating bar for fullscreen events

* fix: respect overview reveal settings

perform the overview check first
This commit is contained in:
Kangheng Liu
2026-03-24 09:21:38 -04:00
committed by GitHub
parent 59b6d2237b
commit 9b44bc3259

View File

@@ -157,6 +157,7 @@ PanelWindow {
property string screenName: modelData.name
property bool hasMaximizedToplevel: false
property bool hasFullscreenToplevel: false
property bool shouldHideForWindows: false
function _updateHasMaximizedToplevel() {
@@ -179,6 +180,22 @@ PanelWindow {
hasMaximizedToplevel = false;
}
function _updateHasFullscreenToplevel() {
if (!CompositorService.isHyprland && !CompositorService.isNiri) {
hasFullscreenToplevel = false;
return;
}
const filtered = CompositorService.filterCurrentWorkspace(CompositorService.sortedToplevels, screenName);
for (let i = 0; i < filtered.length; i++) {
if (filtered[i]?.fullscreen) {
hasFullscreenToplevel = true;
return;
}
}
hasFullscreenToplevel = false;
}
function _updateShouldHideForWindows() {
if (!(barConfig?.showOnWindowsOpen ?? false)) {
shouldHideForWindows = false;
@@ -485,6 +502,7 @@ PanelWindow {
target: CompositorService
function onToplevelsChanged() {
barWindow._updateHasMaximizedToplevel();
barWindow._updateHasFullscreenToplevel();
barWindow._updateShouldHideForWindows();
}
}
@@ -493,6 +511,7 @@ PanelWindow {
target: NiriService
function onAllWorkspacesChanged() {
barWindow._updateHasMaximizedToplevel();
barWindow._updateHasFullscreenToplevel();
barWindow._updateShouldHideForWindows();
}
}
@@ -668,6 +687,9 @@ PanelWindow {
if (inOverviewWithShow)
return true;
if (barWindow.hasFullscreenToplevel)
return false;
const showOnWindowsSetting = barConfig?.showOnWindowsOpen ?? false;
if (showOnWindowsSetting && autoHide && (CompositorService.isNiri || CompositorService.isHyprland)) {
if (barWindow.shouldHideForWindows)