all repos — openbox @ a5bd2babc813d990df494832feef55c7b0f17195

openbox fork - make it a bit more like ryudo

deiconify transient parents when a child is deiconified.
Dana Jansens danakj@orodu.net
commit

a5bd2babc813d990df494832feef55c7b0f17195

parent

64dac07d07f37ec965ccc0b5bc8c8c789247cff0

1 files changed, 27 insertions(+), 0 deletions(-)

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

@@ -1621,6 +1621,33 @@ }

void client_iconify(Client *self, gboolean iconic, gboolean curdesk) { + /* move up the transient chain as far as possible first if deiconifying */ + if (!iconic) + while (self->transient_for) { + if (self->transient_for != TRAN_GROUP) { + if (self->transient_for->iconic == iconic) + break; + self = self->transient_for; + } else { + GSList *it; + + /* the check for TRAN_GROUP is to prevent an infinate loop with + 2 transients of the same group at the head of the group's + members list */ + for (it = self->group->members; it; it = it->next) { + Client *c = it->data; + + if (c != self && c->transient_for->iconic != iconic && + (c->transient_for != TRAN_GROUP || + c->group != self->group)) { + self = it->data; + break; + } + } + if (it == NULL) break; + } + } + if (self->iconic == iconic) return; /* nothing to do */ g_message("%sconifying window: 0x%lx", (iconic ? "I" : "Uni"),