keybinds: fix some errors not returning a failure (#9416)

This commit is contained in:
andrewandreii
2025-02-15 21:04:02 +02:00
committed by GitHub
parent 9228116c9a
commit 94a30889a7

View File

@@ -1723,7 +1723,7 @@ SDispatchResult CKeybindManager::changeGroupActive(std::string args) {
// index starts from '1'; '0' means last window
const int INDEX = std::stoi(args);
if (INDEX > PWINDOW->getGroupSize())
return {};
return {.success = false, .error = "Index too big, there aren't that many windows in this group"};
if (INDEX == 0)
PWINDOW->setGroupCurrent(PWINDOW->getGroupTail());
else
@@ -1986,7 +1986,7 @@ SDispatchResult CKeybindManager::moveCurrentWorkspaceToMonitor(std::string args)
SDispatchResult CKeybindManager::moveWorkspaceToMonitor(std::string args) {
if (!args.contains(' '))
return {};
return {.success = false, .error = "Invalid arguments, expected: workspace monitor"};
std::string workspace = args.substr(0, args.find_first_of(' '));
std::string monitor = args.substr(args.find_first_of(' ') + 1);
@@ -2129,13 +2129,16 @@ SDispatchResult CKeybindManager::forceRendererReload(std::string args) {
SDispatchResult CKeybindManager::resizeActive(std::string args) {
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow.lock();
if (!PLASTWINDOW || PLASTWINDOW->isFullscreen())
return {};
if (!PLASTWINDOW)
return {.success = false, .error = "No window found"};
if (PLASTWINDOW->isFullscreen())
return {.success = false, .error = "Window is fullscreen"};
const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative(args, PLASTWINDOW->m_vRealSize->goal());
if (SIZ.x < 1 || SIZ.y < 1)
return {};
return {.success = false, .error = "Invalid size provided"};
g_pLayoutManager->getCurrentLayout()->resizeActiveWindow(SIZ - PLASTWINDOW->m_vRealSize->goal());
@@ -2148,8 +2151,11 @@ SDispatchResult CKeybindManager::resizeActive(std::string args) {
SDispatchResult CKeybindManager::moveActive(std::string args) {
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow.lock();
if (!PLASTWINDOW || PLASTWINDOW->isFullscreen())
return {};
if (!PLASTWINDOW)
return {.success = false, .error = "No window found"};
if (PLASTWINDOW->isFullscreen())
return {.success = false, .error = "Window is fullscreen"};
const auto POS = g_pCompositor->parseWindowVectorArgsRelative(args, PLASTWINDOW->m_vRealPosition->goal());
@@ -2171,7 +2177,7 @@ SDispatchResult CKeybindManager::moveWindow(std::string args) {
}
if (PWINDOW->isFullscreen())
return {};
return {.success = false, .error = "Window is fullscreen"};
const auto POS = g_pCompositor->parseWindowVectorArgsRelative(MOVECMD, PWINDOW->m_vRealPosition->goal());
@@ -2193,12 +2199,12 @@ SDispatchResult CKeybindManager::resizeWindow(std::string args) {
}
if (PWINDOW->isFullscreen())
return {};
return {.success = false, .error = "Window is fullscreen"};
const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative(MOVECMD, PWINDOW->m_vRealSize->goal());
if (SIZ.x < 1 || SIZ.y < 1)
return {};
return {.success = false, .error = "Invalid size provided"};
g_pLayoutManager->getCurrentLayout()->resizeActiveWindow(SIZ - PWINDOW->m_vRealSize->goal(), CORNER_NONE, PWINDOW);
@@ -2244,7 +2250,7 @@ SDispatchResult CKeybindManager::focusWindow(std::string regexp) {
const auto PWINDOW = g_pCompositor->getWindowByRegex(regexp);
if (!PWINDOW)
return {};
return {.success = false, .error = "No such window found"};
Debug::log(LOG, "Focusing to window name: {}", PWINDOW->m_szTitle);
@@ -2304,7 +2310,7 @@ SDispatchResult CKeybindManager::tagWindow(std::string args) {
else if (vars.size() == 2)
PWINDOW = g_pCompositor->getWindowByRegex(vars[1]);
else
return {};
return {.success = false, .error = "Invalid number of arguments, expected 1 or 2 arguments"};
if (PWINDOW && PWINDOW->m_tags.applyTag(vars[0])) {
PWINDOW->updateDynamicRules();
@@ -2674,7 +2680,10 @@ SDispatchResult CKeybindManager::swapActiveWorkspaces(std::string args) {
const auto PMON1 = g_pCompositor->getMonitorFromString(MON1);
const auto PMON2 = g_pCompositor->getMonitorFromString(MON2);
if (!PMON1 || !PMON2 || PMON1 == PMON2)
if (!PMON1 || !PMON2)
return {.success = false, .error = "No such monitor found"};
if (PMON1 == PMON2)
return {};
g_pCompositor->swapActiveWorkspaces(PMON1, PMON2);
@@ -2697,7 +2706,7 @@ SDispatchResult CKeybindManager::pinActive(std::string args) {
}
if (!PWINDOW->m_bIsFloating || PWINDOW->isFullscreen())
return {};
return {.success = false, .error = "Window does not qualify to be pinned"};
PWINDOW->m_bPinned = !PWINDOW->m_bPinned;
@@ -2825,8 +2834,11 @@ SDispatchResult CKeybindManager::lockGroups(std::string args) {
SDispatchResult CKeybindManager::lockActiveGroup(std::string args) {
const auto PWINDOW = g_pCompositor->m_pLastWindow.lock();
if (!PWINDOW || !PWINDOW->m_sGroupData.pNextWindow.lock())
return {};
if (!PWINDOW)
return {.success = false, .error = "No window found"};
if (!PWINDOW->m_sGroupData.pNextWindow.lock())
return {.success = false, .error = "Not a group"};
const auto PHEAD = PWINDOW->getGroupHead();
@@ -2947,7 +2959,7 @@ SDispatchResult CKeybindManager::moveOutOfGroup(std::string args) {
static auto PIGNOREGROUPLOCK = CConfigValue<Hyprlang::INT>("binds:ignore_group_lock");
if (!*PIGNOREGROUPLOCK && g_pKeybindManager->m_bGroupsLocked)
return {};
return {.success = false, .error = "Groups locked"};
PHLWINDOW PWINDOW = nullptr;
@@ -2956,8 +2968,11 @@ SDispatchResult CKeybindManager::moveOutOfGroup(std::string args) {
else
PWINDOW = g_pCompositor->m_pLastWindow.lock();
if (!PWINDOW || !PWINDOW->m_sGroupData.pNextWindow.lock())
return {};
if (!PWINDOW)
return {.success = false, .error = "No window found"};
if (!PWINDOW->m_sGroupData.pNextWindow.lock())
return {.success = false, .error = "Window not in a group"};
moveWindowOutOfGroup(PWINDOW);
@@ -2975,7 +2990,10 @@ SDispatchResult CKeybindManager::moveWindowOrGroup(std::string args) {
}
const auto PWINDOW = g_pCompositor->m_pLastWindow.lock();
if (!PWINDOW || PWINDOW->isFullscreen())
if (!PWINDOW)
return {.success = false, .error = "No window found"};
if (PWINDOW->isFullscreen())
return {};
if (!*PIGNOREGROUPLOCK && g_pKeybindManager->m_bGroupsLocked) {
@@ -3064,8 +3082,11 @@ SDispatchResult CKeybindManager::moveGroupWindow(std::string args) {
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow.lock();
if (!PLASTWINDOW || !PLASTWINDOW->m_sGroupData.pNextWindow.lock())
return {};
if (!PLASTWINDOW)
return {.success = false, .error = "No window found"};
if (!PLASTWINDOW->m_sGroupData.pNextWindow.lock())
return {.success = false, .error = "Window not in a group"};
if ((!BACK && PLASTWINDOW->m_sGroupData.pNextWindow->m_sGroupData.head) || (BACK && PLASTWINDOW->m_sGroupData.head)) {
std::swap(PLASTWINDOW->m_sGroupData.head, PLASTWINDOW->m_sGroupData.pNextWindow->m_sGroupData.head);