aboutsummaryrefslogtreecommitdiffstats
path: root/ui/jquery.ui.selectable.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/jquery.ui.selectable.js')
-rw-r--r--ui/jquery.ui.selectable.js15
1 files changed, 9 insertions, 6 deletions
diff --git a/ui/jquery.ui.selectable.js b/ui/jquery.ui.selectable.js
index a14f720b7..d679d1018 100644
--- a/ui/jquery.ui.selectable.js
+++ b/ui/jquery.ui.selectable.js
@@ -121,12 +121,15 @@ $.widget("ui.selectable", $.ui.mouse, {
$(event.target).parents().andSelf().each(function() {
var selectee = $.data(this, "selectable-item");
if (selectee) {
- selectee.$element.removeClass("ui-unselecting").addClass('ui-selecting');
- selectee.unselecting = false;
- selectee.selecting = true;
- selectee.selected = true;
- // selectable SELECTING callback
- self._trigger("selecting", event, {
+ var doSelect = !event.metaKey || !selectee.$element.hasClass('ui-selected');
+ selectee.$element
+ .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
+ .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
+ selectee.unselecting = !doSelect;
+ selectee.selecting = doSelect;
+ selectee.selected = doSelect;
+ // selectable UNSELECTING callback
+ self._trigger(doSelect ? "selecting" : "unselecting", event, {
selecting: selectee.element
});
return false;