Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tests/jquery.simulate.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ $.extend($.simulate.prototype, {
this.simulateEvent(document, "mousemove", coord);
this.simulateEvent(document, "mousemove", coord);
this.simulateEvent(target, "mouseup", coord);
this.simulateEvent(target, "click", coord);
},
findCenter: function(el) {
var el = $(this.target), o = el.offset();
Expand Down
44 changes: 44 additions & 0 deletions tests/unit/sortable/sortable_tickets.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,48 @@ test("#3019: Stop fires too early", function() {

});

test('#4752: link event firing on sortable with connect list', function () {
var fired = {},
hasFired = function (type) { return (type in fired) && (true === fired[type]); };

$('#sortable').clone().attr('id', 'sortable2').insertAfter('#sortable');

$('#main ul').sortable({
connectWith: '#main ul',
change: function (e, ui) {
fired.change = true;
},
receive: function (e, ui) {
fired.receive = true;
},
remove: function (e, ui) {
fired.remove = true;
}
});

$('#main ul li').live('click.ui-sortable-test', function () {
fired.click = true;
});

$('#sortable li:eq(0)').simulate('click');
ok(!hasFired('change'), 'Click only, change event should not have fired');
ok(hasFired('click'), 'Click event should have fired');

// Drag an item within the first list
fired = {};
$('#sortable li:eq(0)').simulate('drag', { dx: 0, dy: 40 });
ok(hasFired('change'), '40px drag, change event should have fired');
ok(!hasFired('receive'), 'Receive event should not have fired');
ok(!hasFired('remove'), 'Remove event should not have fired');
ok(!hasFired('click'), 'Click event should not have fired');

// Drag an item from the first list to the second, connected list
fired = {};
$('#sortable li:eq(0)').simulate('drag', { dx: 0, dy: 150 });
ok(hasFired('change'), '150px drag, change event should have fired');
ok(hasFired('receive'), 'Receive event should have fired');
ok(hasFired('remove'), 'Remove event should have fired');
ok(!hasFired('click'), 'Click event should not have fired');
});

})(jQuery);
10 changes: 7 additions & 3 deletions ui/jquery.ui.mouse.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ $.widget("ui.mouse", {
return self._mouseDown(event);
})
.bind('click.'+this.widgetName, function(event) {
if(self._preventClickEvent) {
self._preventClickEvent = false;
if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
$.removeData(event.target, self.widgetName + '.preventClickEvent');
event.stopImmediatePropagation();
return false;
}
Expand Down Expand Up @@ -118,7 +118,11 @@ $.widget("ui.mouse", {

if (this._mouseStarted) {
this._mouseStarted = false;
this._preventClickEvent = (event.target == this._mouseDownEvent.target);

if (event.target == this._mouseDownEvent.target) {
$.data(event.target, this.widgetName + '.preventClickEvent', true);
}

this._mouseStop(event);
}

Expand Down