@@ -243,7 +243,6 @@ export default class DraggableCore extends React.Component {
243
243
removeEvent ( document , eventsFor . touch . move , this . handleDrag ) ;
244
244
removeEvent ( document , eventsFor . mouse . stop , this . handleDragStop ) ;
245
245
removeEvent ( document , eventsFor . touch . stop , this . handleDragStop ) ;
246
- removeEvent ( document , 'scroll' , this . handleScroll ) ;
247
246
if ( this . props . enableUserSelectHack ) removeUserSelectStyles ( ) ;
248
247
}
249
248
@@ -273,10 +272,10 @@ export default class DraggableCore extends React.Component {
273
272
if ( this . props . enableUserSelectHack ) addUserSelectStyles ( ) ;
274
273
275
274
// Get the current drag point from the event. This is used as the offset.
276
- let { clientX , clientY } = getControlPosition ( e ) ;
275
+ let { x , y } = getControlPosition ( e , this ) ;
277
276
278
277
// Create an event object with all the data parents need to make a decision here.
279
- let coreEvent = createCoreEvent ( this , clientX , clientY ) ;
278
+ let coreEvent = createCoreEvent ( this , x , y ) ;
280
279
281
280
log ( 'DraggableCore: handleDragStart: %j' , coreEvent . position ) ;
282
281
@@ -292,15 +291,10 @@ export default class DraggableCore extends React.Component {
292
291
this . setState ( {
293
292
dragging : true ,
294
293
295
- lastX : clientX ,
296
- lastY : clientY ,
297
- // Stored so we can adjust our offset if scrolled.
298
- scrollX : document . body . scrollLeft ,
299
- scrollY : document . body . scrollTop
294
+ lastX : x ,
295
+ lastY : y
300
296
} ) ;
301
297
302
- // Translate el on page scroll.
303
- addEvent ( document , 'scroll' , this . handleScroll ) ;
304
298
// Add events to the document directly so we catch when the user's mouse/touch moves outside of
305
299
// this element. We use different events depending on whether or not we have detected that this
306
300
// is a touch-capable device.
@@ -312,21 +306,20 @@ export default class DraggableCore extends React.Component {
312
306
// Return if this is a touch event, but not the correct one for this element
313
307
if ( e . targetTouches && ( e . targetTouches [ 0 ] . identifier !== this . state . touchIdentifier ) ) return ;
314
308
315
- let { clientX , clientY } = getControlPosition ( e ) ;
309
+ let { x , y } = getControlPosition ( e , this ) ;
316
310
317
311
// Snap to grid if prop has been provided
318
312
if ( Array . isArray ( this . props . grid ) ) {
319
- let deltaX = clientX - this . state . lastX , deltaY = clientY - this . state . lastY ;
313
+ let deltaX = x - this . state . lastX , deltaY = y - this . state . lastY ;
320
314
[ deltaX , deltaY ] = snapToGrid ( this . props . grid , deltaX , deltaY ) ;
321
315
if ( ! deltaX && ! deltaY ) return ; // skip useless drag
322
- clientX = this . state . lastX + deltaX , clientY = this . state . lastY + deltaY ;
316
+ x = this . state . lastX + deltaX , y = this . state . lastY + deltaY ;
323
317
}
324
318
325
- const coreEvent = createCoreEvent ( this , clientX , clientY ) ;
319
+ const coreEvent = createCoreEvent ( this , x , y ) ;
326
320
327
321
log ( 'DraggableCore: handleDrag: %j' , coreEvent . position ) ;
328
322
329
-
330
323
// Call event handler. If it returns explicit false, trigger end.
331
324
const shouldUpdate = this . props . onDrag ( e , coreEvent ) ;
332
325
if ( shouldUpdate === false ) {
@@ -335,8 +328,8 @@ export default class DraggableCore extends React.Component {
335
328
}
336
329
337
330
this . setState ( {
338
- lastX : clientX ,
339
- lastY : clientY
331
+ lastX : x ,
332
+ lastY : y
340
333
} ) ;
341
334
} ;
342
335
@@ -350,8 +343,8 @@ export default class DraggableCore extends React.Component {
350
343
// Remove user-select hack
351
344
if ( this . props . enableUserSelectHack ) removeUserSelectStyles ( ) ;
352
345
353
- let { clientX , clientY } = getControlPosition ( e ) ;
354
- const coreEvent = createCoreEvent ( this , clientX , clientY ) ;
346
+ let { x , y } = getControlPosition ( e , this ) ;
347
+ const coreEvent = createCoreEvent ( this , x , y ) ;
355
348
356
349
log ( 'DraggableCore: handleDragStop: %j' , coreEvent . position ) ;
357
350
@@ -367,31 +360,10 @@ export default class DraggableCore extends React.Component {
367
360
368
361
// Remove event handlers
369
362
log ( 'DraggableCore: Removing handlers' ) ;
370
- removeEvent ( document , 'scroll' , this . handleScroll ) ;
371
363
removeEvent ( document , dragEventFor . move , this . handleDrag ) ;
372
364
removeEvent ( document , dragEventFor . stop , this . handleDragStop ) ;
373
365
} ;
374
366
375
- // When the user scrolls, adjust internal state so the draggable moves along the page properly.
376
- // This only fires when a drag is active.
377
- handleScroll : EventHandler = ( e ) => {
378
- const s = this . state , x = document . body . scrollLeft , y = document . body . scrollTop ;
379
-
380
- // Create the usual event, but make the scroll offset our deltas.
381
- let coreEvent = createCoreEvent ( this ) ;
382
- coreEvent . position . deltaX = x - s . scrollX ;
383
- coreEvent . position . deltaY = y - s . scrollY ;
384
-
385
- this . setState ( {
386
- lastX : s . lastX + coreEvent . position . deltaX ,
387
- lastY : s . lastY + coreEvent . position . deltaY ,
388
- scrollX : x ,
389
- scrollY : y
390
- } ) ;
391
-
392
- this . props . onDrag ( e , coreEvent ) ;
393
- } ;
394
-
395
367
onMouseDown : EventHandler = ( e ) => {
396
368
dragEventFor = eventsFor . mouse ; // on touchscreen laptops we could switch back to mouse
397
369
0 commit comments