mirror of
https://github.com/swaywm/sway.git
synced 2026-04-26 06:46:26 -04:00
Honor output for xdg_toplevel_set_fullscreen
This honors the fullscreen output request for `xdg_toplevel_set_fullscreen` and `zxdg_toplevel_v6_set_fullscreen`. If the request was sent before mapping, the fullscreen output request will be retrieved from the client_pending state for the toplevel. The output will be passed to `view_map` and if there is a workspace on the output, the view will be placed on that workspace. If the request comes in after being mapped, the view will be moved to the workspace on the output (if there is one) before becoming fullscreen.
This commit is contained in:
parent
e0324fc88c
commit
195226120f
5 changed files with 46 additions and 6 deletions
|
|
@ -339,6 +339,18 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data)
|
|||
return;
|
||||
}
|
||||
|
||||
if (e->fullscreen && e->output && e->output->data) {
|
||||
struct sway_output *output = e->output->data;
|
||||
struct sway_workspace *ws = output_get_active_workspace(output);
|
||||
if (ws && !container_is_scratchpad_hidden(view->container)) {
|
||||
if (container_is_floating(view->container)) {
|
||||
workspace_add_floating(ws, view->container);
|
||||
} else {
|
||||
workspace_add_tiling(ws, view->container);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
container_set_fullscreen(view->container, e->fullscreen);
|
||||
|
||||
arrange_root();
|
||||
|
|
@ -417,7 +429,9 @@ static void handle_map(struct wl_listener *listener, void *data) {
|
|||
}
|
||||
|
||||
view_map(view, view->wlr_xdg_surface->surface,
|
||||
xdg_surface->toplevel->client_pending.fullscreen, csd);
|
||||
xdg_surface->toplevel->client_pending.fullscreen,
|
||||
xdg_surface->toplevel->client_pending.fullscreen_output,
|
||||
csd);
|
||||
|
||||
transaction_commit_dirty();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue