view: Rediscover output in view_adjust_for_layout_change()

This commit is contained in:
John Lindgren 2023-02-20 12:53:00 -05:00
parent d83e99ff66
commit f018ca708d

View file

@ -740,19 +740,26 @@ void
view_adjust_for_layout_change(struct view *view) view_adjust_for_layout_change(struct view *view)
{ {
assert(view); assert(view);
if (view->fullscreen) {
if (output_is_usable(view->output)) { /* Exit fullscreen if output is lost */
/* recompute fullscreen geometry */ bool was_fullscreen = view->fullscreen;
view_apply_fullscreen_geometry(view); if (was_fullscreen && !output_is_usable(view->output)) {
set_fullscreen(view, false);
}
/* Rediscover nearest output as it may have changed */
view_discover_output(view);
if (!view_apply_special_geometry(view)) {
if (was_fullscreen) {
view_apply_natural_geometry(view);
} else { } else {
/* output is gone, exit fullscreen */ /* reposition view if it's offscreen */
view_set_fullscreen(view, false, NULL); if (!wlr_output_layout_intersects(
} view->server->output_layout,
} else if (!view_apply_special_geometry(view)) { NULL, &view->pending)) {
/* reposition view if it's offscreen */ view_center(view, NULL, NULL);
if (!wlr_output_layout_intersects(view->server->output_layout, }
NULL, &view->pending)) {
view_center(view, NULL, NULL);
} }
} }
if (view->toplevel.handle) { if (view->toplevel.handle) {