rem: break; } if (!above) {
add: moveFrameToUnder(above, frame); } else {
context: wLowerFrame(WCoreWindow *frame){    WScreen *scr = frame->screen_ptr;    WCoreWindow *prev, *wlist=frame;    int level = frame->stacking->window_level;    /* already in bottom */    if (wlist->stacking->under == NULL) {	return;    }#ifdef removed    if (wPreferences.on_top_transients &&	wlist->stacking->under==wlist->stacking->child_of) {	return;    }#else    if (wlist->stacking->under==wlist->stacking->child_of) {	return;    }#endif    prev = wlist;    /* remove from the list */    if (WMGetFromBag(scr->stacking_list, level) == frame) {	/* it was the top window */	WMSetInBag(scr->stacking_list, level, frame->stacking->under);	frame->stacking->under->stacking->above = NULL;    } else {	if (frame->stacking->under)	    frame->stacking->under->stacking->above = frame->stacking->above;	if (frame->stacking->above)	    frame->stacking->above->stacking->under = frame->stacking->under;    }    wlist = WMGetFromBag(scr->stacking_list, level);    /* look for place to put this window */#ifdef removed    if (wPreferences.on_top_transients)#endif    {	WCoreWindow *owner = frame->stacking->child_of;		if (owner != wlist) {	    while (wlist->stacking->under) {		/* if this is a transient, it should not be placed under 		 * it's owner */		if (owner == wlist->stacking->under)		  break;		wlist = wlist->stacking->under;	    }	}    } #ifdef removed    else {	while (wlist->stacking->under) {	    wlist = wlist->stacking->under;	}    }#endif    /* insert under the place found */    frame->stacking->above = wlist;    frame->stacking->under = wlist->stacking->under;    if (wlist->stacking->under)	wlist->stacking->under->stacking->above = frame;    wlist->stacking->under = frame;    /* try to optimize things a little */    if (frame->stacking->above == NULL) {	WCoreWindow *above = NULL;	WMBagIterator iter;		for (above = WMBagIteratorAtIndex(scr->stacking_list, level-1, &iter);	     iter != NULL;	     above = WMBagPrevious(scr->stacking_list, &iter)) {		    /* can't optimize */	    while (above->stacking->under)		above = above->stacking->under;	    break;	}	if (!above) {	    XLowerWindow(dpy, frame->window);	} else {	    moveFrameToUnder(above, frame);	}    } else {	moveFrameToUnder(frame->stacking->above, frame);    }#ifdef KWM_HINTS    {	WWindow *wwin = wWindowFor(frame->window);	if (wwin)	    wKWMSendEventMessage(wwin, WKWMLowerWindow);    }#endif        }