diff options
| author | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-03-18 01:25:53 -0600 | 
|---|---|---|
| committer | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-03-18 01:27:33 -0600 | 
| commit | 475c13414479d1013c83309fcc4bb8a8707aa721 (patch) | |
| tree | 9be3e550ad1a9c5a9727519b9db2786f9be45df2 | |
| parent | 467123dc99db4a537f1043e081cc4a6db136417b (diff) | |
do not allow set client size less than its min size
| -rw-r--r-- | client.h | 20 | ||||
| -rw-r--r-- | dwl.c | 6 | 
2 files changed, 24 insertions, 2 deletions
@@ -179,3 +179,23 @@ client_surface_at(Client *c, double cx, double cy, double *sx, double *sy)  #endif  	return wlr_xdg_surface_surface_at(c->surface.xdg, cx, cy, sx, sy);  } + +static inline void +client_min_size(Client *c, int *width, int *height) +{ +	struct wlr_xdg_toplevel *toplevel; +	struct wlr_xdg_toplevel_state *state; +#ifdef XWAYLAND +	if (client_is_x11(c)) { +		struct wlr_xwayland_surface_size_hints *size_hints; +		size_hints = c->surface.xwayland->size_hints; +		*width = size_hints->min_width; +		*height = size_hints->min_height; +		return; +	} +#endif +	toplevel = c->surface.xdg->toplevel; +	state = &toplevel->current; +	*width = state->min_width; +	*height = state->min_height; +} @@ -1636,11 +1636,13 @@ rendermon(struct wl_listener *listener, void *data)  void  resize(Client *c, int x, int y, int w, int h, int interact)  { +	int min_width = 0, min_height = 0;  	struct wlr_box *bbox = interact ? &sgeom : &c->mon->w; +	client_min_size(c, &min_width, &min_height);  	c->geom.x = x;  	c->geom.y = y; -	c->geom.width = w; -	c->geom.height = h; +	c->geom.width = MAX(min_width + 2 * c->bw, w); +	c->geom.height = MAX(min_height + 2 * c->bw, h);  	applybounds(c, bbox);  	/* Update scene-graph, including borders */  | 
