X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2FElement.js;h=a55c6da3ea908bd4ef9f3e01c86a2af33417bb83;hb=0b69a11b1055a6d3a3fd0719bdd58b5a235de0e4;hp=00b09e23e03fabb685db420aed945a7cd91628b4;hpb=485567fea21842bb638214a487081cbcc70e53ba;p=roojs1 diff --git a/Roo/Element.js b/Roo/Element.js index 00b09e23e0..a55c6da3ea 100644 --- a/Roo/Element.js +++ b/Roo/Element.js @@ -188,40 +188,32 @@ if(opt.anim.isAnimated()){ /** * Looks at the scrollable parent element */ - findScrollableParent : function(){ + findScrollableParent : function() + { + var overflowRegex = /(auto|scroll)/; + + if(this.getStyle('position') === 'fixed'){ + return Roo.isAndroid ? Roo.get(document.documentElement) : Roo.get(document.body); + } - var el = Roo.get(this.dom.parentNode); -// Roo.log('D: '+JSON.stringify(D, null, 4)); + var excludeStaticParent = this.getStyle('position') === "absolute"; - while ( - el && - ( - !el.isScrollable() || - ( - el.isScrollable() && - ( - D.getViewHeight() - el.dom.clientHeight > 15 || - D.getViewWidth() - el.dom.clientWidth > 15 - ) - ) - ) && - el.dom.nodeName.toLowerCase() != 'body' - ){ + for (var parent = this; (parent = Roo.get(parent.dom.parentNode));){ - el = Roo.get(el.dom.parentNode); + if (excludeStaticParent && parent.getStyle('position') === "static") { + continue; + } - Roo.log(el); - Roo.log(el.getStyle('overflow')); - Roo.log(el.getStyle('overflow-y')); - Roo.log(el.getStyle('overflow-x')); + if (overflowRegex.test(parent.getStyle('overflow') + parent.getStyle('overflow-x') + parent.getStyle('overflow-y'))){ + return parent; + } + if(parent.dom.nodeName.toLowerCase() == 'body'){ + return Roo.isAndroid ? Roo.get(document.documentElement) : Roo.get(document.body); + } } - if(!el.isScrollable()){ - return null; - } - - return el; + return Roo.isAndroid ? Roo.get(document.documentElement) : Roo.get(document.body); }, /** @@ -2120,6 +2112,7 @@ if(opt.anim.isAnimated()){ if(!this._mask){ this._mask = Roo.DomHelper.append(this.dom, {cls:"roo-el-mask"}, true); } + this.addClass("x-masked"); this._mask.setDisplayed(true); @@ -2141,12 +2134,23 @@ if(opt.anim.isAnimated()){ if(typeof msg == 'string'){ if(!this._maskMsg){ - this._maskMsg = Roo.DomHelper.append(this.dom, {cls:"roo-el-mask-msg", cn:{tag:'div'}}, true); + this._maskMsg = Roo.DomHelper.append(this.dom, { + cls: "roo-el-mask-msg", + cn: [ + { + tag: 'i', + cls: 'fa fa-spinner fa-spin' + }, + { + tag: 'div' + } + ] + }, true); } var mm = this._maskMsg; mm.dom.className = msgCls ? "roo-el-mask-msg " + msgCls : "roo-el-mask-msg"; - if (mm.dom.firstChild) { // weird IE issue? - mm.dom.firstChild.innerHTML = msg; + if (mm.dom.lastChild) { // weird IE issue? + mm.dom.lastChild.innerHTML = msg; } mm.setDisplayed(true); mm.center(this);