@@ -252,11 +252,16 @@ function setDataRange(rangeSlider, gd, axisOpts, opts) {
252
252
}
253
253
254
254
function setPixelRange ( rangeSlider , gd , axisOpts , opts ) {
255
+ var hw2 = constants . handleWidth / 2 ;
255
256
256
257
function clamp ( v ) {
257
258
return Lib . constrain ( v , 0 , opts . _width ) ;
258
259
}
259
260
261
+ function clampHandle ( v ) {
262
+ return Lib . constrain ( v , - hw2 , opts . _width + hw2 ) ;
263
+ }
264
+
260
265
var pixelMin = clamp ( opts . d2p ( axisOpts . _rl [ 0 ] ) ) ,
261
266
pixelMax = clamp ( opts . d2p ( axisOpts . _rl [ 1 ] ) ) ;
262
267
@@ -271,11 +276,14 @@ function setPixelRange(rangeSlider, gd, axisOpts, opts) {
271
276
. attr ( 'x' , pixelMax )
272
277
. attr ( 'width' , opts . _width - pixelMax ) ;
273
278
279
+ var xMin = clampHandle ( pixelMin - hw2 ) ,
280
+ xMax = clampHandle ( pixelMax - hw2 ) ;
281
+
274
282
rangeSlider . select ( 'g.' + constants . grabberMinClassName )
275
- . attr ( 'transform' , 'translate(' + ( pixelMin - constants . handleWidth - 1 ) + ',0)' ) ;
283
+ . attr ( 'transform' , 'translate(' + xMin + ',0)' ) ;
276
284
277
285
rangeSlider . select ( 'g.' + constants . grabberMaxClassName )
278
- . attr ( 'transform' , 'translate(' + pixelMax + ',0)' ) ;
286
+ . attr ( 'transform' , 'translate(' + xMax + ',0)' ) ;
279
287
}
280
288
281
289
function drawBg ( rangeSlider , gd , axisOpts , opts ) {
@@ -505,6 +513,7 @@ function drawGrabbers(rangeSlider, gd, axisOpts, opts) {
505
513
506
514
var grabAreaFixAttrs = {
507
515
width : constants . grabAreaWidth ,
516
+ x : 0 ,
508
517
y : 0 ,
509
518
fill : constants . grabAreaFill ,
510
519
cursor : constants . grabAreaCursor
@@ -515,20 +524,14 @@ function drawGrabbers(rangeSlider, gd, axisOpts, opts) {
515
524
grabAreaMin . enter ( ) . append ( 'rect' )
516
525
. classed ( constants . grabAreaMinClassName , true )
517
526
. attr ( grabAreaFixAttrs ) ;
518
- grabAreaMin . attr ( {
519
- x : constants . grabAreaMinOffset ,
520
- height : opts . _height
521
- } ) ;
527
+ grabAreaMin . attr ( 'height' , opts . _height ) ;
522
528
523
529
var grabAreaMax = grabberMax . selectAll ( 'rect.' + constants . grabAreaMaxClassName )
524
530
. data ( [ 0 ] ) ;
525
531
grabAreaMax . enter ( ) . append ( 'rect' )
526
532
. classed ( constants . grabAreaMaxClassName , true )
527
533
. attr ( grabAreaFixAttrs ) ;
528
- grabAreaMax . attr ( {
529
- x : constants . grabAreaMaxOffset ,
530
- height : opts . _height
531
- } ) ;
534
+ grabAreaMax . attr ( 'height' , opts . _height ) ;
532
535
}
533
536
534
537
function clearPushMargins ( gd ) {
0 commit comments