Impove opera blank drag image workaround (stolen from codemirror)
This commit is contained in:
parent
87c14b6aa7
commit
617d43bb13
1 changed files with 13 additions and 15 deletions
|
|
@ -43,15 +43,11 @@ function DragdropHandler(mouseHandler) {
|
||||||
|
|
||||||
var editor = mouseHandler.editor;
|
var editor = mouseHandler.editor;
|
||||||
|
|
||||||
// Safari accepts either image or element (but it must present in the DOM)
|
var blankImage = dom.createElement("img");
|
||||||
var proxy = dom.createElement("img");
|
|
||||||
// Safari crashes without image data
|
// Safari crashes without image data
|
||||||
proxy.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
|
blankImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
|
||||||
|
if (useragent.isOpera)
|
||||||
if (useragent.isOpera) {
|
blankImage.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;";
|
||||||
proxy.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;visibility:hidden";
|
|
||||||
editor.container.appendChild(proxy);
|
|
||||||
}
|
|
||||||
|
|
||||||
var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"];
|
var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"];
|
||||||
|
|
||||||
|
|
@ -80,17 +76,19 @@ function DragdropHandler(mouseHandler) {
|
||||||
}, 0);
|
}, 0);
|
||||||
return e.preventDefault();
|
return e.preventDefault();
|
||||||
}
|
}
|
||||||
if (useragent.isOpera) {
|
|
||||||
proxy.style.visibility = "visible";
|
|
||||||
setTimeout(function(){
|
|
||||||
proxy.style.visibility = "hidden";
|
|
||||||
}, 0);
|
|
||||||
}
|
|
||||||
range = editor.getSelectionRange();
|
range = editor.getSelectionRange();
|
||||||
|
|
||||||
var dataTransfer = e.dataTransfer;
|
var dataTransfer = e.dataTransfer;
|
||||||
dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove";
|
dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove";
|
||||||
dataTransfer.setDragImage && dataTransfer.setDragImage(proxy, 0, 0);
|
if (useragent.isOpera) {
|
||||||
|
editor.container.appendChild(blankImage);
|
||||||
|
// force layout
|
||||||
|
blankImage._top = blankImage.offsetTop;
|
||||||
|
}
|
||||||
|
dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);
|
||||||
|
if (useragent.isOpera) {
|
||||||
|
editor.container.removeChild(blankImage);
|
||||||
|
}
|
||||||
// clear Opera garbage
|
// clear Opera garbage
|
||||||
dataTransfer.clearData();
|
dataTransfer.clearData();
|
||||||
dataTransfer.setData("Text", editor.session.getTextRange());
|
dataTransfer.setData("Text", editor.session.getTextRange());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue