src/view.c: factor out the various view_apply_ variants

This commit is contained in:
Consolatis 2022-12-31 22:01:51 +01:00 committed by Johan Malm
parent 84b3df4ef2
commit 03a1953cfa

View file

@ -419,6 +419,19 @@ view_apply_maximized_geometry(struct view *view)
view_move_resize(view, box); view_move_resize(view, box);
} }
static bool
view_apply_special_geometry(struct view *view)
{
if (view->maximized) {
view_apply_maximized_geometry(view);
} else if (view->tiled) {
view_apply_tiled_geometry(view, NULL);
} else {
return false;
}
return true;
}
static void static void
view_apply_unmaximized_geometry(struct view *view) view_apply_unmaximized_geometry(struct view *view)
{ {
@ -485,7 +498,6 @@ view_maximize(struct view *view, bool maximize, bool store_natural_geometry)
if (view->fullscreen) { if (view->fullscreen) {
return; return;
} }
set_maximized(view, maximize);
if (maximize) { if (maximize) {
/* /*
* Maximize via keybind or client request cancels * Maximize via keybind or client request cancels
@ -496,14 +508,10 @@ view_maximize(struct view *view, bool maximize, bool store_natural_geometry)
if (!view->tiled && store_natural_geometry) { if (!view->tiled && store_natural_geometry) {
view_store_natural_geometry(view); view_store_natural_geometry(view);
} }
view_apply_maximized_geometry(view); }
} else { set_maximized(view, maximize);
/* unmaximize */ if (!view_apply_special_geometry(view)) {
if (view->tiled) { view_apply_unmaximized_geometry(view);
view_apply_tiled_geometry(view, NULL);
} else {
view_apply_unmaximized_geometry(view);
}
} }
} }
@ -587,11 +595,7 @@ view_set_decorations(struct view *view, bool decorations)
} else { } else {
undecorate(view); undecorate(view);
} }
if (view->maximized) { view_apply_special_geometry(view);
view_apply_maximized_geometry(view);
} else if (view->tiled) {
view_apply_tiled_geometry(view, NULL);
}
} }
} }
@ -643,11 +647,7 @@ view_set_fullscreen(struct view *view, bool fullscreen,
decorate(view); decorate(view);
} }
/* Restore non-fullscreen geometry */ /* Restore non-fullscreen geometry */
if (view->maximized) { if (!view_apply_special_geometry(view)) {
view_apply_maximized_geometry(view);
} else if (view->tiled) {
view_apply_tiled_geometry(view, NULL);
} else {
view_apply_unmaximized_geometry(view); view_apply_unmaximized_geometry(view);
} }
} }
@ -675,13 +675,7 @@ view_adjust_for_layout_change(struct view *view)
/* output is gone, exit fullscreen */ /* output is gone, exit fullscreen */
view_set_fullscreen(view, false, NULL); view_set_fullscreen(view, false, NULL);
} }
} else if (view->maximized) { } else if (!view_apply_special_geometry(view)) {
/* recompute maximized geometry */
view_apply_maximized_geometry(view);
} else if (view->tiled) {
/* recompute tiled geometry */
view_apply_tiled_geometry(view, NULL);
} else {
/* reposition view if it's offscreen */ /* reposition view if it's offscreen */
struct wlr_box box = { view->x, view->y, view->w, view->h }; struct wlr_box box = { view->x, view->y, view->w, view->h };
if (!wlr_output_layout_intersects(layout, NULL, &box)) { if (!wlr_output_layout_intersects(layout, NULL, &box)) {