Skip to content

Commit 8dda241

Browse files
committed
feat(draggable): pass useful data to all drag callbacks
start/stop/drag callbacks receive: element offset, cursor position, and references to $player and $helper elements.
1 parent faa6c5d commit 8dda241

File tree

2 files changed

+30
-30
lines changed

2 files changed

+30
-30
lines changed

src/jquery.draggable.js

+28-28
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,30 @@
134134
}
135135

136136
return {
137-
left: left,
138-
top: top,
139-
mouse_left: mouse_actual_pos.left,
140-
mouse_top: mouse_actual_pos.top
137+
position: {
138+
left: left,
139+
top: top
140+
},
141+
pointer: {
142+
left: mouse_actual_pos.left,
143+
top: mouse_actual_pos.top,
144+
diff_left: diff_x,
145+
diff_top: diff_y + this.scrollOffset
146+
}
141147
};
142148
};
143149

144150

145-
fn.manage_scroll = function(offset) {
151+
fn.get_drag_data = function(e) {
152+
var offset = this.get_offset(e);
153+
offset.$player = this.$player;
154+
offset.$helper = this.helper ? this.$helper : this.$player;
155+
156+
return offset;
157+
};
158+
159+
160+
fn.manage_scroll = function(data) {
146161
/* scroll document */
147162
var nextScrollTop;
148163
var scrollTop = $window.scrollTop();
@@ -152,8 +167,8 @@
152167
var mouse_down_zone = max_window_y - 50;
153168
var mouse_up_zone = min_window_y + 50;
154169

155-
var abs_mouse_left = offset.mouse_left;
156-
var abs_mouse_top = min_window_y + offset.mouse_top;
170+
var abs_mouse_left = data.pointer.left;
171+
var abs_mouse_top = min_window_y + data.pointer.top;
157172

158173
var max_player_y = (this.doc_height - this.window_height +
159174
this.player_height);
@@ -254,52 +269,37 @@
254269
this.options.offset_left);
255270

256271
if (this.options.start) {
257-
this.options.start.call(this.$player, e, {
258-
helper: this.helper ? this.$helper : this.$player
259-
});
272+
this.options.start.call(this.$player, e, this.get_drag_data(e));
260273
}
261274
return false;
262275
};
263276

264277

265278
fn.on_dragmove = function(e) {
266-
var offset = this.get_offset(e);
279+
var data = this.get_drag_data(e);
267280

268-
this.options.autoscroll && this.manage_scroll(offset);
281+
this.options.autoscroll && this.manage_scroll(data);
269282

270283
(this.helper ? this.$helper : this.$player).css({
271284
'position': 'absolute',
272285
'left' : offset.left,
273286
'top' : offset.top
274287
});
275288

276-
var ui = {
277-
'position': {
278-
'left': offset.left,
279-
'top': offset.top
280-
}
281-
};
282289

283290
if (this.options.drag) {
284-
this.options.drag.call(this.$player, e, ui);
291+
this.options.drag.call(this.$player, e, data);
285292
}
286293
return false;
287294
};
288295

289296

290297
fn.on_dragstop = function(e) {
291-
var offset = this.get_offset(e);
298+
var data = this.get_drag_data(e);
292299
this.drag_start = false;
293300

294-
var ui = {
295-
'position': {
296-
'left': offset.left,
297-
'top': offset.top
298-
}
299-
};
300-
301301
if (this.options.stop) {
302-
this.options.stop.call(this.$player, e, ui);
302+
this.options.stop.call(this.$player, e, data);
303303
}
304304

305305
if (this.helper) {

src/jquery.gridster.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -671,8 +671,8 @@
671671
.removeClass('player-revert');
672672

673673
self.$player = $(this);
674-
self.$helper = self.options.draggable.helper === 'clone' ?
675-
$(ui.helper) : self.$player;
674+
self.$helper = $(ui.$helper);
675+
676676
self.helper = !self.$helper.is(self.$player);
677677

678678
self.on_start_drag.call(self, event, ui);

0 commit comments

Comments
 (0)