Results 1 to 2 of 2

Thread: Unable perform DnD rapidly due to proxy repair timeout

    Thank you for reporting this bug. We will make it our priority to review this report.
  1. #1
    Sencha User
    Join Date
    Apr 2010
    Vote Rating

    Default Unable perform DnD rapidly due to proxy repair timeout

    Ext version tested:
    • Ext 3, Ext 4

    Adapter used:
    • ext

    css used:
    • only default ext-all.css

    Browser versions tested against: Not relevant

    Operating System: Not relevant

    • If a dragged object is released where drop isn't allowed, repair animation starts
    • If we'll try to drag (i.e. mousedown) another draggable object while repair animation is still running, no DnD will be initiated. Only text will be selected.

    This is frustrating and breaks UX because it doesn't allow quick operation inside application.
    This takes place only when DnD was invalid and doesn't happen if DnD was successful.

    Test Case:
    Steps to reproduce the problem:
    Simply try any DnD example (I suggest this): try rapidly performing invalid drag'n'drops (that is dragging a draggable object to any place outside allowed drop area). The result that was expected: To be able to initiate a new DnD while repair animation from previous DnD is still runing. The result that occurs instead: Unable to perform the described above.

    Debugging already done: The cause of the problem is the fact that the dragging property of Ext.dd.DragSource is set to false only when animation finishes, in the following callback function:
    afterRepair : function(){
                this.el.highlight(this.hlColor || "c3daf9");
            this.dragging = false;
    Clearly, new drag operation isn't initiated if this peoperty is true:
    handleMouseDown : function(e){
            if(this.dragging) {

    Possible fix:
    • not provided

    I'm going to try and set dragging to false immediately when invalid DnD is performed, not in repair callback function.
    I suspect though that there may be problems that ExtJS devs were aware of when designing Ext.dd as this problem (at least I consider this a problem) still exists in ExtJS4.

    Looking forward for official feedback!

  2. #2
    Sencha User
    Join Date
    Apr 2010
    Vote Rating


    I think I figured out the difficulty (stupid me). DragZone reuses the same proxy object so that's why I can't start a new drag operation until the previous repair animation finishes.

    So far this can be solved by turning off repair animation (set animRepair: false for Ext.dd.StatusProxy).

    Maybe in future you would consider removing this limitation. You could simply animate a cloned proxy element node and just remove it at the end of animation. I realize that it might not be worth it but current behaviour is definitely inconsistent: I can quickly drop objects one after another it the drops are valid but I have to wait if the performed drop is invalid.

    In many cases the issue is unnoticed but this may be critical in applications that actively use Drag'n'Drop (like distributing some objects into multiple 'buckets', or dragging and dropping objects into toolbar/menu items).

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts