From 911cbb3bfba594464dc521e77166ea3b96551a07 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 2 Feb 2013 18:13:57 +0400 Subject: [PATCH] improve event_emitter - add once - _signal = fast _emit without side effects (preventdefault) - capturing argument for addListener --- lib/ace/lib/event_emitter.js | 48 ++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/lib/ace/lib/event_emitter.js b/lib/ace/lib/event_emitter.js index 5f4bec86..e572df5e 100644 --- a/lib/ace/lib/event_emitter.js +++ b/lib/ace/lib/event_emitter.js @@ -32,11 +32,13 @@ define(function(require, exports, module) { "use strict"; var EventEmitter = {}; +var stopPropagation = function() { this.propagationStopped = true; }; +var preventDefault = function() { this.defaultPrevented = true; }; EventEmitter._emit = EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry = this._eventRegistry || {}; - this._defaultHandlers = this._defaultHandlers || {}; + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); var listeners = this._eventRegistry[eventName] || []; var defaultHandler = this._defaultHandlers[eventName]; @@ -48,18 +50,12 @@ EventEmitter._dispatchEvent = function(eventName, e) { if (!e.type) e.type = eventName; - - if (!e.stopPropagation) { - e.stopPropagation = function() { - this.propagationStopped = true; - }; - } - - if (!e.preventDefault) { - e.preventDefault = function() { - this.defaultPrevented = true; - }; - } + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + if (!e.target) + e.target = this; for (var i=0; i