diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-05-28 02:12:36 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-05-28 02:12:36 +0000 |
| commit | 301016fd2ba714c1d4bc6d246a92e13eefef9954 (patch) | |
| tree | 04d3bf46dc4a8ce070cfbcebb8a16ac133980802 /openbox/client.c | |
| parent | e9f6255b187e9f9283a3d3e3533a6995a77749e3 (diff) | |
don't give focus to transient when it is ambiguous, but only if they have a parent
Diffstat (limited to 'openbox/client.c')
| -rw-r--r-- | openbox/client.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/openbox/client.c b/openbox/client.c index 2974083a..e7877c78 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -498,7 +498,7 @@ void client_manage(Window window) is ambiguous (either the current focus target doesn't have a timestamp, or they are the same (we probably inherited it from them) */ - else if (self->transient_for != NULL && + else if (client_has_parent(self) && (!last_time || self->user_time == last_time)) { activate = FALSE; @@ -2374,6 +2374,13 @@ ObClient *client_search_focus_tree_full(ObClient *self) return client_search_focus_tree(self); } +gboolean client_has_parent(ObClient *self) +{ + return (self->transient_for && + (self->transient_for != TRAN_GROUP || + self->group && self->group->members->next)); +} + static ObStackingLayer calc_layer(ObClient *self) { ObStackingLayer l; |
