all repos — openbox @ 07af4a618431163d8be65e153cc7d8f0cae34f7d

openbox fork - make it a bit more like ryudo

some improvements on how group transients get their transient pointers, needed after r6022.
Dana Jansens danakj@orodu.net
commit

07af4a618431163d8be65e153cc7d8f0cae34f7d

parent

5fefac87b9d5eadbcc3c86010cb3c1483a12c612

1 files changed, 19 insertions(+), 10 deletions(-)

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

@@ -915,7 +915,10 @@

/* The transient hint is used to pick a type, but the type can also affect transiency (dialogs are always made transients of their group if they have one). This is Havoc's idea, but it is needed to make some apps - work right (eg tsclient). */ + work right (eg tsclient). + I also have made non-application type windows be transients based on + their type, like dialogs. + */ client_update_transient_for(self); client_get_type(self);/* this can change the mwmhints for special cases */ client_get_state(self);

@@ -1643,7 +1646,8 @@ it = g_slist_next(it))

{ ObClient *c = it->data; - if (c != self && !c->transient_for) + if (c != self && (!c->transient_for || + c->transient_for != OB_TRAN_GROUP)) c->transients = g_slist_remove(c->transients, self); }

@@ -1652,12 +1656,23 @@

group_remove(self->group, self); self->group = NULL; } + + /* 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 + + do this before adding transients from the group so we know if + we are actually transient for the group or not. + */ + client_update_transient_for(self); + if (hints->window_group != None) { self->group = group_add(hints->window_group, self); /* i can only have transients from the group if i am not - transient myself */ - if (!self->transient_for) { + transient for the group myself */ + if (self->transient_for != OB_TRAN_GROUP) { /* add other transients of the group that are already set up */ for (it = self->group->members; it;

@@ -1670,12 +1685,6 @@ g_slist_append(self->transients, c);

} } } - - /* 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 */