X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2FEventManager.js;h=80c03001d5edf5d6f604b5278e21e4a3353a655c;hb=refs%2Fheads%2Fwip_leon_T7094_logo_image_upload_in_boilerplate;hp=7bf8dea5f9a957738a3306ee4fa12d8b2f6a1911;hpb=4d9cd83949f3c24871af08cebb30b1f8102ac4c9;p=roojs1 diff --git a/Roo/EventManager.js b/Roo/EventManager.js index 7bf8dea5f9..80c03001d5 100644 --- a/Roo/EventManager.js +++ b/Roo/EventManager.js @@ -14,7 +14,7 @@ * Registers event handlers that want to receive a normalized EventObject instead of the standard browser event and provides * several useful events directly. * See {@link Roo.EventObject} for more details on normalized event objects. - * @singleton + * @static */ Roo.EventManager = function(){ var docReadyEvent, docReadyProcId, docReadyState = false; @@ -22,6 +22,8 @@ Roo.EventManager = function(){ var E = Roo.lib.Event; var D = Roo.lib.Dom; + + var fireDocReady = function(){ if(!docReadyState){ @@ -96,14 +98,46 @@ Roo.EventManager = function(){ }, o.delay || 10); }; }; + var transitionEndVal = false; + + var transitionEnd = function() + { + if (transitionEndVal) { + return transitionEndVal; + } + var el = document.createElement('div'); - var listen = function(element, ename, opt, fn, scope){ + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + }; + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + transitionEndVal = transEndEventNames[name]; + return transitionEndVal ; + } + } + } + + + + var listen = function(element, ename, opt, fn, scope) + { var o = (!opt || typeof opt == "boolean") ? {} : opt; fn = fn || o.fn; scope = scope || o.scope; var el = Roo.getDom(element); + + if(!el){ throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.'; } + + if (ename == 'transitionend') { + ename = transitionEnd(); + } var h = function(e){ e = Roo.EventObject.setEvent(e); var t; @@ -140,10 +174,17 @@ Roo.EventManager = function(){ if(o.buffer){ h = createBuffered(h, o); } + fn._handlers = fn._handlers || []; + + fn._handlers.push([Roo.id(el), ename, h]); - - E.on(el, ename, h); + + + + E.on(el, ename, h); // this adds the actuall listener to the object.. + + if(ename == "mousewheel" && el.addEventListener){ // workaround for jQuery el.addEventListener("DOMMouseScroll", h, false); E.on(window, 'unload', function(){ @@ -329,16 +370,18 @@ el.on({ * @param {Object} scope An object that becomes the scope of the handler * @param {boolean} options */ - onWindowResize : function(fn, scope, options){ + onWindowResize : function(fn, scope, options) + { if(!resizeEvent){ resizeEvent = new Roo.util.Event(); resizeTask = new Roo.util.DelayedTask(function(){ resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); }); - E.on(window, "resize", function(){ - if(Roo.isIE){ + E.on(window, "resize", function() + { + if (Roo.isIE) { resizeTask.delay(50); - }else{ + } else { resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); } }); @@ -488,6 +531,8 @@ Roo.onReady(function(){ var cls = [ Roo.isIE ? "roo-ie" + : Roo.isIE11 ? "roo-ie11" + : Roo.isEdge ? "roo-edge" : Roo.isGecko ? "roo-gecko" : Roo.isOpera ? "roo-opera" : Roo.isSafari ? "roo-safari" : ""]; @@ -498,6 +543,12 @@ Roo.onReady(function(){ if(Roo.isLinux){ cls.push("roo-linux"); } + if(Roo.isIOS){ + cls.push("roo-ios"); + } + if(Roo.isTouch){ + cls.push("roo-touch"); + } if(Roo.isBorderBox){ cls.push('roo-border-box'); } @@ -527,7 +578,7 @@ Roo.onReady(function(){ Roo.EventManager.on("myDiv", 'click', handleClick); Roo.EventManager.addListener("myDiv", 'click', handleClick); - * @singleton + * @static */ Roo.EventObject = function(){