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;
|
||||
|
||||
// Safari accepts either image or element (but it must present in the DOM)
|
||||
var proxy = dom.createElement("img");
|
||||
var blankImage = dom.createElement("img");
|
||||
// Safari crashes without image data
|
||||
proxy.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
|
||||
|
||||
if (useragent.isOpera) {
|
||||
proxy.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;visibility:hidden";
|
||||
editor.container.appendChild(proxy);
|
||||
}
|
||||
blankImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
|
||||
if (useragent.isOpera)
|
||||
blankImage.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;";
|
||||
|
||||
var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"];
|
||||
|
||||
|
|
@ -80,17 +76,19 @@ function DragdropHandler(mouseHandler) {
|
|||
}, 0);
|
||||
return e.preventDefault();
|
||||
}
|
||||
if (useragent.isOpera) {
|
||||
proxy.style.visibility = "visible";
|
||||
setTimeout(function(){
|
||||
proxy.style.visibility = "hidden";
|
||||
}, 0);
|
||||
}
|
||||
range = editor.getSelectionRange();
|
||||
|
||||
var dataTransfer = e.dataTransfer;
|
||||
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
|
||||
dataTransfer.clearData();
|
||||
dataTransfer.setData("Text", editor.session.getTextRange());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue