Skip to content

Commit 94a3088

Browse files
keybinds: fix some errors not returning a failure (#9416)
1 parent 9228116 commit 94a3088

File tree

1 file changed

+43
-22
lines changed

1 file changed

+43
-22
lines changed

src/managers/KeybindManager.cpp

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1723,7 +1723,7 @@ SDispatchResult CKeybindManager::changeGroupActive(std::string args) {
17231723
// index starts from '1'; '0' means last window
17241724
const int INDEX = std::stoi(args);
17251725
if (INDEX > PWINDOW->getGroupSize())
1726-
return {};
1726+
return {.success = false, .error = "Index too big, there aren't that many windows in this group"};
17271727
if (INDEX == 0)
17281728
PWINDOW->setGroupCurrent(PWINDOW->getGroupTail());
17291729
else
@@ -1986,7 +1986,7 @@ SDispatchResult CKeybindManager::moveCurrentWorkspaceToMonitor(std::string args)
19861986

19871987
SDispatchResult CKeybindManager::moveWorkspaceToMonitor(std::string args) {
19881988
if (!args.contains(' '))
1989-
return {};
1989+
return {.success = false, .error = "Invalid arguments, expected: workspace monitor"};
19901990

19911991
std::string workspace = args.substr(0, args.find_first_of(' '));
19921992
std::string monitor = args.substr(args.find_first_of(' ') + 1);
@@ -2129,13 +2129,16 @@ SDispatchResult CKeybindManager::forceRendererReload(std::string args) {
21292129
SDispatchResult CKeybindManager::resizeActive(std::string args) {
21302130
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow.lock();
21312131

2132-
if (!PLASTWINDOW || PLASTWINDOW->isFullscreen())
2133-
return {};
2132+
if (!PLASTWINDOW)
2133+
return {.success = false, .error = "No window found"};
2134+
2135+
if (PLASTWINDOW->isFullscreen())
2136+
return {.success = false, .error = "Window is fullscreen"};
21342137

21352138
const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative(args, PLASTWINDOW->m_vRealSize->goal());
21362139

21372140
if (SIZ.x < 1 || SIZ.y < 1)
2138-
return {};
2141+
return {.success = false, .error = "Invalid size provided"};
21392142

21402143
g_pLayoutManager->getCurrentLayout()->resizeActiveWindow(SIZ - PLASTWINDOW->m_vRealSize->goal());
21412144

@@ -2148,8 +2151,11 @@ SDispatchResult CKeybindManager::resizeActive(std::string args) {
21482151
SDispatchResult CKeybindManager::moveActive(std::string args) {
21492152
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow.lock();
21502153

2151-
if (!PLASTWINDOW || PLASTWINDOW->isFullscreen())
2152-
return {};
2154+
if (!PLASTWINDOW)
2155+
return {.success = false, .error = "No window found"};
2156+
2157+
if (PLASTWINDOW->isFullscreen())
2158+
return {.success = false, .error = "Window is fullscreen"};
21532159

21542160
const auto POS = g_pCompositor->parseWindowVectorArgsRelative(args, PLASTWINDOW->m_vRealPosition->goal());
21552161

@@ -2171,7 +2177,7 @@ SDispatchResult CKeybindManager::moveWindow(std::string args) {
21712177
}
21722178

21732179
if (PWINDOW->isFullscreen())
2174-
return {};
2180+
return {.success = false, .error = "Window is fullscreen"};
21752181

21762182
const auto POS = g_pCompositor->parseWindowVectorArgsRelative(MOVECMD, PWINDOW->m_vRealPosition->goal());
21772183

@@ -2193,12 +2199,12 @@ SDispatchResult CKeybindManager::resizeWindow(std::string args) {
21932199
}
21942200

21952201
if (PWINDOW->isFullscreen())
2196-
return {};
2202+
return {.success = false, .error = "Window is fullscreen"};
21972203

21982204
const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative(MOVECMD, PWINDOW->m_vRealSize->goal());
21992205

22002206
if (SIZ.x < 1 || SIZ.y < 1)
2201-
return {};
2207+
return {.success = false, .error = "Invalid size provided"};
22022208

22032209
g_pLayoutManager->getCurrentLayout()->resizeActiveWindow(SIZ - PWINDOW->m_vRealSize->goal(), CORNER_NONE, PWINDOW);
22042210

@@ -2244,7 +2250,7 @@ SDispatchResult CKeybindManager::focusWindow(std::string regexp) {
22442250
const auto PWINDOW = g_pCompositor->getWindowByRegex(regexp);
22452251

22462252
if (!PWINDOW)
2247-
return {};
2253+
return {.success = false, .error = "No such window found"};
22482254

22492255
Debug::log(LOG, "Focusing to window name: {}", PWINDOW->m_szTitle);
22502256

@@ -2304,7 +2310,7 @@ SDispatchResult CKeybindManager::tagWindow(std::string args) {
23042310
else if (vars.size() == 2)
23052311
PWINDOW = g_pCompositor->getWindowByRegex(vars[1]);
23062312
else
2307-
return {};
2313+
return {.success = false, .error = "Invalid number of arguments, expected 1 or 2 arguments"};
23082314

23092315
if (PWINDOW && PWINDOW->m_tags.applyTag(vars[0])) {
23102316
PWINDOW->updateDynamicRules();
@@ -2674,7 +2680,10 @@ SDispatchResult CKeybindManager::swapActiveWorkspaces(std::string args) {
26742680
const auto PMON1 = g_pCompositor->getMonitorFromString(MON1);
26752681
const auto PMON2 = g_pCompositor->getMonitorFromString(MON2);
26762682

2677-
if (!PMON1 || !PMON2 || PMON1 == PMON2)
2683+
if (!PMON1 || !PMON2)
2684+
return {.success = false, .error = "No such monitor found"};
2685+
2686+
if (PMON1 == PMON2)
26782687
return {};
26792688

26802689
g_pCompositor->swapActiveWorkspaces(PMON1, PMON2);
@@ -2697,7 +2706,7 @@ SDispatchResult CKeybindManager::pinActive(std::string args) {
26972706
}
26982707

26992708
if (!PWINDOW->m_bIsFloating || PWINDOW->isFullscreen())
2700-
return {};
2709+
return {.success = false, .error = "Window does not qualify to be pinned"};
27012710

27022711
PWINDOW->m_bPinned = !PWINDOW->m_bPinned;
27032712

@@ -2825,8 +2834,11 @@ SDispatchResult CKeybindManager::lockGroups(std::string args) {
28252834
SDispatchResult CKeybindManager::lockActiveGroup(std::string args) {
28262835
const auto PWINDOW = g_pCompositor->m_pLastWindow.lock();
28272836

2828-
if (!PWINDOW || !PWINDOW->m_sGroupData.pNextWindow.lock())
2829-
return {};
2837+
if (!PWINDOW)
2838+
return {.success = false, .error = "No window found"};
2839+
2840+
if (!PWINDOW->m_sGroupData.pNextWindow.lock())
2841+
return {.success = false, .error = "Not a group"};
28302842

28312843
const auto PHEAD = PWINDOW->getGroupHead();
28322844

@@ -2947,7 +2959,7 @@ SDispatchResult CKeybindManager::moveOutOfGroup(std::string args) {
29472959
static auto PIGNOREGROUPLOCK = CConfigValue<Hyprlang::INT>("binds:ignore_group_lock");
29482960

29492961
if (!*PIGNOREGROUPLOCK && g_pKeybindManager->m_bGroupsLocked)
2950-
return {};
2962+
return {.success = false, .error = "Groups locked"};
29512963

29522964
PHLWINDOW PWINDOW = nullptr;
29532965

@@ -2956,8 +2968,11 @@ SDispatchResult CKeybindManager::moveOutOfGroup(std::string args) {
29562968
else
29572969
PWINDOW = g_pCompositor->m_pLastWindow.lock();
29582970

2959-
if (!PWINDOW || !PWINDOW->m_sGroupData.pNextWindow.lock())
2960-
return {};
2971+
if (!PWINDOW)
2972+
return {.success = false, .error = "No window found"};
2973+
2974+
if (!PWINDOW->m_sGroupData.pNextWindow.lock())
2975+
return {.success = false, .error = "Window not in a group"};
29612976

29622977
moveWindowOutOfGroup(PWINDOW);
29632978

@@ -2975,7 +2990,10 @@ SDispatchResult CKeybindManager::moveWindowOrGroup(std::string args) {
29752990
}
29762991

29772992
const auto PWINDOW = g_pCompositor->m_pLastWindow.lock();
2978-
if (!PWINDOW || PWINDOW->isFullscreen())
2993+
if (!PWINDOW)
2994+
return {.success = false, .error = "No window found"};
2995+
2996+
if (PWINDOW->isFullscreen())
29792997
return {};
29802998

29812999
if (!*PIGNOREGROUPLOCK && g_pKeybindManager->m_bGroupsLocked) {
@@ -3064,8 +3082,11 @@ SDispatchResult CKeybindManager::moveGroupWindow(std::string args) {
30643082

30653083
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow.lock();
30663084

3067-
if (!PLASTWINDOW || !PLASTWINDOW->m_sGroupData.pNextWindow.lock())
3068-
return {};
3085+
if (!PLASTWINDOW)
3086+
return {.success = false, .error = "No window found"};
3087+
3088+
if (!PLASTWINDOW->m_sGroupData.pNextWindow.lock())
3089+
return {.success = false, .error = "Window not in a group"};
30693090

30703091
if ((!BACK && PLASTWINDOW->m_sGroupData.pNextWindow->m_sGroupData.head) || (BACK && PLASTWINDOW->m_sGroupData.head)) {
30713092
std::swap(PLASTWINDOW->m_sGroupData.head, PLASTWINDOW->m_sGroupData.pNextWindow->m_sGroupData.head);

0 commit comments

Comments
 (0)