Opened 9 years ago

Closed 7 years ago

Last modified 6 years ago

#3736 closed bug (fixed)

Slider: some handles get stuck when using two or more handles

Reported by: aksival Owned by: andrew_
Priority: major Milestone: 1.8
Component: ui.slider Version: 1.6rc4
Keywords: Cc:
Blocked by: Blocking:

Description

To reproduce:

Bug occurs in IE, Mozilla, Opera, and Webkit browsers.

Attachments (4)

ui.slider.3736.diff (939 bytes) - added by vitch 9 years ago.
Patch of proposed fix…
3736.ui.slider.js.2.patch (1.0 KB) - added by andrew_ 9 years ago.
(Fixed) Proposed Patch
3736.ui.slider.js.patch (933 bytes) - added by andrew_ 9 years ago.
Logic adjustment & patch file fix.
3736.ui.slider.js.3.patch (969 bytes) - added by andrew_ 9 years ago.
Fix for values: [0,0] included.

Download all attachments as: .zip

Change History (33)

comment:1 Changed 9 years ago by Scott González

Milestone: TBD1.6
Priority: majorcritical

This occurs at any value. When the handles overlap, you can only drag the first.

comment:2 Changed 9 years ago by Scott González

Related to #3467.

comment:3 Changed 9 years ago by akabanov

What about to 'bring to front' last touched handle?

comment:4 Changed 9 years ago by paul

Resolution: fixed
Status: newclosed

Fixed in r1836.

comment:5 Changed 9 years ago by Scott González

Fixed for ranges with a min value other than zero in r1953.

comment:6 Changed 9 years ago by vitch

Unfortunately this fix doesn't work where there are more than 2 handles (now that #4387 stops you dragging handles past each other and #4388 allows you to have a range with more than two handles). Possibly this should be opened as a new ticket since the fix was effective until I wrote the other two fixes?

