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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user