diff options
Diffstat (limited to 'sway/tree')
-rw-r--r-- | sway/tree/container.c | 13 | ||||
-rw-r--r-- | sway/tree/view.c | 11 |
2 files changed, 14 insertions, 10 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c index af55a54e..2de0c7a8 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -507,21 +507,11 @@ static struct sway_container *container_at_view(struct sway_container *swayc, view_sx, view_sy, &_sx, &_sy); break; case SWAY_VIEW_XDG_SHELL_V6: - // the top left corner of the sway container is the - // coordinate of the top left corner of the window geometry - view_sx += sview->wlr_xdg_surface_v6->geometry.x; - view_sy += sview->wlr_xdg_surface_v6->geometry.y; - _surface = wlr_xdg_surface_v6_surface_at( sview->wlr_xdg_surface_v6, view_sx, view_sy, &_sx, &_sy); break; case SWAY_VIEW_XDG_SHELL: - // the top left corner of the sway container is the - // coordinate of the top left corner of the window geometry - view_sx += sview->wlr_xdg_surface->geometry.x; - view_sy += sview->wlr_xdg_surface->geometry.y; - _surface = wlr_xdg_surface_surface_at( sview->wlr_xdg_surface, view_sx, view_sy, &_sx, &_sy); @@ -943,6 +933,9 @@ void container_set_floating(struct sway_container *container, bool enable) { container_add_child(workspace, container); container->width = container->parent->width; container->height = container->parent->height; + if (container->type == C_VIEW) { + view_set_tiled(container->sway_view, true); + } container->is_sticky = false; container_reap_empty_recursive(workspace->sway_workspace->floating); } diff --git a/sway/tree/view.c b/sway/tree/view.c index de4ce2e6..98637c33 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -141,6 +141,9 @@ static void view_autoconfigure_floating(struct sway_view *view) { view->border_top = view->border_bottom = true; view->border_left = view->border_right = true; + // Don't maximize floating windows + view_set_tiled(view, false); + view_configure(view, lx, ly, width, height); } @@ -248,6 +251,7 @@ void view_autoconfigure(struct sway_view *view) { view->x = x; view->y = y; + view_set_tiled(view, true); view_configure(view, x, y, width, height); } @@ -257,6 +261,13 @@ void view_set_activated(struct sway_view *view, bool activated) { } } +void view_set_tiled(struct sway_view *view, bool tiled) { + view->border = tiled ? config->border : B_NONE; + if (view->impl->set_tiled) { + view->impl->set_tiled(view, tiled); + } +} + // Set fullscreen, but without IPC events or arranging windows. void view_set_fullscreen_raw(struct sway_view *view, bool fullscreen) { if (view->is_fullscreen == fullscreen) { |