Make DragdropHandler more bulletproof
This commit is contained in:
parent
3c4afde47b
commit
f9591eb16f
1 changed files with 8 additions and 4 deletions
|
|
@ -84,7 +84,7 @@ function DragdropHandler(mouseHandler) {
|
|||
if (useragent.isOpera) {
|
||||
editor.container.appendChild(blankImage);
|
||||
// force layout
|
||||
blankImage._top = blankImage.offsetTop;
|
||||
blankImage.scrollTop = 0;
|
||||
}
|
||||
dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);
|
||||
if (useragent.isOpera) {
|
||||
|
|
@ -115,6 +115,8 @@ function DragdropHandler(mouseHandler) {
|
|||
this.onDragEnter = function(e) {
|
||||
if (editor.getReadOnly() || !canAccept(e.dataTransfer))
|
||||
return;
|
||||
x = e.clientX;
|
||||
y = e.clientY;
|
||||
if (!dragSelectionMarker)
|
||||
addDragMarker();
|
||||
counter++;
|
||||
|
|
@ -126,6 +128,8 @@ function DragdropHandler(mouseHandler) {
|
|||
this.onDragOver = function(e) {
|
||||
if (editor.getReadOnly() || !canAccept(e.dataTransfer))
|
||||
return;
|
||||
x = e.clientX;
|
||||
y = e.clientY;
|
||||
// Opera doesn't trigger dragenter event on drag start
|
||||
if (!dragSelectionMarker) {
|
||||
addDragMarker();
|
||||
|
|
@ -133,8 +137,6 @@ function DragdropHandler(mouseHandler) {
|
|||
}
|
||||
if (onMouseMoveTimer !== null)
|
||||
onMouseMoveTimer = null;
|
||||
x = e.clientX;
|
||||
y = e.clientY;
|
||||
|
||||
e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);
|
||||
return event.preventDefault(e);
|
||||
|
|
@ -150,7 +152,7 @@ function DragdropHandler(mouseHandler) {
|
|||
};
|
||||
|
||||
this.onDrop = function(e) {
|
||||
if (!dragSelectionMarker)
|
||||
if (!dragCursor)
|
||||
return;
|
||||
var dataTransfer = e.dataTransfer;
|
||||
if (isInternal) {
|
||||
|
|
@ -264,6 +266,7 @@ function DragdropHandler(mouseHandler) {
|
|||
if (editor.isFocused())
|
||||
editor.renderer.$cursorLayer.setBlinking(false);
|
||||
clearInterval(timerId);
|
||||
onDragInterval();
|
||||
timerId = setInterval(onDragInterval, 20);
|
||||
counter = 0;
|
||||
event.addListener(document, "mousemove", onMouseMove);
|
||||
|
|
@ -279,6 +282,7 @@ function DragdropHandler(mouseHandler) {
|
|||
if (editor.isFocused() && !isInternal)
|
||||
editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly());
|
||||
range = null;
|
||||
dragCursor = null;
|
||||
counter = 0;
|
||||
autoScrollStartTime = null;
|
||||
cursorMovedTime = null;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue