Draggable: Added start positions to ui hashes in events.

This commit is contained in:
Scott González 2012-01-20 21:17:11 -05:00
parent 266fb1e89e
commit 30a12111d9

View File

@ -26,7 +26,7 @@ $.widget( "ui.draggable", $.ui.interaction, {
// dragEl: element being dragged (original or helper) // dragEl: element being dragged (original or helper)
// position: final CSS position of dragEl // position: final CSS position of dragEl
// offset: offset of dragEl // offset: offset of dragEl
// startCoords: pageX/Y of the mousedown (offset of pointer) // startPointer: pageX/Y of the mousedown (offset of pointer)
// startPosition: CSS position prior to drag start // startPosition: CSS position prior to drag start
// startOffset: offset prior to drag start // startOffset: offset prior to drag start
// tempPosition: overridable CSS position of dragEl // tempPosition: overridable CSS position of dragEl
@ -56,7 +56,8 @@ $.widget( "ui.draggable", $.ui.interaction, {
this.cssPosition = this.dragEl.css( "position" ); this.cssPosition = this.dragEl.css( "position" );
this.scrollParent = this.element.scrollParent(); this.scrollParent = this.element.scrollParent();
// Cache starting absolute and relative positions // Cache starting positions
this.startPointer = pointerPosition;
this.startPosition = this._getPosition(); this.startPosition = this._getPosition();
this.startOffset = this.dragEl.offset(); this.startOffset = this.dragEl.offset();
@ -64,8 +65,6 @@ $.widget( "ui.draggable", $.ui.interaction, {
this.position = $.extend( {}, this.startPosition ); this.position = $.extend( {}, this.startPosition );
this.offset = $.extend( {}, this.startOffset ); this.offset = $.extend( {}, this.startOffset );
this.startCoords = pointerPosition;
// Cache the offset of scrollParent, if required for _handleScrolling // Cache the offset of scrollParent, if required for _handleScrolling
if ( this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML" ) { if ( this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML" ) {
this.overflowOffset = this.scrollParent.offset(); this.overflowOffset = this.scrollParent.offset();
@ -223,8 +222,8 @@ $.widget( "ui.draggable", $.ui.interaction, {
// Uses event to determine new position of draggable, before any override from callbacks // Uses event to determine new position of draggable, before any override from callbacks
// TODO: handle absolute element inside relative parent like a relative element // TODO: handle absolute element inside relative parent like a relative element
_preparePosition: function( pointerPosition ) { _preparePosition: function( pointerPosition ) {
var leftDiff = pointerPosition.x - this.startCoords.x, var leftDiff = pointerPosition.x - this.startPointer.x,
topDiff = pointerPosition.y - this.startCoords.y, topDiff = pointerPosition.y - this.startPointer.y,
newLeft = leftDiff + this.startPosition.left, newLeft = leftDiff + this.startPosition.left,
newTop = topDiff + this.startPosition.top; newTop = topDiff + this.startPosition.top;
@ -271,8 +270,10 @@ $.widget( "ui.draggable", $.ui.interaction, {
}, },
_uiHash: function( pointerPosition ) { _uiHash: function( pointerPosition ) {
// TODO: add originalPosition
var ret = { var ret = {
startPosition: $.extend( {}, this.startPosition ),
startOffset: $.extend( {}, this.startOffset ),
startPointer: $.extend( {}, this.startPointer ),
position: this.position, position: this.position,
offset: this.offset, offset: this.offset,
pointer: pointerPosition pointer: pointerPosition