From 1132efe42e8086216c7bab6b405d09a22231dde5 Mon Sep 17 00:00:00 2001
From: Drew DeVault <sir@cmpwn.com>
Date: Fri, 4 May 2018 08:41:16 -0400
Subject: 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
---
 include/sway/tree/container.h |  1 -
 sway/commands/floating.c      | 13 +++++++++++++
 sway/debug-tree.c             |  2 --
 sway/ipc-json.c               |  2 --
 4 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h
index fa2f9286..a4ffd25b 100644
--- a/include/sway/tree/container.h
+++ b/include/sway/tree/container.h
@@ -40,7 +40,6 @@ enum sway_container_layout {
 	L_VERT,
 	L_STACKED,
 	L_TABBED,
-	L_FLOATING,
 };
 
 enum sway_container_border {
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) {
diff --git a/sway/debug-tree.c b/sway/debug-tree.c
index ae0a1869..5af5b565 100644
--- a/sway/debug-tree.c
+++ b/sway/debug-tree.c
@@ -22,8 +22,6 @@ static const char *layout_to_str(enum sway_container_layout layout) {
 		return "L_STACKED";
 	case L_TABBED:
 		return "L_TABBED";
-	case L_FLOATING:
-		return "L_FLOATING";
 	case L_NONE:
 	default:
 		return "L_NONE";
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 03582950..da4bef60 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -21,8 +21,6 @@ static const char *ipc_json_layout_description(enum sway_container_layout l) {
 		return "tabbed";
 	case L_STACKED:
 		return "stacked";
-	case L_FLOATING:
-		return "floating";
 	case L_NONE:
 		break;
 	}
-- 
cgit v1.2.3