Bug Tracker

Ticket #2171: containment-window-fixed.patch

File containment-window-fixed.patch, 2.5 kB (added by scott.gonzalez, 1 year ago)

with fixed position support

  • ui.draggable.ext.js

     
    9090                    $(document).width(), 
    9191                    ($(document).height() || document.body.parentNode.scrollHeight) 
    9292                ]; 
     93            } else if(o._containment == 'window' || o._containment == window) { 
     94                var leftAdjust = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft); 
     95                var topAdjust = Math.max(document.documentElement.scrollTop, document.body.scrollTop); 
     96                o.containment = [ 
     97                    leftAdjust, 
     98                    topAdjust, 
     99                    $(window).width() + leftAdjust, 
     100                    $(window).height() + topAdjust 
     101                ]; 
    93102            } else { //I'm a node, so compute top/left/right/bottom 
    94103 
    95104                var ce = $(o._containment)[0]; 
     
    112121            var self = ui.instance; 
    113122             
    114123            if(c.constructor == Array) { 
    115                 if((ui.absolutePosition.left < c[0])) self.position.left = c[0] - (self.offset.left - self.clickOffset.left); 
    116                 if((ui.absolutePosition.top < c[1])) self.position.top = c[1] - (self.offset.top - self.clickOffset.top); 
    117                 if(ui.absolutePosition.left - c[2] + self.helperProportions.width >= 0) self.position.left = c[2] - (self.offset.left - self.clickOffset.left) - self.helperProportions.width; 
    118                 if(ui.absolutePosition.top - c[3] + self.helperProportions.height >= 0) self.position.top = c[3] - (self.offset.top - self.clickOffset.top) - self.helperProportions.height; 
     124                if((ui.absolutePosition.left < c[0])) self.position.left = c[0] - (self.offset.left - self.clickOffset.left) - ( self.helperFixed ? Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) : 0 ); 
     125                if((ui.absolutePosition.top < c[1])) self.position.top = c[1] - (self.offset.top - self.clickOffset.top) - ( self.helperFixed ? Math.max(document.documentElement.scrollTop, document.body.scrollTop) : 0 ); 
     126                if(ui.absolutePosition.left - c[2] + self.helperProportions.width >= 0) self.position.left = c[2] - (self.offset.left - self.clickOffset.left) - self.helperProportions.width - ( self.helperFixed ? Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) : 0 ); 
     127                if(ui.absolutePosition.top - c[3] + self.helperProportions.height >= 0) self.position.top = c[3] - (self.offset.top - self.clickOffset.top) - self.helperProportions.height - ( self.helperFixed ? Math.max(document.documentElement.scrollTop, document.body.scrollTop) : 0 ); 
    119128            } else { 
    120129                if((ui.position.left < c.left)) self.position.left = c.left; 
    121130                if((ui.position.top < c.top)) self.position.top = c.top;