From 39f002e0b119373dcadc6a77cb5dcf4e1e47f7cd Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Tue, 25 Aug 2009 23:16:17 +0200 Subject: [PATCH] =?UTF-8?q?Bugfix:=20Don=E2=80=99t=20call=20resize=5Fclien?= =?UTF-8?q?t=20if=20the=20width/height=20increment=20properties=20did=20no?= =?UTF-8?q?t=20change?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This avoids an endless loop, preventing clients to go to fullscreen --- src/handlers.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/handlers.c b/src/handlers.c index b8725c1b..49a56f7a 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -1026,13 +1026,23 @@ int handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t state, xcb_w } if ((size_hints.flags & XCB_SIZE_HINT_P_RESIZE_INC)) { - if (size_hints.width_inc > 0) - client->width_increment = size_hints.width_inc; - if (size_hints.height_inc > 0) - client->height_increment = size_hints.height_inc; + bool changed = false; - resize_client(conn, client); - xcb_flush(conn); + if (size_hints.width_inc > 0) + if (client->width_increment != size_hints.width_inc) { + client->width_increment = size_hints.width_inc; + changed = true; + } + if (size_hints.height_inc > 0) + if (client->height_increment != size_hints.height_inc) { + client->height_increment = size_hints.height_inc; + changed = true; + } + + if (changed) { + resize_client(conn, client); + xcb_flush(conn); + } } int base_width = 0, base_height = 0;