1. #1
    Sencha - Ext JS Dev Team Animal's Avatar
    Join Date
    Mar 2007
    Location
    Notts/Redwood City
    Posts
    30,507
    Vote Rating
    56
    Animal has a spectacular aura about Animal has a spectacular aura about Animal has a spectacular aura about

      0  

    Default [2.2+] Window draggability fires DD events into any Window it moves over

    [2.2+] Window draggability fires DD events into any Window it moves over


    A Window's DD object interacts with the DD object of any other Window which it moves across.

    If there are several Windows on a screen, this causes performance issues.

    The purpose of a Window's DD object is solely to move the Window, not to interact with a view to informing any other DD objects, or dropping upon them.

    So I propose the following fix:

    Code:
    Ext.override(Ext.Window, {
        initDraggable : function(){
            /**
             * If this Window is configured {@link #draggable}, this property will contain
             * an instance of {@link Ext.dd.DD} which handles dragging the Window's DOM Element.
             * @type Ext.dd.DD
             * @property dd
             */
            this.dd = new Ext.Window.DD(this);
            this.dd.moveOnly = true;
        }
    });

  2. #2
    Sencha Premium Member
    Join Date
    Jan 2009
    Posts
    54
    Vote Rating
    0
    ady@daxtechnologies.com is on a distinguished road

      0  

    Default


    Animal,

    Is this still applies for 2.3.0? I saw in the source code that moveOnly is already set on true. I still have issues with dragging when there are several windows on the screen, sometime you loose the window.

    Code:
    Ext.extend(Ext.Window.DD, Ext.dd.DD, {
        moveOnly:true,
        headerOffsets:[100, 25],
        startDrag : function(){
            var w = this.win;
            this.proxy = w.ghost();
            if(w.constrain !== false){
                var so = w.el.shadowOffset;
                this.constrainTo(w.container, {right: so, left: so, bottom: so});
            }else if(w.constrainHeader !== false){
                var s = this.proxy.getSize();
                this.constrainTo(w.container, {right: -(s.width-this.headerOffsets[0]), bottom: -(s.height-this.headerOffsets[1])});
            }
        },
        b4Drag : Ext.emptyFn,
    
        onDrag : function(e){
            this.alignElWithMouse(this.proxy, e.getPageX(), e.getPageY());
        },
    
        endDrag : function(e){
            this.win.unghost();
            this.win.saveState();
        }
    });

  3. #3
    Sencha Premium Member
    Join Date
    Jan 2009
    Posts
    54
    Vote Rating
    0
    ady@daxtechnologies.com is on a distinguished road

      0  

    Default


    Actually the problem is dragging over a window with an IFRAME(I think). It doesn't matter if moveOnly is true or false, I presume on you move over an IFRAME and you loose the caption it won't receive moving event.

Thread Participants: 1