Created attachment 134458 [details] [REDUCTION] Test Case See attached reduction. If a user is actively dragging a slider and it toggles its readonly / disabled state buttons, other sliders, etc. stop working.
My guess is that we miss a call to SliderThumbElement::stopDragging at some point to clear the global capturing mouse events node: frame->eventHandler()->setCapturingMouseEventsNode(0);
Yep, calling stopDragging() when fixes the issue. There are a couple different ways to fix this. I'm going to put up a few patches and let you know which one I recommend. I'm in the process of doing a build.
Created attachment 134472 [details] [PATCH] Proposed Fix 1: Stop Dragging when readonly / disabled state toggles
Created attachment 134474 [details] [PATCH] Proposed Fix 2: Stop Dragging in the early bail
Attachment 134472 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/ChangeLog', u'Source/WebCor..." exit_code: 1 Source/WebCore/ChangeLog:10: You should remove the 'No new tests' and either add and list tests, or explain why no new tests were possible. [changelog/nonewtests] [5] Total errors found: 1 in 5 files If any of these errors are false positives, please file a bug against check-webkit-style.
I like Proposed Fix 2 because of simplicity.
(In reply to comment #6) > I like Proposed Fix 2 because of simplicity. I wonder if we should take both. • Proposed Fix 1 - this would stop an active drag if the input is changed to disabled and back quickly. • Proposed Fix 2 - any early return should logically stop the drag. Should I spend time trying to make a test for this?
I see there is: LayoutTests/fast/forms/range/range-drag.html I'll see if I can make a test for this.
Created attachment 134483 [details] [PATCH] Fix with test Now with test! The question now is if we want the following scenario to work. 1. User starts dragging 2. <input> becomes disabled 3. <input> becomes enabled 4. User continues dragging. The test does not really test this scenario, it only really tests that mouse events don't stop working when a toggle during an active drag happens.
Created attachment 134484 [details] [TEXT] Expected Results Before Patch This is to show that the test does change from before and after. This is the before, note that the attempt to drag the second slider fails.
Comment on attachment 134483 [details] [PATCH] Fix with test ok
Comment on attachment 134483 [details] [PATCH] Fix with test Clearing flags on attachment: 134483 Committed r112547: <http://trac.webkit.org/changeset/112547>
All reviewed patches have been landed. Closing bug.