all repos — openbox @ 2bf58d8fb39c7b320bb046379dcb08091b8ff626

openbox fork - make it a bit more like ryudo

dont put windows below by default
Dana Jansens danakj@orodu.net
commit

2bf58d8fb39c7b320bb046379dcb08091b8ff626

parent

420e6f87a6503b713e4d9047f809538ec0c60d41

1 files changed, 31 insertions(+), 9 deletions(-)

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

@@ -851,15 +851,14 @@ g_free(state);

} if (!(self->above || self->below)) { - if (client_has_group_siblings(self)) { + if (self->group) { /* apply stuff from the group */ GSList *it; - gint layer = -1; + gint layer = -2; for (it = self->group->members; it; it = g_slist_next(it)) { ObClient *c = it->data; - if (c != self && !client_search_transient(self, c) && - client_normal(c) == client_normal(self)) + if (c != self && !client_search_transient(self, c)) { layer = MAX(layer, (c->above ? 1 : (c->below ? -1 : 0)));

@@ -869,6 +868,7 @@ switch (layer) {

case -1: self->below = TRUE; break; + case -2: case 0: break; case 1:

@@ -1096,6 +1096,9 @@ SIZE_SET(self->max_size, G_MAXINT, G_MAXINT);

/* get the hints from the window */ if (XGetWMNormalHints(ob_display, self->window, &size, &ret)) { + /* normal windows can't request placement! har har + if (!client_normal(self)) + */ self->positioned = !!(size.flags & (PPosition|USPosition)); if (size.flags & PWinGravity) {

@@ -1796,12 +1799,31 @@ }

gboolean client_should_show(ObClient *self) { - if (self->iconic) return FALSE; - else if (!(self->desktop == screen_desktop || - self->desktop == DESKTOP_ALL)) return FALSE; - else if (client_normal(self) && screen_showing_desktop) return FALSE; + if (self->iconic) + return FALSE; + if (client_normal(self) && screen_showing_desktop) + return FALSE; + /* + if (self->transient_for) { + if (self->transient_for != OB_TRAN_GROUP) + return client_should_show(self->transient_for); + else { + GSList *it; + + for (it = self->group->members; it; it = g_slist_next(it)) { + ObClient *c = it->data; + if (c != self && !c->transient_for) { + if (client_should_show(c)) + return TRUE; + } + } + } + } + */ + if (self->desktop == screen_desktop || self->desktop == DESKTOP_ALL) + return TRUE; - return TRUE; + return FALSE; } static void client_showhide(ObClient *self)