public boolean dropon(Widget w, Coord c) {
        for (Widget wdg = w.lchild; wdg != null; wdg = wdg.prev) {
            if (wdg == this)
                continue;
            Coord cc = w.xlate(wdg.c, true);
            if (c.isect(cc, (wdg.hsz == null) ? wdg.sz : wdg.hsz)) {
                if (dropon(wdg, c.add(cc.inv())))
                    return (true);
            }
        }
        if (w instanceof DTarget) {
            if (((DTarget) w).drop(c, c.add(doff.inv())))
                return (true);
        }
        if (w instanceof DTarget2) {
            if (((DTarget2) w).drop(c, c.add(doff.inv()), this))
                return (true);
        }
        return (false);
    }