add: WMPostNotificationName(WMNResetStacking, scr, NULL);
context: MoveInStackListAbove(WCoreWindow *next, WCoreWindow *frame){    WCoreWindow *tmpw;    WScreen *scr = frame->screen_ptr;    int index;    if (!next || frame->stacking->under == next)        return;    if (frame->stacking->window_level != next->stacking->window_level)        ChangeStackingLevel(frame, next->stacking->window_level);    index = frame->stacking->window_level;    tmpw = WMGetFromBag(scr->stacking_list, index);    if (tmpw == frame)	WMSetInBag(scr->stacking_list, index, frame->stacking->under);    if (frame->stacking->under)        frame->stacking->under->stacking->above = frame->stacking->above;    if (frame->stacking->above)        frame->stacking->above->stacking->under = frame->stacking->under;    if (next->stacking->above)        next->stacking->above->stacking->under = frame;    frame->stacking->under = next;    frame->stacking->above = next->stacking->above;    next->stacking->above = frame;    if (tmpw == next)	WMSetInBag(scr->stacking_list, index, frame);    /* try to optimize things a little */    if (frame->stacking->above == NULL) {        WCoreWindow *above = NULL;	WMBagIterator iter;	for (above = WMBagIteratorAtIndex(scr->stacking_list, index+1, &iter);	     above != NULL;	     above = WMBagNext(scr->stacking_list, &iter)) {	    /* can't optimize */	    while (above->stacking->under)		above = above->stacking->under;	    break;        }        if (above == NULL) {            XRaiseWindow(dpy, frame->window);        } else {            moveFrameToUnder(above, frame);        }    } else {        moveFrameToUnder(frame->stacking->above, frame);    }        }