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
view_apply_unmaximized_geometry(struct view *view)
{
if (view->fullscreen) {
return;
}
- set_maximized(view, maximize);
if (maximize) {
/*
* Maximize via keybind or client request cancels
if (!view->tiled && store_natural_geometry) {
view_store_natural_geometry(view);
}
- view_apply_maximized_geometry(view);
- } else {
- /* unmaximize */
- if (view->tiled) {
- view_apply_tiled_geometry(view, NULL);
- } else {
- view_apply_unmaximized_geometry(view);
- }
+ }
+ set_maximized(view, maximize);
+ if (!view_apply_special_geometry(view)) {
+ view_apply_unmaximized_geometry(view);
}
}
} else {
undecorate(view);
}
- if (view->maximized) {
- view_apply_maximized_geometry(view);
- } else if (view->tiled) {
- view_apply_tiled_geometry(view, NULL);
- }
+ view_apply_special_geometry(view);
}
}
decorate(view);
}
/* Restore non-fullscreen geometry */
- if (view->maximized) {
- view_apply_maximized_geometry(view);
- } else if (view->tiled) {
- view_apply_tiled_geometry(view, NULL);
- } else {
+ if (!view_apply_special_geometry(view)) {
view_apply_unmaximized_geometry(view);
}
}
/* output is gone, exit fullscreen */
view_set_fullscreen(view, false, NULL);
}
- } else if (view->maximized) {
- /* recompute maximized geometry */
- view_apply_maximized_geometry(view);
- } else if (view->tiled) {
- /* recompute tiled geometry */
- view_apply_tiled_geometry(view, NULL);
- } else {
+ } else if (!view_apply_special_geometry(view)) {
/* reposition view if it's offscreen */
struct wlr_box box = { view->x, view->y, view->w, view->h };
if (!wlr_output_layout_intersects(layout, NULL, &box)) {