+ GList *it, *last, *below, *above, *next;
+ GList *wins = NULL;
+
+ GList *group_modals = NULL;
+ GList *group_trans = NULL;
+ GList *modals = NULL;
+ GList *trans = NULL;
+
+ if (!raise && selected->transient_for) {
+ GSList *top, *top_it;
+ GSList *top_reorder = NULL;
+
+ /* if it's a transient lowering, lower its parents so that we can lower
+ this window, or it won't move */
+ top = client_search_all_top_parents_layer(selected);
+
+ /* that is, if it has any parents */
+ if (!(top->data == selected && top->next == NULL)) {
+ /* go thru stacking list backwards so we can use g_slist_prepend */
+ for (it = g_list_last(stacking_list); it && top;
+ it = g_list_previous(it))
+ if ((top_it = g_slist_find(top, it->data))) {
+ top_reorder = g_slist_prepend(top_reorder, top_it->data);
+ top = g_slist_delete_link(top, top_it);
+ }
+ g_assert(top == NULL);