Anyway, I have a solution which has sounder logic (I think!). We take the closest handle to be the highest one (as in the furthest right) rather than the lower one. This makes more sense to me anyway as I would expect the higher number to be top of the stack (until there is a fix for #3467).

Then if the closest handle is at the top value and the handle below that is also at the top value then we select the handle after. Rinse and repeat until we have the bottom handle of the stack (as it is either the last handle or because the handle below it is at a lower position on the slider). That's our active slider and the user can drag it downwards. No need to have any logic around range because when there is only one handle it will fall straight over the loop anyway...

See attached patch for more clarity.

Changed 9 years ago by vitch

Attachment: ui.slider.3736.diff added

Patch of proposed fix...

comment:7 Changed 9 years ago by vitch

(didn't have permissions to re-open the ticket - will post to mailing list)

comment:8 Changed 9 years ago by vitch

Was told on the mailing list that it was incorrect to try and re-open this ticket because I noticed the problem after working on other tickets. However, the patch is still valid and the original fix doesn't fix the original problem.

See:

http://www.kelvinluck.com/assets/jquery/ui-slider/3736/buggy.html

Using latest ui.core and ui.slider from svn and the generated example page from the download app with one small change. range is set to false. Drag both sliders to the left. You now can't drag either slider...

Compare to the version with my patch:

http://www.kelvinluck.com/assets/jquery/ui-slider/3736/patched.html

comment:9 Changed 9 years ago by Scott González

Milestone: 1.71.8
Resolution: fixed
Status: closedreopened

This still occurs with multiple handles and range: false.

comment:10 Changed 9 years ago by andrew_

Owner: set to andrew_
Status: reopenedassigned

comment:11 Changed 9 years ago by rdworth

Summary: Second handle gets stuck when using two handlesSlider: some handles get stuck when using two or more handles

comment:12 Changed 9 years ago by andrew_

The patch I have attached addresses the suspected issue: The original code assumes that there will only ever be two handles. When values.length > 2, the proposed patch ignores the 'otherVal' (value of the other of two handles) and proceeds with the value change/slide.

Changed 9 years ago by andrew_

Attachment: 3736.ui.slider.js.2.patch added

(Fixed) Proposed Patch

Changed 9 years ago by andrew_

Attachment: 3736.ui.slider.js.patch added

Logic adjustment & patch file fix.

Changed 9 years ago by andrew_

Attachment: 3736.ui.slider.js.3.patch added

Fix for values: [0,0] included.

comment:13 Changed 9 years ago by andrew_

Resolution: fixed
Status: assignedclosed

Committed fix to trunk. r2484.

comment:14 Changed 9 years ago by rdworth

Milestone: 1.81.7.2

comment:17 Changed 8 years ago by gabriel

This issue was supposed to be fixed in 1.7.2 (latest release), but I'm still experiencing this issue, even after download and using the latest version.

This issue can also still be seen on the UI Slider demo page.

comment:18 in reply to:  17 ; Changed 8 years ago by gabriel

Replying to gabriel:

This issue was supposed to be fixed in 1.7.2 (latest release), but I'm still experiencing this issue, even after download and using the latest version.

This issue can also still be seen on the UI Slider demo page.

Just downloaded jQuery UI 1.8a1 and the issue seems to be resolved. Nevermind.

comment:19 in reply to:  18 Changed 8 years ago by gabriel

Replying to gabriel:

This issue was supposed to be fixed in 1.7.2 (latest release), but I'm still experiencing this issue, even after download and using the latest version.

This issue can also still be seen on the UI Slider demo page.

Just downloaded jQuery UI 1.8a1 and the issue seems to be resolved. Nevermind.

I stand corrected. I thought it was fixed, but it actually wasn't (see range demo). I've tried it on Firefox 3.5.2 & Safari 4.0.3 on OS X (Leopard).

comment:20 Changed 8 years ago by petersendidit

Submitting a patch to correctly handle the state where both handles are stacked on top of each other. Decides what handle to use based on which direction the mouse moves.

comment:21 Changed 8 years ago by petersendidit

Got error from trac when tried to upload the patch file. here it is http://dl.dropbox.com/u/144970/stackedHandles.diff

comment:22 Changed 7 years ago by Scott González

Resolution: fixed
Status: closedreopened

comment:23 Changed 7 years ago by Scott González

See #6193 for suggested change.

comment:24 Changed 7 years ago by Scott González

Priority: criticalmajor

comment:25 Changed 7 years ago by Scott González

#6797 is a duplicate of this ticket.

comment:26 Changed 7 years ago by Scott González

Milestone: 1.7.21.9

comment:27 Changed 7 years ago by ednark

I think I have some smarter selection logic for choosing which handle to move.

Commit https://github.com/ednark/jquery-ui/commit/7b80caa880038b9fedfc5d15b7d6209f904379f6

comment:29 Changed 7 years ago by schup

I don't think that's fixed.

  1. go to http://view.jqueryui.com/1.8.13/demos/slider/range.html
  2. drag the right handler all the way to the left (so that it's on top of the left handler) using the mouse
  3. let go of the mouse button
  4. use the mouse to drag the handle to the right

Doesn't work in Firefox, Chrome .. and possibly others.

http://view.jqueryui.com/master/tests/visual/slider/slider_ticket_3736.html works - there is no restriction on the sliders so they can be moved freely -> you don't actually know which handler is used.

comment:30 in reply to:  29 Changed 7 years ago by rdworth

Replying to schup:

I don't think that's fixed.

  1. go to http://view.jqueryui.com/1.8.13/demos/slider/range.html
  2. drag the right handler all the way to the left (so that it's on top of the left handler) using the mouse
  3. let go of the mouse button
  4. use the mouse to drag the handle to the right

The issue you're describing is sufficiently captured in #3467 . This issue ( #3736 ) stands fixed as it is limited to both handles getting stuck when both are at the min because you click and it grabs the left handle and can't move it either to the left of the min or to the right of the right handle. See ticket description.

comment:31 Changed 6 years ago by rdworth

#8093 is a duplicate of this ticket.

Note: See TracTickets for help on using tickets.