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
This commit is contained in:
Drew DeVault 2018-05-04 08:41:16 -04:00 committed by Ryan Dwyer
parent 71db8de4be
commit 1132efe42e
4 changed files with 13 additions and 5 deletions

View file

@ -40,7 +40,6 @@ enum sway_container_layout {
L_VERT, L_VERT,
L_STACKED, L_STACKED,
L_TABBED, L_TABBED,
L_FLOATING,
}; };
enum sway_container_border { enum sway_container_border {

View file

@ -3,9 +3,11 @@
#include "sway/commands.h" #include "sway/commands.h"
#include "sway/input/seat.h" #include "sway/input/seat.h"
#include "sway/ipc-server.h" #include "sway/ipc-server.h"
#include "sway/output.h"
#include "sway/tree/arrange.h" #include "sway/tree/arrange.h"
#include "sway/tree/container.h" #include "sway/tree/container.h"
#include "sway/tree/layout.h" #include "sway/tree/layout.h"
#include "sway/tree/view.h"
#include "list.h" #include "list.h"
struct cmd_results *cmd_floating(int argc, char **argv) { 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, C_WORKSPACE);
container_remove_child(container); container_remove_child(container);
container_add_floating(workspace, 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); seat_set_focus(config->handler_context.seat, container);
arrange_workspace(workspace); arrange_workspace(workspace);
} else if (container->is_floating && !wants_floating) { } else if (container->is_floating && !wants_floating) {

View file

@ -22,8 +22,6 @@ static const char *layout_to_str(enum sway_container_layout layout) {
return "L_STACKED"; return "L_STACKED";
case L_TABBED: case L_TABBED:
return "L_TABBED"; return "L_TABBED";
case L_FLOATING:
return "L_FLOATING";
case L_NONE: case L_NONE:
default: default:
return "L_NONE"; return "L_NONE";

View file

@ -21,8 +21,6 @@ static const char *ipc_json_layout_description(enum sway_container_layout l) {
return "tabbed"; return "tabbed";
case L_STACKED: case L_STACKED:
return "stacked"; return "stacked";
case L_FLOATING:
return "floating";
case L_NONE: case L_NONE:
break; break;
} }