mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-13 09:12:08 -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 string screenName: modelData.name
|
||||||
|
|
||||||
property bool hasMaximizedToplevel: false
|
property bool hasMaximizedToplevel: false
|
||||||
|
property bool hasFullscreenToplevel: false
|
||||||
property bool shouldHideForWindows: false
|
property bool shouldHideForWindows: false
|
||||||
|
|
||||||
function _updateHasMaximizedToplevel() {
|
function _updateHasMaximizedToplevel() {
|
||||||
@@ -179,6 +180,22 @@ PanelWindow {
|
|||||||
hasMaximizedToplevel = false;
|
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() {
|
function _updateShouldHideForWindows() {
|
||||||
if (!(barConfig?.showOnWindowsOpen ?? false)) {
|
if (!(barConfig?.showOnWindowsOpen ?? false)) {
|
||||||
shouldHideForWindows = false;
|
shouldHideForWindows = false;
|
||||||
@@ -485,6 +502,7 @@ PanelWindow {
|
|||||||
target: CompositorService
|
target: CompositorService
|
||||||
function onToplevelsChanged() {
|
function onToplevelsChanged() {
|
||||||
barWindow._updateHasMaximizedToplevel();
|
barWindow._updateHasMaximizedToplevel();
|
||||||
|
barWindow._updateHasFullscreenToplevel();
|
||||||
barWindow._updateShouldHideForWindows();
|
barWindow._updateShouldHideForWindows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -493,6 +511,7 @@ PanelWindow {
|
|||||||
target: NiriService
|
target: NiriService
|
||||||
function onAllWorkspacesChanged() {
|
function onAllWorkspacesChanged() {
|
||||||
barWindow._updateHasMaximizedToplevel();
|
barWindow._updateHasMaximizedToplevel();
|
||||||
|
barWindow._updateHasFullscreenToplevel();
|
||||||
barWindow._updateShouldHideForWindows();
|
barWindow._updateShouldHideForWindows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -668,6 +687,9 @@ PanelWindow {
|
|||||||
if (inOverviewWithShow)
|
if (inOverviewWithShow)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (barWindow.hasFullscreenToplevel)
|
||||||
|
return false;
|
||||||
|
|
||||||
const showOnWindowsSetting = barConfig?.showOnWindowsOpen ?? false;
|
const showOnWindowsSetting = barConfig?.showOnWindowsOpen ?? false;
|
||||||
if (showOnWindowsSetting && autoHide && (CompositorService.isNiri || CompositorService.isHyprland)) {
|
if (showOnWindowsSetting && autoHide && (CompositorService.isNiri || CompositorService.isHyprland)) {
|
||||||
if (barWindow.shouldHideForWindows)
|
if (barWindow.shouldHideForWindows)
|
||||||
|
|||||||
Reference in New Issue
Block a user