mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 02:10:08 +00:00
tweaks and fixes...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
9d80b05d75
commit
11d4db7732
@ -201,6 +201,11 @@ object.makeConstructor('BrowserEvent',
|
|||||||
stopPropagation: function(){
|
stopPropagation: function(){
|
||||||
this.propagationStopped = true },
|
this.propagationStopped = true },
|
||||||
|
|
||||||
|
// XXX not used....
|
||||||
|
defaultPrevented: false,
|
||||||
|
preventDefault: function(){
|
||||||
|
this.defaultPrevented = true },
|
||||||
|
|
||||||
__init__: function(name, ...data){
|
__init__: function(name, ...data){
|
||||||
// sanity check...
|
// sanity check...
|
||||||
if(arguments.length < 1){
|
if(arguments.length < 1){
|
||||||
@ -255,15 +260,21 @@ var makeEventMethod = function(event, handler, retrigger){
|
|||||||
// -> null
|
// -> null
|
||||||
//
|
//
|
||||||
var callItemEventHandlers = function(item, event, evt, ...args){
|
var callItemEventHandlers = function(item, event, evt, ...args){
|
||||||
|
evt = evt || new BrowserEvent(event)
|
||||||
|
// get the relevant handlers...
|
||||||
;(item[event] ?
|
;(item[event] ?
|
||||||
[item[event]]
|
[item[event]]
|
||||||
: [])
|
: [])
|
||||||
.concat((item.events || {})[event] || [])
|
.concat((item.events || {})[event] || [])
|
||||||
|
// call the handlers...
|
||||||
.forEach(function(handler){
|
.forEach(function(handler){
|
||||||
// XXX revise call signature...
|
|
||||||
handler.call(item, evt, item, ...args) })
|
handler.call(item, evt, item, ...args) })
|
||||||
// propagate the event...
|
// propagate the event...
|
||||||
|
// NOTE: .parent of items in an array container is the first actual
|
||||||
|
// browser container up the tree, so we do not need to skip
|
||||||
|
// non-browser parents...
|
||||||
item.parent
|
item.parent
|
||||||
|
&& item.parent.trigger
|
||||||
&& item.parent.trigger(evt, item, ...args) }
|
&& item.parent.trigger(evt, item, ...args) }
|
||||||
|
|
||||||
// Generate item event method...
|
// Generate item event method...
|
||||||
@ -285,6 +296,9 @@ var callItemEventHandlers = function(item, event, evt, ...args){
|
|||||||
// handling. (XXX is this correct?)
|
// handling. (XXX is this correct?)
|
||||||
// - a parent that may contain multiple items will get triggered
|
// - a parent that may contain multiple items will get triggered
|
||||||
// multiple times, once per each item...
|
// multiple times, once per each item...
|
||||||
|
// NOTE: item events do not directly trigger the original caller's handlers
|
||||||
|
// those will get celled recursively when the events are propagated
|
||||||
|
// up the tree.
|
||||||
//
|
//
|
||||||
// XXX should we have one event instance per call or one event per item matched???
|
// XXX should we have one event instance per call or one event per item matched???
|
||||||
// .stopPropagation() affects an event object thus creating one per item
|
// .stopPropagation() affects an event object thus creating one per item
|
||||||
@ -307,7 +321,12 @@ var makeItemEventMethod = function(event, handler, options){
|
|||||||
&& handler.call(this, evt, item.slice(), ...args)
|
&& handler.call(this, evt, item.slice(), ...args)
|
||||||
item.forEach(function(item){
|
item.forEach(function(item){
|
||||||
// XXX should we clone the event here???
|
// XXX should we clone the event here???
|
||||||
callItemEventHandlers(item, event, evt, ...args) }) },
|
//callItemEventHandlers(item, event, evt, ...args) }) },
|
||||||
|
// NOTE: we ignore the root event here and force each
|
||||||
|
// item chain to create it's own new event object...
|
||||||
|
// this will isolate each chain from the others in
|
||||||
|
// state and handling propagation...
|
||||||
|
callItemEventHandlers(item, event, null, ...args) }) },
|
||||||
false)
|
false)
|
||||||
return Object.assign(
|
return Object.assign(
|
||||||
// the actual method we return...
|
// the actual method we return...
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user