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