Skip to content

Commit 8366e56

Browse files
committed
Selectable: Fix selection range is shifted from cursor
1 parent 7e2ee7f commit 8366e56

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

ui/selectable.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ return $.widget("ui.selectable", $.ui.mouse, {
5656
selectees.addClass("ui-selectee");
5757
selectees.each(function() {
5858
var $this = $(this),
59+
w = $(window),
5960
context = $(that.options.appendTo),
6061
pos = $this.offset();
61-
pos.top += context.scrollTop();
62-
pos.left += context.scrollLeft();
62+
pos.left += context.scrollLeft() - w.scrollLeft();
63+
pos.top += context.scrollTop() - w.scrollTop();
6364
$.data(this, "selectable-item", {
6465
element: this,
6566
$element: $this,
@@ -95,11 +96,12 @@ return $.widget("ui.selectable", $.ui.mouse, {
9596
_mouseStart: function(event) {
9697
var that = this,
9798
options = this.options,
99+
w = $(window),
98100
context = $(options.appendTo),
99-
scrollLeft = context.scrollLeft(),
100-
scrollTop = context.scrollTop();
101+
x = event.pageX + context.scrollLeft() - w.scrollLeft(),
102+
y = event.pageY + context.scrollTop() - w.scrollTop();
101103

102-
this.opos = [ scrollLeft + event.pageX, scrollTop + event.pageY ];
104+
this.opos = [ x, y ];
103105

104106
if (this.options.disabled) {
105107
return;
@@ -112,8 +114,8 @@ return $.widget("ui.selectable", $.ui.mouse, {
112114
$(options.appendTo).append(this.helper);
113115
// position helper (lasso)
114116
this.helper.css({
115-
"left": scrollLeft + event.pageX,
116-
"top": scrollTop + event.pageY,
117+
"left": x,
118+
"top": y,
117119
"width": 0,
118120
"height": 0
119121
});
@@ -175,11 +177,12 @@ return $.widget("ui.selectable", $.ui.mouse, {
175177
var tmp,
176178
that = this,
177179
options = this.options,
180+
w = $(window),
178181
context = $(options.appendTo),
179182
x1 = this.opos[0],
180183
y1 = this.opos[1],
181-
x2 = event.pageX + context.scrollLeft(),
182-
y2 = event.pageY + context.scrollTop();
184+
x2 = event.pageX + context.scrollLeft() - w.scrollLeft(),
185+
y2 = event.pageY + context.scrollTop() - w.scrollTop();
183186

184187
if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
185188
if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }

0 commit comments

Comments
 (0)