aboutsummaryrefslogtreecommitdiff
path: root/sway/commands
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-05-04 08:41:16 -0400
committerRyan Dwyer <ryandwyer1@gmail.com>2018-06-01 23:14:58 +1000
commit1132efe42e8086216c7bab6b405d09a22231dde5 (patch)
tree918a682faf3dd5f53fda799bcd3e12d2b0123840 /sway/commands
parent71db8de4be53fc9ec2fab5ed89dd2646468fa15f (diff)
downloadsway-1132efe42e8086216c7bab6b405d09a22231dde5.tar.xz
Send frame done to floating views
Also centers them on the screen when initially floated In the future we'll need a more sophisticated solution than that
Diffstat (limited to 'sway/commands')
-rw-r--r--sway/commands/floating.c13
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) {