From: Dana Jansens Date: Mon, 28 May 2007 02:02:13 +0000 (+0000) Subject: properly search for a focused window in the transient tree X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=e9f6255b187e9f9283a3d3e3533a6995a77749e3;p=chaz%2Fopenbox properly search for a focused window in the transient tree --- diff --git a/openbox/client.c b/openbox/client.c index 5c025229..2974083a 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -2355,21 +2355,19 @@ ObClient *client_search_focus_tree_full(ObClient *self) return client_search_focus_tree_full(self->transient_for); } else { GSList *it; - gboolean recursed = FALSE; - for (it = self->group->members; it; it = g_slist_next(it)) - if (!((ObClient*)it->data)->transient_for) { - ObClient *c; - if ((c = client_search_focus_tree_full(it->data))) - return c; - recursed = TRUE; + for (it = self->group->members; it; it = g_slist_next(it)) { + if (it->data != self) { + ObClient *c = it->data; + + if (client_focused(c)) return c; + if ((c = client_search_focus_tree(it->data))) return c; } - if (recursed) - return NULL; + } } } - /* this function checks the whole tree, the client_search_focus_tree~ + /* this function checks the whole tree, the client_search_focus_tree does not, so we need to check this window */ if (client_focused(self)) return self;