fx-compat: Tweak image copying to clipboard

This commit is contained in:
Martynas Bagdonas 2022-09-06 17:05:52 +03:00
parent 80385ff893
commit 75a080b7cb
2 changed files with 9 additions and 11 deletions

View file

@ -125,12 +125,11 @@ class EditorInstance {
.createInstance(Components.interfaces.nsITransferable);
let clipboardService = Components.classes['@mozilla.org/widget/clipboard;1']
.getService(Components.interfaces.nsIClipboard);
let imgPtr = Components.classes["@mozilla.org/supports-interface-pointer;1"]
.createInstance(Components.interfaces.nsISupportsInterfacePointer);
imgPtr.data = imgTools.decodeImageFromArrayBuffer(u8arr.buffer, mime);
let img = imgTools.decodeImageFromArrayBuffer(u8arr.buffer, mime);
transferable.init(null);
transferable.addDataFlavor(mime);
transferable.setTransferData(mime, imgPtr, 0);
let kNativeImageMime = 'application/x-moz-nativeimage';
transferable.addDataFlavor(kNativeImageMime);
transferable.setTransferData(kNativeImageMime, img);
clipboardService.setData(transferable, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
};

View file

@ -403,6 +403,7 @@ class ReaderInstance {
if (!parts[0].includes('base64')) {
return;
}
let mime = parts[0].match(/:(.*?);/)[1];
let bstr = atob(parts[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
@ -415,13 +416,11 @@ class ReaderInstance {
.createInstance(Components.interfaces.nsITransferable);
let clipboardService = Components.classes['@mozilla.org/widget/clipboard;1']
.getService(Components.interfaces.nsIClipboard);
let imgPtr = Components.classes["@mozilla.org/supports-interface-pointer;1"]
.createInstance(Components.interfaces.nsISupportsInterfacePointer);
let mimeType = `image/png`;
imgPtr.data = imgTools.decodeImageFromArrayBuffer(u8arr.buffer, mimeType);
let img = imgTools.decodeImageFromArrayBuffer(u8arr.buffer, mime);
transferable.init(null);
transferable.addDataFlavor(mimeType);
transferable.setTransferData(mimeType, imgPtr, 0);
let kNativeImageMime = 'application/x-moz-nativeimage';
transferable.addDataFlavor(kNativeImageMime);
transferable.setTransferData(kNativeImageMime, img);
clipboardService.setData(transferable, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
};