From 73adc6480d59fc5dccf9fe19ed5234c9582b328c Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 27 Mar 2008 09:44:48 -0400 Subject: [PATCH] make windows stay on screen when they are resized due to their normal hints changing --- openbox/client.c | 13 +++++++++++++ openbox/client.h | 11 +++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index 0ccb343b..b6ca93a3 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -933,6 +933,19 @@ static gboolean client_restore_session_stacking(ObClient *self) return FALSE; } +void client_reconfigure(ObClient *self, gboolean force) +{ + int x, y, w, h, lw, lh; + + x = self->area.x; + y = self->area.y; + w = self->area.width; + h = self->area.height; + client_try_configure(self, &x, &y, &w, &h, &lw, &lh, FALSE); + client_find_onscreen(self, &x, &y, w, h, FALSE); + client_configure(self, x, y, w, h, FALSE, TRUE, force); +} + void client_move_onscreen(ObClient *self, gboolean rude) { gint x = self->area.x; diff --git a/openbox/client.h b/openbox/client.h index 5e26ef30..09c93e63 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -396,10 +396,13 @@ void client_convert_gravity_resize(ObClient *self, gint gravity, client_configure(self, self->area.x, self->area.y, w, h, TRUE, TRUE, FALSE) #define client_move_resize(self, x, y, w, h) \ client_configure(self, x, y, w, h, TRUE, TRUE, FALSE) -#define client_reconfigure(self, force) \ - client_configure(self, ((ObClient*)self)->area.x, ((ObClient*)self)->area.y, \ - ((ObClient*)self)->area.width, \ - ((ObClient*)self)->area.height, FALSE, TRUE, force) + +/*! Make a client reconfigure so that it will honour its current max/min sizes + and other bounds. + @param force If TRUE, then a ConfigureNotify event will be sent to the client + even if nothing has changed. +*/ +void client_reconfigure(ObClient *self, gboolean force); /*! Figure out where a window will end up and what size it will be if you told it to move/resize to these coordinates. -- 2.44.0