You cannot move an item an item up or left because the coordinates of the item where it is placed is 0,0 and to go up or left will cause the coordinates to negetive, the red lines of code below sets it back to 0 in Ext.dd.DD class:

alignElWithMouse: function(el, iPageX, iPageY) {
        var oCoord = this.getTargetCoord(iPageX, iPageY),
            fly = el.dom ? el :, '_dd'),
            elSize = fly.getSize(),
            EL = Ext.core.Element,

        if (!this.deltaSetXY) {
            vpSize = this.cachedViewportSize = { width: EL.getDocumentWidth(), height: EL.getDocumentHeight() };
            var aCoord = [
               Math.max(0, Math.min(oCoord.x, vpSize.width - elSize.width)),
                Math.max(0, Math.min(oCoord.y, vpSize.height - elSize.height))
            var newLeft = fly.getLeft(true);
            var newTop  = fly.getTop(true);
            this.deltaSetXY = [newLeft - oCoord.x, newTop - oCoord.y];
        } else {
            vpSize = this.cachedViewportSize;
                Math.max(0, Math.min(oCoord.x + this.deltaSetXY[0], vpSize.width - elSize.width)),
                Math.max(0, Math.min(oCoord.y + this.deltaSetXY[1], vpSize.height - elSize.height))

        this.cachePosition(oCoord.x, oCoord.y);
        this.autoScroll(oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth);
        return oCoord;
Removing the Math.max calls fix this issue and allows the item to be moved anywhere on the page, like in previous versions of ExtJs. Is this a bug or an intentional change in 4.0? If intentional, it would be nice to have an easy way to re-configure (not overriding the whole method).

An example drag and drop implemntation that works with Ext 3.3 but breaks when including Ext 4.0 instead: