Skip to content

Commit fbeb2dd

Browse files
authored
Merge pull request #139 from jahn96/drag_drop
Fix buggy drag and drop
2 parents 7d39990 + 523663d commit fbeb2dd

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/CodeSnippetDisplay.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ const CODE_SNIPPET_CREATE_NEW_BTN = 'jp-createSnippetBtn';
106106
/**
107107
* The threshold in pixels to start a drag event.
108108
*/
109-
const DRAG_THRESHOLD = 5;
109+
const DRAG_THRESHOLD = 3;
110110

111111
/**
112112
* A class used to indicate a snippet item.
@@ -431,6 +431,9 @@ export class CodeSnippetDisplay extends React.Component<
431431
target.addEventListener('mouseup', this._evtMouseUp, true);
432432
target.addEventListener('mousemove', this.handleDragMove, true);
433433

434+
// since a browser has its own drag'n'drop support for images and some other elements.
435+
target.ondragstart = () => false;
436+
434437
event.preventDefault();
435438
}
436439

@@ -446,6 +449,9 @@ export class CodeSnippetDisplay extends React.Component<
446449
}
447450

448451
private handleDragMove(event: MouseEvent): void {
452+
event.preventDefault();
453+
event.stopPropagation();
454+
449455
const data = this._dragData;
450456

451457
if (
@@ -460,7 +466,12 @@ export class CodeSnippetDisplay extends React.Component<
460466
const idx = (event.target as HTMLElement).id;
461467
const codeSnippet = this.state.codeSnippets[parseInt(idx)];
462468

463-
this.startDrag(data.dragImage, codeSnippet, event.clientX, event.clientY);
469+
void this.startDrag(
470+
data.dragImage,
471+
codeSnippet,
472+
event.clientX,
473+
event.clientY
474+
);
464475
}
465476
}
466477

@@ -481,7 +492,7 @@ export class CodeSnippetDisplay extends React.Component<
481492
): boolean {
482493
const dx = Math.abs(nextX - prevX);
483494
const dy = Math.abs(nextY - prevY);
484-
return dx >= DRAG_THRESHOLD || dy >= DRAG_THRESHOLD;
495+
return dx >= 0 || dy >= DRAG_THRESHOLD;
485496
}
486497

487498
private async startDrag(

src/CodeSnippetWidget.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export class CodeSnippetWidget extends ReactWidget {
6767
this.openCodeSnippetEditor.bind(this);
6868
this.updateCodeSnippets.bind(this);
6969
this.codeSnippetManager = CodeSnippetContentsService.getInstance();
70+
this.node.setAttribute('data-lm-dragscroll', 'true');
7071
}
7172

7273
get codeSnippetWidgetModel(): CodeSnippetWidgetModel {

0 commit comments

Comments
 (0)