From f6e65b6bb235cd77329e961e180e2236312ebacc Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sun, 9 Aug 2015 23:04:37 -0400 Subject: Don't override keys if command fails --- sway/commands.c | 8 ++++---- sway/handlers.c | 3 +-- sway/movement.c | 6 +++--- sway/movement.h | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/sway/commands.c b/sway/commands.c index 9ce1d83e..40d9d353 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -104,13 +104,13 @@ int cmd_focus(struct sway_config *config, int argc, char **argv) { return 1; } if (strcasecmp(argv[0], "left") == 0) { - move_focus(MOVE_LEFT); + return move_focus(MOVE_LEFT); } else if (strcasecmp(argv[0], "right") == 0) { - move_focus(MOVE_RIGHT); + return move_focus(MOVE_RIGHT); } else if (strcasecmp(argv[0], "up") == 0) { - move_focus(MOVE_UP); + return move_focus(MOVE_UP); } else if (strcasecmp(argv[0], "down") == 0) { - move_focus(MOVE_DOWN); + return move_focus(MOVE_DOWN); } else if (strcasecmp(argv[0], "parent") == 0) { swayc_t *current = get_focused_container(&root_container); if (current && current->parent) { diff --git a/sway/handlers.c b/sway/handlers.c index 7d45452f..b3f03d07 100644 --- a/sway/handlers.c +++ b/sway/handlers.c @@ -74,8 +74,7 @@ bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifiers } if (match) { - ret = false; - handle_command(config, binding->command); + ret = handle_command(config, binding->command) == 0; } } } diff --git a/sway/movement.c b/sway/movement.c index 197df7b2..108e2588 100644 --- a/sway/movement.c +++ b/sway/movement.c @@ -5,7 +5,7 @@ #include "layout.h" #include "movement.h" -void move_focus(enum movement_direction direction) { +int move_focus(enum movement_direction direction) { swayc_t *current = get_focused_container(&root_container); swayc_t *parent = current->parent; @@ -42,7 +42,7 @@ void move_focus(enum movement_direction direction) { } else { unfocus_all(&root_container); focus_view(parent->children->items[desired]); - return; + return 0; } } if (!can_move) { @@ -51,7 +51,7 @@ void move_focus(enum movement_direction direction) { parent = parent->parent; if (parent->type == C_ROOT) { // Nothing we can do - return; + return 1; } } } diff --git a/sway/movement.h b/sway/movement.h index c88b44bd..44e630ff 100644 --- a/sway/movement.h +++ b/sway/movement.h @@ -11,6 +11,6 @@ enum movement_direction{ MOVE_DOWN }; -void move_focus(enum movement_direction direction); +int move_focus(enum movement_direction direction); #endif -- cgit v1.2.3