all repos — openbox @ 4a2400c5c2f86cacbf907cfc13488cd212cc3d17

openbox fork - make it a bit more like ryudo

that line ended up in teh if somehow...
Dana Jansens danakj@orodu.net
commit

4a2400c5c2f86cacbf907cfc13488cd212cc3d17

parent

62f1473c651a564391e53548e0cb7daa5303776d

1 files changed, 30 insertions(+), 15 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -957,10 +957,7 @@ SIZE_SET(self->max_size, G_MAXINT, G_MAXINT);

/* 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,15 +1242,15 @@ }

} } - /* 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 the group may be affected */ client_update_transient_for(self); } + + /* the WM_HINTS can contain an icon */ + client_update_icons(self); XFree(hints); }

@@ -1377,16 +1374,34 @@ void client_update_strut(ObClient *self)

{ guint num; guint32 *data; + gboolean got = FALSE; - 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 (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 (!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 */