From d356957dadf3ca052845d95774135ced3565711a Mon Sep 17 00:00:00 2001 From: pathmann Date: Sun, 7 Jun 2026 00:28:38 +0200 Subject: [PATCH] fix: ignore keyboard shortcuts of disabled powermenu actions (#2580) * fix: ignore keyboard shortcuts of disabled powermenu actions * fix typo when checking for lock shortcut * ignore shortcuts for hidden powermenu actions in grid navigation * ignore keyboard shortcuts of disabled actions in lock power menu * ignore keyboard shortcuts of disabled actions in lock power menu (list navigation) --- quickshell/Modals/PowerMenuModal.qml | 88 +++++++++++++++-------- quickshell/Modules/Lock/LockPowerMenu.qml | 64 +++++++++++------ 2 files changed, 100 insertions(+), 52 deletions(-) diff --git a/quickshell/Modals/PowerMenuModal.qml b/quickshell/Modals/PowerMenuModal.qml index 781062aa..8a6473a5 100644 --- a/quickshell/Modals/PowerMenuModal.qml +++ b/quickshell/Modals/PowerMenuModal.qml @@ -352,9 +352,11 @@ DankModal { break; case Qt.Key_P: if (!(event.modifiers & Qt.ControlModifier)) { - const idx = visibleActions.indexOf("poweroff"); - startHold("poweroff", idx); - event.accepted = true; + if (visibleActions.includes("poweroff")) { + const idx = visibleActions.indexOf("poweroff"); + startHold("poweroff", idx); + event.accepted = true; + } } else { selectedIndex = (selectedIndex - 1 + visibleActions.length) % visibleActions.length; event.accepted = true; @@ -373,28 +375,40 @@ DankModal { } break; case Qt.Key_R: - startHold("reboot", visibleActions.indexOf("reboot")); - event.accepted = true; + if (visibleActions.includes("reboot")) { + startHold("reboot", visibleActions.indexOf("reboot")); + event.accepted = true; + } break; case Qt.Key_X: - startHold("logout", visibleActions.indexOf("logout")); - event.accepted = true; + if (visibleActions.includes("logout")) { + startHold("logout", visibleActions.indexOf("logout")); + event.accepted = true; + } break; case Qt.Key_L: - startHold("lock", visibleActions.indexOf("lock")); - event.accepted = true; + if (visibleActions.includes("lock")) { + startHold("lock", visibleActions.indexOf("lock")); + event.accepted = true; + } break; case Qt.Key_S: - startHold("suspend", visibleActions.indexOf("suspend")); - event.accepted = true; + if (visibleActions.includes("suspend")) { + startHold("suspend", visibleActions.indexOf("suspend")); + event.accepted = true; + } break; case Qt.Key_H: - startHold("hibernate", visibleActions.indexOf("hibernate")); - event.accepted = true; + if (visibleActions.includes("hibernate")) { + startHold("hibernate", visibleActions.indexOf("hibernate")); + event.accepted = true; + } break; case Qt.Key_D: - startHold("restart", visibleActions.indexOf("restart")); - event.accepted = true; + if (visibleActions.includes("restart")) { + startHold("restart", visibleActions.indexOf("restart")); + event.accepted = true; + } break; } } @@ -445,9 +459,11 @@ DankModal { break; case Qt.Key_P: if (!(event.modifiers & Qt.ControlModifier)) { - const idx = visibleActions.indexOf("poweroff"); - startHold("poweroff", idx); - event.accepted = true; + if (visibleActions.includes("poweroff")) { + const idx = visibleActions.indexOf("poweroff"); + startHold("poweroff", idx); + event.accepted = true; + } } else { selectedCol = (selectedCol - 1 + gridColumns) % gridColumns; selectedIndex = selectedRow * gridColumns + selectedCol; @@ -469,28 +485,40 @@ DankModal { } break; case Qt.Key_R: - startHold("reboot", visibleActions.indexOf("reboot")); - event.accepted = true; + if (visibleActions.includes("reboot")) { + startHold("reboot", visibleActions.indexOf("reboot")); + event.accepted = true; + } break; case Qt.Key_X: - startHold("logout", visibleActions.indexOf("logout")); - event.accepted = true; + if (visibleActions.includes("logout")) { + startHold("logout", visibleActions.indexOf("logout")); + event.accepted = true; + } break; case Qt.Key_L: - startHold("lock", visibleActions.indexOf("lock")); - event.accepted = true; + if (visibleActions.includes("lock")) { + startHold("lock", visibleActions.indexOf("lock")); + event.accepted = true; + } break; case Qt.Key_S: - startHold("suspend", visibleActions.indexOf("suspend")); - event.accepted = true; + if (visibleActions.includes("suspend")) { + startHold("suspend", visibleActions.indexOf("suspend")); + event.accepted = true; + } break; case Qt.Key_H: - startHold("hibernate", visibleActions.indexOf("hibernate")); - event.accepted = true; + if (visibleActions.includes("hibernate")) { + startHold("hibernate", visibleActions.indexOf("hibernate")); + event.accepted = true; + } break; case Qt.Key_D: - startHold("restart", visibleActions.indexOf("restart")); - event.accepted = true; + if (visibleActions.includes("restart")) { + startHold("restart", visibleActions.indexOf("restart")); + event.accepted = true; + } break; } } diff --git a/quickshell/Modules/Lock/LockPowerMenu.qml b/quickshell/Modules/Lock/LockPowerMenu.qml index 4afa56d5..196919cb 100644 --- a/quickshell/Modules/Lock/LockPowerMenu.qml +++ b/quickshell/Modules/Lock/LockPowerMenu.qml @@ -279,9 +279,11 @@ Rectangle { break; case Qt.Key_P: if (!(event.modifiers & Qt.ControlModifier)) { - const idx = visibleActions.indexOf("poweroff"); - startHold("poweroff", idx); - event.accepted = true; + if (visibleActions.includes("poweroff")) { + const idx = visibleActions.indexOf("poweroff"); + startHold("poweroff", idx); + event.accepted = true; + } } else { selectedIndex = (selectedIndex - 1 + visibleActions.length) % visibleActions.length; event.accepted = true; @@ -300,20 +302,28 @@ Rectangle { } break; case Qt.Key_R: - startHold("reboot", visibleActions.indexOf("reboot")); - event.accepted = true; + if (visibleActions.includes("reboot")) { + startHold("reboot", visibleActions.indexOf("reboot")); + event.accepted = true; + } break; case Qt.Key_X: - startHold("logout", visibleActions.indexOf("logout")); - event.accepted = true; + if (visibleActions.includes("logout")) { + startHold("logout", visibleActions.indexOf("logout")); + event.accepted = true; + } break; case Qt.Key_S: - startHold("suspend", visibleActions.indexOf("suspend")); - event.accepted = true; + if (visibleActions.includes("suspend")) { + startHold("suspend", visibleActions.indexOf("suspend")); + event.accepted = true; + } break; case Qt.Key_H: - startHold("hibernate", visibleActions.indexOf("hibernate")); - event.accepted = true; + if (visibleActions.includes("hibernate")) { + startHold("hibernate", visibleActions.indexOf("hibernate")); + event.accepted = true; + } break; } } @@ -364,9 +374,11 @@ Rectangle { break; case Qt.Key_P: if (!(event.modifiers & Qt.ControlModifier)) { - const idx = visibleActions.indexOf("poweroff"); - startHold("poweroff", idx); - event.accepted = true; + if (visibleActions.includes("poweroff")) { + const idx = visibleActions.indexOf("poweroff"); + startHold("poweroff", idx); + event.accepted = true; + } } else { selectedCol = (selectedCol - 1 + gridColumns) % gridColumns; selectedIndex = selectedRow * gridColumns + selectedCol; @@ -388,20 +400,28 @@ Rectangle { } break; case Qt.Key_R: - startHold("reboot", visibleActions.indexOf("reboot")); - event.accepted = true; + if (visibleActions.includes("reboot")) { + startHold("reboot", visibleActions.indexOf("reboot")); + event.accepted = true; + } break; case Qt.Key_X: - startHold("logout", visibleActions.indexOf("logout")); - event.accepted = true; + if (visibleActions.includes("logout")) { + startHold("logout", visibleActions.indexOf("logout")); + event.accepted = true; + } break; case Qt.Key_S: - startHold("suspend", visibleActions.indexOf("suspend")); - event.accepted = true; + if (visibleActions.includes("suspend")) { + startHold("suspend", visibleActions.indexOf("suspend")); + event.accepted = true; + } break; case Qt.Key_H: - startHold("hibernate", visibleActions.indexOf("hibernate")); - event.accepted = true; + if (visibleActions.includes("hibernate")) { + startHold("hibernate", visibleActions.indexOf("hibernate")); + event.accepted = true; + } break; } }