summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-26 15:38:54 +0000
committerDana Jansens <danakj@orodu.net>2007-05-26 15:38:54 +0000
commita8fe821fddc2f30b4031bd9f9e854382a9f0b76e (patch)
tree0511525db2e325267558cc4cc6b42dd7d433a0d3
parent1821191d459ead4028b08e3009f0ed0be70b9c91 (diff)
use the PSize and USSize hints to decide to resize windows on map or not
-rw-r--r--openbox/client.c12
-rw-r--r--openbox/client.h4
2 files changed, 15 insertions, 1 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 4a3e8c37..573c271c 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -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;
diff --git a/openbox/client.h b/openbox/client.h
index 82a565f3..e4831b95 100644
--- a/openbox/client.h
+++ b/openbox/client.h
@@ -216,6 +216,10 @@ struct _ObClient
we only force it if it tries to go completely offscreen, if neither, we
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;