diff options
Diffstat (limited to 'sway/commands')
-rw-r--r-- | sway/commands/floating.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sway/commands/floating.c b/sway/commands/floating.c index 8432b0dc..9e0be9d0 100644 --- a/sway/commands/floating.c +++ b/sway/commands/floating.c @@ -3,9 +3,11 @@ #include "sway/commands.h" #include "sway/input/seat.h" #include "sway/ipc-server.h" +#include "sway/output.h" #include "sway/tree/arrange.h" #include "sway/tree/container.h" #include "sway/tree/layout.h" +#include "sway/tree/view.h" #include "list.h" struct cmd_results *cmd_floating(int argc, char **argv) { @@ -38,6 +40,17 @@ struct cmd_results *cmd_floating(int argc, char **argv) { container, C_WORKSPACE); container_remove_child(container); container_add_floating(workspace, container); + + struct sway_output *output = workspace->parent->sway_output; + output_damage_whole_container(output, container); + // Reset to sane size and position + container->width = 640; + container->height = 480; + container->x = workspace->width / 2 - container->width / 2; + container->y = workspace->height / 2 - container->height / 2; + view_autoconfigure(container->sway_view); + output_damage_whole_container(output, container); + seat_set_focus(config->handler_context.seat, container); arrange_workspace(workspace); } else if (container->is_floating && !wants_floating) { |