X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2FElement.js;h=a55c6da3ea908bd4ef9f3e01c86a2af33417bb83;hb=0b69a11b1055a6d3a3fd0719bdd58b5a235de0e4;hp=5c0fb9d84984208e1dc866604d31258cd45ae0db;hpb=14ad0d9eb48ac9c47ac0ad7d81d55d7f655ee7cc;p=roojs1 diff --git a/Roo/Element.js b/Roo/Element.js index 5c0fb9d849..a55c6da3ea 100644 --- a/Roo/Element.js +++ b/Roo/Element.js @@ -188,34 +188,32 @@ if(opt.anim.isAnimated()){ /** * Looks at the scrollable parent element */ - findScrollableParent : function(){ + findScrollableParent : function() + { + var overflowRegex = /(auto|scroll)/; - var el = Roo.get(this.dom.parentNode); - Roo.log('D: '+JSON.stringify(D, null, 4)); - while ( - el && - ( - !el.isScrollable() || - ( - el.isScrollable() && - ( - D.getViewHeight() - el.dom.clientHeight > 15 || - D.getViewWidth() - el.dom.clientWidth > 15 - ) - ) - ) && - el.dom.nodeName.toLowerCase() != 'body' - ){ - el = Roo.get(el.dom.parentNode); - Roo.log('findparent:'+ JSON.stringify(el, null, 4)); - + if(this.getStyle('position') === 'fixed'){ + return Roo.isAndroid ? Roo.get(document.documentElement) : Roo.get(document.body); } - if(!el.isScrollable()){ - return null; + var excludeStaticParent = this.getStyle('position') === "absolute"; + + for (var parent = this; (parent = Roo.get(parent.dom.parentNode));){ + + if (excludeStaticParent && parent.getStyle('position') === "static") { + continue; + } + + 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); + } } - return el; + return Roo.isAndroid ? Roo.get(document.documentElement) : Roo.get(document.body); }, /** @@ -2114,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); @@ -2135,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);