use the PSize and USSize hints to decide to resize windows on map or not

This commit is contained in:
Dana Jansens 2007-05-26 15:38:54 +00:00
parent 1821191d45
commit a8fe821fdd
2 changed files with 15 additions and 1 deletions

View file

@ -381,13 +381,21 @@ void client_manage(Window window)
"program + user specified" :
"BADNESS !?")))), self->area.x, self->area.y);
ob_debug("Sized: %s @ %d %d\n",
(!self->sized ? "no" :
(self->sized == PSize ? "program specified" :
(self->sized == USSize ? "user specified" :
(self->sized == PSize | USSize ?
"program + user specified" :
"BADNESS !?")))), self->area.width, self->area.height);
transient = place_client(self, &placex, &placey, settings);
/* if the window isn't user-positioned, then make it fit inside
the visible screen area on its monitor.
the monitor is chosen by place_client! */
if (!(self->positioned & USPosition)) {
if (!(self->sized & USSize)) {
/* make a copy to modify */
Rect a = *screen_area_monitor(self->desktop, client_monitor(self));
@ -867,6 +875,7 @@ static void client_restore_session_state(ObClient *self)
RECT_SET_POINT(self->area, self->session->x, self->session->y);
self->positioned = USPosition;
self->sized = USSize;
if (self->session->w > 0)
self->area.width = self->session->w;
if (self->session->h > 0)
@ -1617,6 +1626,7 @@ void client_update_normal_hints(ObClient *self)
if (!client_normal(self))
*/
self->positioned = (size.flags & (PPosition|USPosition));
self->sized = (size.flags & (PSize|USSize));
if (size.flags & PWinGravity)
self->gravity = size.win_gravity;

View file

@ -217,6 +217,10 @@ struct _ObClient
should place the window ourselves when it first appears */
guint positioned;
/*! Was the window's size requested by the application or the user?
If by the application we don't let it go outside the available area */
guint sized;
/*! Can the window receive input focus? */
gboolean can_focus;
/*! Notify the window when it receives focus? */