bar-shell: prevent bar crash on rapid visibility toggle and convert IPCService to singleton

This commit is contained in:
Lemmy
2026-02-12 08:54:32 -05:00
parent 83e9666e8e
commit 81d0a034c8
7 changed files with 112 additions and 16 deletions
+43
View File
@@ -86,6 +86,49 @@ Singleton {
return state ? state.hovered : false;
}
// Toggle bar visibility. In auto-hide mode, toggles the auto-hide state
// on all screens instead of setting the global isVisible flag.
function toggleVisibility() {
if (Settings.data.bar.displayMode === "auto_hide") {
// Check if any screen is currently visible (not hidden)
var anyVisible = false;
for (var screenName in screenAutoHideState) {
if (!screenAutoHideState[screenName].hidden) {
anyVisible = true;
break;
}
}
// Toggle all screens
for (var screenName in screenAutoHideState) {
setScreenHidden(screenName, anyVisible);
}
} else {
isVisible = !isVisible;
}
}
// Show bar. In auto-hide mode, un-hides on all screens.
function show() {
if (Settings.data.bar.displayMode === "auto_hide") {
for (var screenName in screenAutoHideState) {
setScreenHidden(screenName, false);
}
} else {
isVisible = true;
}
}
// Hide bar. In auto-hide mode, hides on all screens.
function hide() {
if (Settings.data.bar.displayMode === "auto_hide") {
for (var screenName in screenAutoHideState) {
setScreenHidden(screenName, true);
}
} else {
isVisible = false;
}
}
Component.onCompleted: {
Logger.i("BarService", "Service started");
}