Skip to content

Commit 986b4dc

Browse files
committed
Fix irritating self-interaction when dragging slider
1 parent 26ad1ff commit 986b4dc

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/components/sliders/draw.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ module.exports = function draw(gd) {
7373

7474
if(!sliderOpts._commandObserver) {
7575
sliderOpts._commandObserver = Plots.createCommandObserver(gd, sliderOpts.steps, function(data) {
76+
if (sliderOpts.active === data.index) return;
77+
if (sliderOpts._dragging) return;
78+
7679
setActive(gd, gSlider, sliderOpts, data.index, false, true);
7780
});
7881
}
@@ -358,6 +361,7 @@ function handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, doTransiti
358361
var quantizedPosition = Math.round(normalizedPosition * (sliderOpts.steps.length - 1));
359362

360363
if(quantizedPosition !== sliderOpts.active) {
364+
361365
setActive(gd, sliderGroup, sliderOpts, quantizedPosition, true, doTransition);
362366
}
363367
}
@@ -382,13 +386,7 @@ function setActive(gd, sliderGroup, sliderOpts, index, doCallback, doTransition)
382386
var _step = sliderGroup._nextMethod.step;
383387
if(!_step.method) return;
384388

385-
sliderOpts._invokingCommand = true;
386-
387-
Plots.executeAPICommand(gd, _step.method, _step.args).then(function() {
388-
sliderOpts._invokingCommand = false;
389-
}, function() {
390-
sliderOpts._invokingCommand = false;
391-
});
389+
Plots.executeAPICommand(gd, _step.method, _step.args);
392390

393391
sliderGroup._nextMethod = null;
394392
sliderGroup._nextMethodRaf = null;
@@ -410,13 +408,15 @@ function attachGripEvents(item, gd, sliderGroup, sliderOpts) {
410408

411409
var normalizedPosition = positionToNormalizedValue(sliderOpts, d3.mouse(node)[0]);
412410
handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, true);
411+
sliderOpts._dragging = true;
413412

414413
$gd.on('mousemove', function() {
415414
var normalizedPosition = positionToNormalizedValue(sliderOpts, d3.mouse(node)[0]);
416415
handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, false);
417416
});
418417

419418
$gd.on('mouseup', function() {
419+
sliderOpts._dragging = false;
420420
grip.call(Color.fill, sliderOpts.bgcolor);
421421
$gd.on('mouseup', null);
422422
$gd.on('mousemove', null);

0 commit comments

Comments
 (0)