Bugfix: Resize client after updating base_height/base_width (Thanks Merovius)
This fixes the problem that urxvt/xterm "lost" a line of space before being resized the first time.
This commit is contained in:
parent
d2a88f7089
commit
5329ed0158
|
@ -889,8 +889,13 @@ int handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t state, xcb_w
|
||||||
base_height = size_hints.min_height;
|
base_height = size_hints.min_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (base_width != client->base_width ||
|
||||||
|
base_height != client->base_height) {
|
||||||
client->base_width = base_width;
|
client->base_width = base_width;
|
||||||
client->base_height = base_height;
|
client->base_height = base_height;
|
||||||
|
LOG("client's base_height changed to %d\n", base_height);
|
||||||
|
resize_client(conn, client);
|
||||||
|
}
|
||||||
|
|
||||||
/* If no aspect ratio was set or if it was invalid, we ignore the hints */
|
/* If no aspect ratio was set or if it was invalid, we ignore the hints */
|
||||||
if (!(size_hints.flags & XCB_SIZE_HINT_P_ASPECT) ||
|
if (!(size_hints.flags & XCB_SIZE_HINT_P_ASPECT) ||
|
||||||
|
|
|
@ -322,15 +322,15 @@ void resize_client(xcb_connection_t *conn, Client *client) {
|
||||||
if (client->height_increment > 1) {
|
if (client->height_increment > 1) {
|
||||||
int old_height = rect->height;
|
int old_height = rect->height;
|
||||||
rect->height -= (rect->height - client->base_height) % client->height_increment;
|
rect->height -= (rect->height - client->base_height) % client->height_increment;
|
||||||
LOG("Lost %d pixel due to client's height_increment (%d px)\n",
|
LOG("Lost %d pixel due to client's height_increment (%d px, base_height = %d)\n",
|
||||||
old_height - rect->height, client->height_increment);
|
old_height - rect->height, client->height_increment, client->base_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client->width_increment > 1) {
|
if (client->width_increment > 1) {
|
||||||
int old_width = rect->width;
|
int old_width = rect->width;
|
||||||
rect->width -= (rect->width - client->base_width) % client->width_increment;
|
rect->width -= (rect->width - client->base_width) % client->width_increment;
|
||||||
LOG("Lost %d pixel due to client's width_increment (%d px)\n",
|
LOG("Lost %d pixel due to client's width_increment (%d px, base_width = %d)\n",
|
||||||
old_width - rect->width, client->width_increment);
|
old_width - rect->width, client->width_increment, client->base_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG("child will be at %dx%d with size %dx%d\n", rect->x, rect->y, rect->width, rect->height);
|
LOG("child will be at %dx%d with size %dx%d\n", rect->x, rect->y, rect->width, rect->height);
|
||||||
|
|
Loading…
Reference in New Issue