mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
fix(launcher/sessionProvider): executeAction was broken due to panel content being unloaded before the action could run
This commit is contained in:
@@ -153,45 +153,42 @@ Item {
|
|||||||
if (launcher)
|
if (launcher)
|
||||||
launcher.close();
|
launcher.close();
|
||||||
|
|
||||||
|
// Execute via Qt.callLater, but reference only singletons
|
||||||
|
// (root may be destroyed after launcher.close() unloads the panel)
|
||||||
Qt.callLater(() => {
|
Qt.callLater(() => {
|
||||||
executeAction(action);
|
switch (action) {
|
||||||
|
case "lock":
|
||||||
|
if (PanelService.lockScreen && !PanelService.lockScreen.active) {
|
||||||
|
PanelService.lockScreen.active = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "suspend":
|
||||||
|
if (Settings.data.general.lockOnSuspend) {
|
||||||
|
CompositorService.lockAndSuspend();
|
||||||
|
} else {
|
||||||
|
CompositorService.suspend();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "hibernate":
|
||||||
|
CompositorService.hibernate();
|
||||||
|
break;
|
||||||
|
case "reboot":
|
||||||
|
CompositorService.reboot();
|
||||||
|
break;
|
||||||
|
case "rebootToUefi":
|
||||||
|
CompositorService.rebootToUefi();
|
||||||
|
break;
|
||||||
|
case "userspaceReboot":
|
||||||
|
CompositorService.userspaceReboot();
|
||||||
|
break;
|
||||||
|
case "logout":
|
||||||
|
CompositorService.logout();
|
||||||
|
break;
|
||||||
|
case "shutdown":
|
||||||
|
CompositorService.shutdown();
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function executeAction(action) {
|
|
||||||
// Default behavior or custom command handled by CompositorService
|
|
||||||
switch (action) {
|
|
||||||
case "lock":
|
|
||||||
if (PanelService.lockScreen && !PanelService.lockScreen.active) {
|
|
||||||
PanelService.lockScreen.active = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "suspend":
|
|
||||||
if (Settings.data.general.lockOnSuspend) {
|
|
||||||
CompositorService.lockAndSuspend();
|
|
||||||
} else {
|
|
||||||
CompositorService.suspend();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "hibernate":
|
|
||||||
CompositorService.hibernate();
|
|
||||||
break;
|
|
||||||
case "reboot":
|
|
||||||
CompositorService.reboot();
|
|
||||||
break;
|
|
||||||
case "rebootToUefi":
|
|
||||||
CompositorService.rebootToUefi();
|
|
||||||
break;
|
|
||||||
case "userspaceReboot":
|
|
||||||
CompositorService.userspaceReboot();
|
|
||||||
break;
|
|
||||||
case "logout":
|
|
||||||
CompositorService.logout();
|
|
||||||
break;
|
|
||||||
case "shutdown":
|
|
||||||
CompositorService.shutdown();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user