X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fstacking.c;h=c715eae04d9ec40f0815a1a1389a190c14098ecf;hb=174de91c343dfbdfe866e566393bf4790ae22596;hp=2a57e1a3bab546eaabe4f6eb87bc45e8ecab01ea;hpb=da226cdeff0072cf24afc8ff1e84d6cf7a3052ba;p=chaz%2Fopenbox diff --git a/openbox/stacking.c b/openbox/stacking.c index 2a57e1a3..c715eae0 100644 --- a/openbox/stacking.c +++ b/openbox/stacking.c @@ -58,7 +58,7 @@ static void do_restack(GList *wins, GList *before) { GList *it, *next; Window *win; - int i; + gint i; #ifdef DEBUG /* pls only restack stuff in the same layer at a time */ @@ -106,7 +106,7 @@ static void do_raise(GList *wins) { GList *it; GList *layer[OB_NUM_STACKING_LAYERS] = {NULL}; - int i; + gint i; for (it = wins; it; it = g_list_next(it)) { ObStackingLayer l; @@ -133,7 +133,7 @@ static void do_lower(GList *wins) { GList *it; GList *layer[OB_NUM_STACKING_LAYERS] = {NULL}; - int i; + gint i; for (it = wins; it; it = g_list_next(it)) { ObStackingLayer l; @@ -161,7 +161,7 @@ static GList *pick_windows(ObClient *top, ObClient *selected, gboolean raise) GList *ret = NULL; GList *it, *next, *prev; GSList *sit; - int i, n; + gint i, n; GList *modals = NULL; GList *trans = NULL; GList *modal_sel = NULL; /* the selected guys if modal */ @@ -234,7 +234,7 @@ static GList *pick_group_windows(ObClient *top, ObClient *selected, GList *ret = NULL; GList *it, *next, *prev; GSList *sit; - int i, n; + gint i, n; /* add group members in their stacking order */ if (top->group) { @@ -245,15 +245,18 @@ static GList *pick_group_windows(ObClient *top, ObClient *selected, next = g_list_next(it); if ((sit = g_slist_find(top->group->members, it->data))) { + ObClient *c; ObClientType t; ++i; - - t = ((ObClient*)it->data)->type; - - if (t == OB_CLIENT_TYPE_TOOLBAR || - t == OB_CLIENT_TYPE_MENU || - t == OB_CLIENT_TYPE_UTILITY) + c = it->data; + t = c->type; + + if ((c->desktop == selected->desktop || + c->desktop == DESKTOP_ALL) && + (t == OB_CLIENT_TYPE_TOOLBAR || + t == OB_CLIENT_TYPE_MENU || + t == OB_CLIENT_TYPE_UTILITY)) { ret = g_list_concat(ret, pick_windows(sit->data, @@ -357,10 +360,11 @@ void stacking_add_nonintrusive(ObWindow *win) GList *it; if (client->group) - for (it = stacking_list; !parent && it; it = it->next) { + for (it = stacking_list; !parent && it; it = g_list_next(it)) { if ((sit = g_slist_find(client->group->members, it->data))) for (sit = client->group->members; !parent && sit; - sit = sit->next) { + sit = g_slist_next(sit)) + { ObClient *c = sit->data; /* checking transient_for prevents infinate loops! */ if (sit->data == it->data && !c->transient_for)