make windows stay on screen when they are resized due to their normal hints changing

This commit is contained in:
Dana Jansens 2008-03-27 09:44:48 -04:00
parent fd2f617be7
commit 73adc6480d
2 changed files with 20 additions and 4 deletions

View file

@ -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;

View file

@ -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.