From: Dana Jansens Date: Thu, 10 Jul 2003 05:35:22 +0000 (+0000) Subject: speed up pick_group_windows too X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=416b9d5f5f53468f954abbdffbc40003032c7f9a;p=chaz%2Fopenbox speed up pick_group_windows too --- diff --git a/openbox/stacking.c b/openbox/stacking.c index 9309ee04..6316049a 100644 --- a/openbox/stacking.c +++ b/openbox/stacking.c @@ -199,7 +199,7 @@ static GList *pick_windows(Client *top, Client *selected, gboolean raise) static GList *pick_group_windows(Client *top, Client *selected, gboolean raise) { GList *ret = NULL; - GList *it, *next; + GList *it, *next, *prev; GSList *sit; int i, n; @@ -208,12 +208,16 @@ static GList *pick_group_windows(Client *top, Client *selected, gboolean raise) i = 0; n = g_slist_length(top->group->members) - 1; for (it = stacking_list; i < n && it; it = next) { + prev = g_list_previous(it); next = g_list_next(it); + if ((sit = g_slist_find(top->group->members, it->data))) { ++i; - ret = g_list_concat(ret, pick_windows(sit->data, - selected, raise)); - it = stacking_list; + ret = g_list_concat(ret, + pick_windows(sit->data, selected, raise)); + /* if we dont have a prev then start back at the beginning, + otherwise skip back to the prev's next */ + next = prev ? g_list_next(prev) : stacking_list; } } }