3030 * @constructor
3131 */
3232 function EventQueue ( ) {
33- this . q = [ ] ;
33+ var q = [ ] ;
3434 this . add = function ( ev ) {
35- this . q . push ( ev ) ;
35+ q . push ( ev ) ;
3636 } ;
3737
3838 var i , j ;
3939 this . call = function ( ) {
40- for ( i = 0 , j = this . q . length ; i < j ; i ++ ) {
41- this . q [ i ] . call ( ) ;
40+ for ( i = 0 , j = q . length ; i < j ; i ++ ) {
41+ q [ i ] . call ( ) ;
4242 }
4343 } ;
44+
45+ this . remove = function ( ev ) {
46+ var newQueue = [ ] ;
47+ for ( i = 0 , j = q . length ; i < j ; i ++ ) {
48+ if ( q [ i ] !== ev ) newQueue . push ( q [ i ] ) ;
49+ }
50+ q = newQueue ;
51+ }
52+
53+ this . length = function ( ) {
54+ return q . length ;
55+ }
4456 }
4557
4658 /**
163175 attachResizeEvent ( element , callback ) ;
164176 }
165177
166- this . detach = function ( ) {
178+ this . detach = function ( ev ) {
167179 if ( isCollectionTyped ) {
168180 var i = 0 , j = element . length ;
169181 for ( ; i < j ; i ++ ) {
170- ResizeSensor . detach ( element [ i ] ) ;
182+ ResizeSensor . detach ( element [ i ] , ev ) ;
171183 }
172184 } else {
173- ResizeSensor . detach ( element ) ;
185+ ResizeSensor . detach ( element , ev ) ;
174186 }
175187 } ;
176188 } ;
177189
178- ResizeSensor . detach = function ( element ) {
190+ ResizeSensor . detach = function ( element , ev ) {
191+ if ( typeof ev == "function" ) {
192+ element . resizedAttached . remove ( ev ) ;
193+ if ( element . resizedAttached . length ( ) ) return ;
194+ }
179195 if ( element . resizeSensor ) {
180196 element . removeChild ( element . resizeSensor ) ;
181197 delete element . resizeSensor ;
191207 window . ResizeSensor = ResizeSensor ;
192208 }
193209
194- } ) ( ) ;
210+ } ) ( ) ;
0 commit comments