/*package*/ void removeRoot(Component comp) { //Note: when AbstractComponent.setPage0 is called, parent is already //null. Thus, we have to check if it is a root component if (isMyRoot(comp)) { final AbstractComponent oc = (AbstractComponent) comp; setNext(oc._prev, oc._next); setPrev(oc._next, oc._prev); oc._next = oc._prev = null; --_nRoot; } }
/*package*/ void moveRoot(Component comp, Component refRoot) { final AbstractComponent nc = (AbstractComponent) comp; if (!isMyRoot(comp) || nc._next == refRoot/*nothing changed*/) return; //detach nc setNext(nc._prev, nc._next); setPrev(nc._next, nc._prev); nc._next = nc._prev = null; --_nRoot; //add if (refRoot != null) { final AbstractComponent ref = (AbstractComponent) refRoot; setNext(nc, ref); setPrev(nc, ref._prev); setNext(ref._prev, nc); setPrev(ref, nc); ++_nRoot; } else { addRoot(nc); //add to end } }