Prevent that content of upload box is lost on fast pasting many images Change-Id: I41369e8fde03111143102eb04fee4fbc65aae7f0 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadByDropOrPastePanel.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadByDropOrPastePanel.java index 7e559a6..a34d0ec 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadByDropOrPastePanel.java +++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadByDropOrPastePanel.java
@@ -47,8 +47,12 @@ } } + var imagareSavedContent; + $wnd.imagarePasteHandler = function handlePaste(elem, e) { - var savedContent = elem.innerHTML; + if (!imagareSavedContent) { + imagareSavedContent = elem.innerHTML; + } var clipboardData = e.clipboardData || e.originalEvent.clipboardData; var items = clipboardData.items; @@ -83,34 +87,33 @@ elem.innerHTML = ""; } - waitOnPaste(10, elem, savedContent); + waitOnPaste(10, elem); } else { // other browser elem.innerHTML = ""; - waitOnPaste(10, elem, savedContent); + waitOnPaste(10, elem); } } - function waitOnPaste(max, elem, savedContent) { + function waitOnPaste(max, elem) { if (elem.childNodes && elem.childNodes.length > 0) { - stageImage(elem, savedContent); + stageImage(elem); } else if (max > 0) { that = { m: max - 1, e: elem, - s: savedContent } that.callself = function () { - waitOnPaste(that.m, that.e, that.s) + waitOnPaste(that.m, that.e) } setTimeout(that.callself, 20); } } - function stageImage(elem, savedContent) { + function stageImage(elem) { var imageData = elem.childNodes[0].getAttribute("src"); - elem.innerHTML = savedContent; + elem.innerHTML = imagareSavedContent; @com.googlesource.gerrit.plugins.imagare.client.ImageUploader::stageImage(Ljava/lang/String;)(imageData); } @@ -118,12 +121,14 @@ if (window.chrome) { event.preventDefault(); } - var savedContent = elem.innerHTML; + if (!imagareSavedContent) { + imagareSavedContent = elem.innerHTML; + } var f = event.dataTransfer.files[0]; if (f) { var r = new FileReader(); r.onload = function(e) { - elem.innerHTML = savedContent; + elem.innerHTML = imagareSavedContent; if (f.type.match('image/.*')) { @com.googlesource.gerrit.plugins.imagare.client.ImageUploader::stageImage(Ljava/lang/String;Ljava/lang/String;)(e.target.result, f.name); } else {