summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-08-02 05:31:23 +0000
committerDana Jansens <danakj@orodu.net>2003-08-02 05:31:23 +0000
commit4a2400c5c2f86cacbf907cfc13488cd212cc3d17 (patch)
tree7077629cc37f26ff27ac6db74ff845a458de8c4d /openbox
parent62f1473c651a564391e53548e0cb7daa5303776d (diff)
that line ended up in teh if somehow...
Diffstat (limited to 'openbox')
-rw-r--r--openbox/client.c45
1 files changed, 30 insertions, 15 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 4bad7d82..c57c66e8 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -957,10 +957,7 @@ void client_update_normal_hints(ObClient *self)
/* get the hints from the window */
if (XGetWMNormalHints(ob_display, self->window, &size, &ret)) {
- /* don't let apps tell me where to put transient windows, but only if
- they have a valid parent */
- self->positioned = !!(size.flags & (PPosition|USPosition)) &&
- !self->transient_for;
+ self->positioned = !!(size.flags & (PPosition|USPosition));
if (size.flags & PWinGravity) {
self->gravity = size.win_gravity;
@@ -1245,9 +1242,6 @@ void client_update_wmhints(ObClient *self)
}
}
- /* the WM_HINTS can contain an icon */
- client_update_icons(self);
-
/* because the self->transient flag wont change from this call,
we don't need to update the window's type and such, only its
transient_for, and the transients lists of other windows in
@@ -1255,6 +1249,9 @@ void client_update_wmhints(ObClient *self)
client_update_transient_for(self);
}
+ /* the WM_HINTS can contain an icon */
+ client_update_icons(self);
+
XFree(hints);
}
@@ -1377,17 +1374,35 @@ void client_update_strut(ObClient *self)
{
guint num;
guint32 *data;
+ gboolean got = FALSE;
+
+ if (PROP_GETA32(self->window, net_wm_strut_partial, cardinal,
+ &data, &num)) {
+ if (num == 12) {
+ got = TRUE;
+ STRUT_PARTIAL_SET(self->strut,
+ data[0], data[2], data[1], data[3],
+ data[4], data[5], data[8], data[9],
+ data[6], data[7], data[10], data[11]);
+ }
+ g_free(data);
+ }
- if (!PROP_GETA32(self->window, net_wm_strut, cardinal, &data, &num)) {
- STRUT_SET(self->strut, 0, 0, 0, 0);
- } else {
- if (num == 4)
- STRUT_SET(self->strut, data[0], data[2], data[1], data[3]);
- else
- STRUT_SET(self->strut, 0, 0, 0, 0);
- g_free(data);
+ if (!got &&
+ PROP_GETA32(self->window, net_wm_strut, cardinal, &data, &num)) {
+ if (num == 4) {
+ got = TRUE;
+ STRUT_PARTIAL_SET(self->strut,
+ data[0], data[2], data[1], data[3],
+ 0, 0, 0, 0, 0, 0, 0, 0);
+ }
+ g_free(data);
}
+ if (!got)
+ STRUT_PARTIAL_SET(self->strut, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0);
+
/* updating here is pointless while we're being mapped cuz we're not in
the client list yet */
if (self->frame)