From 20aa8ee67dc528299dbc8735220a1c081c7ff9f6 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 25 Jan 2019 08:29:21 +1000 Subject: Implement fullscreen global --- sway/desktop/output.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'sway/desktop/output.c') diff --git a/sway/desktop/output.c b/sway/desktop/output.c index f18a118f..b5f164cb 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -251,17 +251,27 @@ static void output_for_each_surface(struct sway_output *output, }; struct sway_workspace *workspace = output_get_active_workspace(output); - if (workspace->current.fullscreen) { - for_each_surface_container_iterator( - workspace->current.fullscreen, &data); - container_for_each_child(workspace->current.fullscreen, + struct sway_container *fullscreen_con = root->fullscreen_global; + if (fullscreen_con && fullscreen_con->scratchpad && + !fullscreen_con->workspace) { + fullscreen_con = NULL; + } + if (!fullscreen_con) { + fullscreen_con = workspace->current.fullscreen; + } + if (fullscreen_con) { + for_each_surface_container_iterator(fullscreen_con, &data); + container_for_each_child(fullscreen_con, for_each_surface_container_iterator, &data); - for (int i = 0; i < workspace->current.floating->length; ++i) { - struct sway_container *floater = - workspace->current.floating->items[i]; - if (container_is_transient_for(floater, - workspace->current.fullscreen)) { - for_each_surface_container_iterator(floater, &data); + + // TODO: Show transient containers for fullscreen global + if (fullscreen_con == workspace->current.fullscreen) { + for (int i = 0; i < workspace->current.floating->length; ++i) { + struct sway_container *floater = + workspace->current.floating->items[i]; + if (container_is_transient_for(floater, fullscreen_con)) { + for_each_surface_container_iterator(floater, &data); + } } } #if HAVE_XWAYLAND -- cgit v1.2.3-54-g00ecf