rem: wwin->flags.icon_moved = 0;
context: wArrangeIcons(WScreen *scr, Bool arrangeAll){    WWindow *wwin;    WAppIcon *aicon;    int pf;			       /* primary axis */    int sf;			       /* secondary axis */    int fullW;    int fullH;    int pi, si;    int sx1, sx2, sy1, sy2;	       /* screen boundary */    int sw, sh;    int xo, yo;    int xs, ys;    int isize = wPreferences.icon_size;    /*     * Find out screen boundaries.     */    sx1 = 0;    sy1 = 0;    sx2 = scr->scr_width;    sy2 = scr->scr_height;    if (scr->dock) {	if (scr->dock->on_right_side)            sx2 -= isize + DOCK_EXTRA_SPACE;	else	    sx1 += isize + DOCK_EXTRA_SPACE;    }    sw = isize * (scr->scr_width/isize);    sh = isize * (scr->scr_height/isize);    fullW = (sx2-sx1)/isize;    fullH = (sy2-sy1)/isize;    /* icon yard boundaries */        if (wPreferences.icon_yard & IY_VERT) {	pf = fullH;	sf = fullW;    } else {	pf = fullW;	sf = fullH;    }    if (wPreferences.icon_yard & IY_RIGHT) {	xo = sx2 - isize;	xs = -1;    } else {	xo = sx1;	xs = 1;    }    if (wPreferences.icon_yard & IY_TOP) {	yo = sy1;	ys = 1;    } else {	yo = sy2 - isize;	ys = -1;    }    /* arrange icons putting the most recently focused window     * as the last icon */#define X ((wPreferences.icon_yard & IY_VERT) ? xo + xs*(si*isize)\		    : xo + xs*(pi*isize))#define Y ((wPreferences.icon_yard & IY_VERT) ? yo + ys*(pi*isize)\		    : yo + ys*(si*isize))    /* arrange application icons */    aicon = scr->app_icon_list;    /* reverse them to avoid unnecessarily sliding of icons */    while (aicon && aicon->next)        aicon = aicon->next;    pi = 0;    si = 0;    while (aicon) {        if (!aicon->docked) {            if (aicon->x_pos != X || aicon->y_pos != Y) {#ifdef ANIMATIONS                if (!wPreferences.no_animations) {                    SlideWindow(aicon->icon->core->window, aicon->x_pos, aicon->y_pos,                                X, Y);                }#endif /* ANIMATIONS */            }	    wAppIconMove(aicon, X, Y);            pi++;        }        /* we reversed the order so we use prev */        aicon = aicon->prev;        if (pi >= pf) {            pi=0;            si++;        }    }        /* arrange miniwindows */    wwin = scr->focused_window;    /* reverse them to avoid unnecessarily shuffling */    while (wwin && wwin->prev)        wwin = wwin->prev;    while (wwin) {         if (wwin->icon && wwin->flags.miniaturized && !wwin->flags.hidden &&            (wwin->frame->workspace==scr->current_workspace ||             IS_OMNIPRESENT(wwin) || wPreferences.sticky_icons)) {	    	    if (arrangeAll || !wwin->flags.icon_moved) {		if (wwin->icon_x != X || wwin->icon_y != Y) {#ifdef ANIMATIONS		    if (wPreferences.no_animations) {			XMoveWindow(dpy, wwin->icon->core->window, X, Y);		    } else {			SlideWindow(wwin->icon->core->window, wwin->icon_x, 				    wwin->icon_y, X, Y);		    }#else		    XMoveWindow(dpy, wwin->icon->core->window, X, Y);#endif /* ANIMATIONS */		}		wwin->icon_x = X;		wwin->icon_y = Y;		wwin->flags.icon_moved = 0;		pi++;	    }	}        /* we reversed the order, so we use next */        wwin = wwin->next;	if (pi >= pf) {	    pi=0;	    si++;	}    }}