diff options
author | lbonn <bonnans.l@gmail.com> | 2019-08-20 00:01:17 +0200 |
---|---|---|
committer | Brian Ashworth <bosrsf04@gmail.com> | 2019-08-20 13:09:52 -0400 |
commit | 7baa3ffece882cc1fa1b5281dcf85575a429e820 (patch) | |
tree | 2fad9e6ba119f4d11e8ccdd906c2abd96f723bd6 | |
parent | ff7d979d99ddb087a02fc457953b33e3beb4715b (diff) |
Allow moving a container hidden in scratchpad
(as i3 allows it)
Just update the container's coordinates so that they will be applied at
the next show.
-rw-r--r-- | sway/commands/move.c | 21 | ||||
-rw-r--r-- | sway/tree/container.c | 3 |
2 files changed, 14 insertions, 10 deletions
diff --git a/sway/commands/move.c b/sway/commands/move.c index 5779b431..99215ffc 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c @@ -675,10 +675,6 @@ static struct cmd_results *cmd_move_in_direction( return cmd_results_new(CMD_FAILURE, "Cannot move workspaces in a direction"); } - if (container_is_scratchpad_hidden(container)) { - return cmd_results_new(CMD_FAILURE, - "Cannot move a hidden scratchpad container"); - } if (container_is_floating(container)) { if (container->fullscreen_mode) { return cmd_results_new(CMD_FAILURE, @@ -750,10 +746,6 @@ static struct cmd_results *cmd_move_to_position(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "Only floating containers " "can be moved to an absolute position"); } - if (container_is_scratchpad_hidden(container)) { - return cmd_results_new(CMD_FAILURE, - "Cannot move a hidden scratchpad container"); - } if (!argc) { return cmd_results_new(CMD_INVALID, expected_position_syntax); @@ -795,6 +787,10 @@ static struct cmd_results *cmd_move_to_position(int argc, char **argv) { ly = root->y + (root->height - container->height) / 2; } else { struct sway_workspace *ws = container->workspace; + if (!ws) { + struct sway_seat *seat = config->handler_context.seat; + ws = seat_get_focused_workspace(seat); + } lx = ws->x + (ws->width - container->width) / 2; ly = ws->y + (ws->height - container->height) / 2; } @@ -828,8 +824,13 @@ static struct cmd_results *cmd_move_to_position(int argc, char **argv) { } if (!absolute) { - lx += container->workspace->x; - ly += container->workspace->y; + struct sway_workspace *ws = container->workspace; + if (!ws) { + struct sway_seat *seat = config->handler_context.seat; + ws = seat_get_focused_workspace(seat); + } + lx += ws->x; + ly += ws->y; } container_floating_move_to(container, lx, ly); return cmd_results_new(CMD_SUCCESS, NULL); diff --git a/sway/tree/container.c b/sway/tree/container.c index 6620921f..b89047a7 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -880,6 +880,9 @@ void container_floating_move_to(struct sway_container *con, return; } container_floating_translate(con, lx - con->x, ly - con->y); + if (container_is_scratchpad_hidden(con)) { + return; + } struct sway_workspace *old_workspace = con->workspace; struct sway_output *new_output = container_floating_find_output(con); if (!sway_assert(new_output, "Unable to find any output")) { |