diff options
-rw-r--r-- | include/sway/tree/container.h | 4 | ||||
-rw-r--r-- | sway/commands/swap.c | 4 | ||||
-rw-r--r-- | sway/input/seat.c | 2 | ||||
-rw-r--r-- | sway/tree/container.c | 6 | ||||
-rw-r--r-- | sway/tree/layout.c | 8 | ||||
-rw-r--r-- | swaymsg/main.c | 21 |
6 files changed, 29 insertions, 16 deletions
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h index a5f591ce..bb6c04a6 100644 --- a/include/sway/tree/container.h +++ b/include/sway/tree/container.h @@ -186,8 +186,8 @@ void container_for_each_descendant_dfs(struct sway_container *container, /** * Returns true if the given container is an ancestor of this container. */ -bool container_has_anscestor(struct sway_container *container, - struct sway_container *anscestor); +bool container_has_ancestor(struct sway_container *container, + struct sway_container *ancestor); /** * Returns true if the given container is a child descendant of this container. diff --git a/sway/commands/swap.c b/sway/commands/swap.c index e925ad33..e8dfc57f 100644 --- a/sway/commands/swap.c +++ b/sway/commands/swap.c @@ -60,8 +60,8 @@ struct cmd_results *cmd_swap(int argc, char **argv) { } else if (current->type < C_CONTAINER || other->type < C_CONTAINER) { error = cmd_results_new(CMD_FAILURE, "swap", "Can only swap with containers and views"); - } else if (container_has_anscestor(current, other) - || container_has_anscestor(other, current)) { + } else if (container_has_ancestor(current, other) + || container_has_ancestor(other, current)) { error = cmd_results_new(CMD_FAILURE, "swap", "Cannot swap ancestor and descendant"); } else if (current->layout == L_FLOATING || other->layout == L_FLOATING) { diff --git a/sway/input/seat.c b/sway/input/seat.c index 6cfbe8d4..0295212c 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -542,7 +542,7 @@ void seat_set_focus_warp(struct sway_seat *seat, return; } - // put all the anscestors of this container on top of the focus stack + // put all the ancestors of this container on top of the focus stack struct sway_seat_container *parent = seat_container_from_container(seat, container->parent); while (parent) { diff --git a/sway/tree/container.c b/sway/tree/container.c index a4798c7e..59137d88 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -656,11 +656,11 @@ void container_for_each_descendant_bfs(struct sway_container *con, } } -bool container_has_anscestor(struct sway_container *descendant, - struct sway_container *anscestor) { +bool container_has_ancestor(struct sway_container *descendant, + struct sway_container *ancestor) { while (descendant->type != C_ROOT) { descendant = descendant->parent; - if (descendant == anscestor) { + if (descendant == ancestor) { return true; } } diff --git a/sway/tree/layout.c b/sway/tree/layout.c index 624d5516..aca9e254 100644 --- a/sway/tree/layout.c +++ b/sway/tree/layout.c @@ -157,7 +157,7 @@ struct sway_container *container_remove_child(struct sway_container *child) { void container_move_to(struct sway_container *container, struct sway_container *destination) { if (container == destination - || container_has_anscestor(container, destination)) { + || container_has_ancestor(container, destination)) { return; } struct sway_container *old_parent = container_remove_child(container); @@ -945,9 +945,9 @@ void container_swap(struct sway_container *con1, struct sway_container *con2) { "Can only swap containers and views")) { return; } - if (!sway_assert(!container_has_anscestor(con1, con2) - && !container_has_anscestor(con2, con1), - "Cannot swap anscestor and descendant")) { + if (!sway_assert(!container_has_ancestor(con1, con2) + && !container_has_ancestor(con2, con1), + "Cannot swap ancestor and descendant")) { return; } if (!sway_assert(con1->layout != L_FLOATING && con2->layout != L_FLOATING, diff --git a/swaymsg/main.c b/swaymsg/main.c index 89af7345..bf56b80d 100644 --- a/swaymsg/main.c +++ b/swaymsg/main.c @@ -19,13 +19,26 @@ void sway_terminate(int exit_code) { exit(exit_code); } +// Iterate results array and return false if any of them failed static bool success(json_object *r, bool fallback) { - json_object *success; - if (!json_object_object_get_ex(r, "success", &success)) { + if (!json_object_is_type(r, json_type_array)) { return fallback; - } else { - return json_object_get_boolean(success); } + size_t results_len = json_object_array_length(r); + if (!results_len) { + return fallback; + } + for (size_t i = 0; i < results_len; ++i) { + json_object *result = json_object_array_get_idx(r, i); + json_object *success; + if (!json_object_object_get_ex(result, "success", &success)) { + return false; + } + if (!json_object_get_boolean(success)) { + return false; + } + } + return true; } static void pretty_print_cmd(json_object *r) { |