- if (WINDOW_IS_CLIENT(window)) {
- Client *client = WINDOW_AS_CLIENT(window);
- for (sit = client->transients; sit; sit = sit->next)
- lower_recursive(CLIENT_AS_WINDOW(sit->data), window);
+ /* add itself */
+ ret = g_list_append(ret, win);
+
+ return ret;
+}
+
+static GList *pick_group_windows(ObWindow *win)
+{
+ GList *ret = NULL;
+ GList *it, *next;
+ GSList *sit;
+ Client *c;
+ int i, n;
+
+ if (!WINDOW_IS_CLIENT(win))
+ return NULL;
+
+ c = WINDOW_AS_CLIENT(win);
+
+ /* add group members in their stacking order */
+ if (c->group) {
+ i = 0;
+ n = g_slist_length(c->group->members) - 1;
+ for (it = stacking_list; i < n && it; it = next) {
+ next = g_list_next(it);
+ if ((sit = g_slist_find(c->group->members, it->data))) {
+ ++i;
+ ret = g_list_concat(ret, pick_windows(sit->data));
+ it = stacking_list;
+ }
+ }