mirror of
https://github.com/swaywm/sway.git
synced 2025-11-26 06:59:59 -05:00
Merge pull request #3423 from RyanDwyer/fullscreen-global
Implement fullscreen global
This commit is contained in:
commit
783fadab28
22 changed files with 331 additions and 131 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -985,7 +985,15 @@ void output_render(struct sway_output *output, struct timespec *when,
|
|||
goto render_overlay;
|
||||
}
|
||||
|
||||
struct sway_container *fullscreen_con = 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) {
|
||||
float clear_color[] = {0.0f, 0.0f, 0.0f, 1.0f};
|
||||
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ static void copy_container_state(struct sway_container *container,
|
|||
state->y = container->y;
|
||||
state->width = container->width;
|
||||
state->height = container->height;
|
||||
state->is_fullscreen = container->is_fullscreen;
|
||||
state->fullscreen_mode = container->fullscreen_mode;
|
||||
state->parent = container->parent;
|
||||
state->workspace = container->workspace;
|
||||
state->border = container->border;
|
||||
|
|
|
|||
|
|
@ -349,7 +349,7 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data)
|
|||
|
||||
container_set_fullscreen(view->container, e->fullscreen);
|
||||
|
||||
arrange_workspace(view->container->workspace);
|
||||
arrange_root();
|
||||
transaction_commit_dirty();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -342,7 +342,7 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data)
|
|||
|
||||
container_set_fullscreen(view->container, e->fullscreen);
|
||||
|
||||
arrange_workspace(view->container->workspace);
|
||||
arrange_root();
|
||||
transaction_commit_dirty();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -453,7 +453,7 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data)
|
|||
}
|
||||
container_set_fullscreen(view->container, xsurface->fullscreen);
|
||||
|
||||
arrange_workspace(view->container->workspace);
|
||||
arrange_root();
|
||||
transaction_commit_dirty();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue