Skip to content
Permalink
Browse files

Widget: Modified _trigger to invoke callbacks with apply so that hand…

…lers are invoked the same way .trigger() invokes them. Fixes #6795 - Widget: _trigger passes array arguments to handlers inconsistently.
  • Loading branch information...
Michael DellaNoce authored and scottgonzalez committed Feb 1, 2011
1 parent cb8f5b7 commit b3fcf174716203013e9844f1aee3216f971fcd43
Showing with 56 additions and 3 deletions.
  1. +48 −0 tests/unit/widget/widget_tickets.js
  2. +8 −3 ui/jquery.ui.widget.js
@@ -40,4 +40,52 @@ test( "#5830 - Widget: Using inheritance overwrites the base classes options", f
delete $.ui.testWidgetExtension;
});

test( "#6795 - Widget: handle array arguments to _trigger consistently", function() {
expect( 4 );

$.widget( "ui.testWidget", {
_create: function() {},
testEvent: function() {
var ui = {
foo: "bar",
baz: {
qux: 5,
quux: 20
}
};
var extra = {
bar: 5
};
this._trigger( "foo", null, [ ui, extra ] );
}
});
$( "#widget" ).bind( "testwidgetfoo", function( event, ui, extra ) {
same( ui, {
foo: "bar",
baz: {
qux: 5,
quux: 20
}
}, "event: ui hash passed" );
same( extra, {
bar: 5
}, "event: extra argument passed" );
});
$( "#widget" ).testWidget({
foo: function( event, ui, extra ) {
same( ui, {
foo: "bar",
baz: {
qux: 5,
quux: 20
}
}, "callback: ui hash passed" );
same( extra, {
bar: 5
}, "callback: extra argument passed" );
}
})
.testWidget( "testEvent" );
});

}( jQuery ) );
@@ -289,7 +289,8 @@ $.Widget.prototype = {
},

_trigger: function( type, event, data ) {
var callback = this.options[ type ];
var callback = this.options[ type ],
args;

event = $.Event( event );
event.type = ( type === this.widgetEventPrefix ?
@@ -309,8 +310,12 @@ $.Widget.prototype = {

this.element.trigger( event, data );

return !( $.isFunction(callback) &&
callback.call( this.element[0], event, data ) === false ||
args = $.isArray( data ) ?
[ event ].concat( data ) :
[ event, data ];

return !( $.isFunction( callback ) &&
callback.apply( this.element[0], args ) === false ||
event.isDefaultPrevented() );
}
};

0 comments on commit b3fcf17

Please sign in to comment.
You can’t perform that action at this time.