Skip to main content

Bug Tracker

Side navigation

#1924 closed bug (fixed)

Opened November 14, 2007 02:10AM UTC

Closed December 27, 2007 02:10PM UTC

UI Draggables (and perhaps others?) locations are off when parent element has a border

Reported by: rbrackett Owned by: paul
Priority: major Milestone: 1.2.2
Component: ui Version: 1.2.1
Keywords: Cc:
Blocked by: Blocking:
Description

When a draggable's positioned parent (referenced as options.pp) has a border, the new position is off by +1 pixel. This occurs each time the draggable is dragged and is most apparent when using the "grid" option. The error that causes this is repeated in many places, three of which I have identified (though there might be more):

ui.mouse.js, line 167-168:

this.pos[0] -= o.po.left;

this.pos[1] -= o.po.top;

ui.mouse.js, line 222-223 (same code):

this.pos[0] -= o.po.left;

this.pos[1] -= o.po.top;

ui.draggable.ext.js, line 198-199:

[won't detail the code here because it's quite long]

In all cases, extra space that might be created by a border is not accounted for in options.po and is in draggable.pos, creating a discrepancy and ultimately moving the draggable over.

An easy solution might be to add in the border width in those places, like so:

this.pos[0] -= o.po.left + (parseInt(jQuery.css(o.pp, "borderLeftWidth")) || 0);

this.pos[1] -= o.po.top + (parseInt(jQuery.css(o.pp, "borderLeftWidth")) || 0);

but that is definitely not ideal, since it is both repeated in multiple places and slow if done multiple times.

Attachments (0)
Change History (3)

Changed November 14, 2007 02:14AM UTC by rbrackett comment:1

Whoops, I should note that those line numbers are for revision 3817.

Changed November 19, 2007 01:50PM UTC by paul comment:2

owner: → paul

Changed December 27, 2007 02:10PM UTC by paul comment:3

resolution: → fixed
status: newclosed

Thanks, this is fixed in the rewrite for 1.1.