aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index fa27ec36..b92c7099 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -91,13 +91,29 @@ void view_set_fullscreen(struct sway_view *view, bool fullscreen) {
91 view->is_fullscreen = fullscreen; 91 view->is_fullscreen = fullscreen;
92 92
93 if (fullscreen) { 93 if (fullscreen) {
94 if (workspace->sway_workspace->fullscreen) {
95 view_set_fullscreen(workspace->sway_workspace->fullscreen, false);
96 }
94 workspace->sway_workspace->fullscreen = view; 97 workspace->sway_workspace->fullscreen = view;
95 view_configure(view, 0, 0, output->wlr_output->width, output->wlr_output->height); 98
99 struct sway_seat *seat;
100 struct sway_container *focus, *focus_ws;
101 wl_list_for_each(seat, &input_manager->seats, link) {
102 focus = seat_get_focus(seat);
103 focus_ws = focus;
104 if (focus_ws->type != C_WORKSPACE) {
105 focus_ws = container_parent(focus_ws, C_WORKSPACE);
106 }
107 seat_set_focus(seat, view->swayc);
108 if (focus_ws != workspace) {
109 seat_set_focus(seat, focus);
110 }
111 }
96 } else { 112 } else {
97 workspace->sway_workspace->fullscreen = NULL; 113 workspace->sway_workspace->fullscreen = NULL;
98 arrange_windows(workspace, -1, -1);
99 } 114 }
100 115
116 arrange_windows(workspace, -1, -1);
101 output_damage_whole(output); 117 output_damage_whole(output);
102 118
103 ipc_event_window(view->swayc, "fullscreen_mode"); 119 ipc_event_window(view->swayc, "fullscreen_mode");