From 123bcd02457df9d2a37920230f4492b0461acbca Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Thu, 28 Apr 2022 21:37:32 +0100 Subject: [PATCH] xdg-shell: set fallback geometry if width/height == 0 on unmaximize --- src/view.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/view.c b/src/view.c index 22e03531..e4ed742e 100644 --- a/src/view.c +++ b/src/view.c @@ -213,9 +213,33 @@ view_apply_maximized_geometry(struct view *view) view_move_resize(view, box); } +#define LAB_FALLBACK_WIDTH (640) +#define LAB_FALLBACK_HEIGHT (480) + +static void +set_fallback_geometry(struct view *view) +{ + view->unmaximized_geometry.width = LAB_FALLBACK_WIDTH; + view->unmaximized_geometry.height = LAB_FALLBACK_HEIGHT; + view_compute_centered_position(view, + view->unmaximized_geometry.width, + view->unmaximized_geometry.height, + &view->unmaximized_geometry.x, + &view->unmaximized_geometry.y); +} + static void view_apply_unmaximized_geometry(struct view *view) { + /* + * If an application was started maximized, its unmaximized_geometry + * width/height may still be zero in which case we set some fallback + * values. This is the case with foot and Qt applications. + */ + if (wlr_box_empty(&view->unmaximized_geometry)) { + set_fallback_geometry(view); + } + struct wlr_output_layout *layout = view->server->output_layout; if (wlr_output_layout_intersects(layout, NULL, &view->unmaximized_geometry)) {