Skip to content

Commit

Permalink
fix: set clipboard data function. Close #154
Browse files Browse the repository at this point in the history
  • Loading branch information
ChugunovRoman committed Jan 10, 2021
1 parent 2855f93 commit ca6d270
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 13 deletions.
5 changes: 5 additions & 0 deletions @types/Renderer/webApi.d.ts
Expand Up @@ -34,4 +34,9 @@ declare namespace WebApi {
},
];
}

interface SetClipboardData {
format: string;
data: Uint8Array;
}
}
5 changes: 5 additions & 0 deletions @types/index.d.ts
Expand Up @@ -86,6 +86,10 @@ declare namespace Electron {
on(channel: "set-default-theme", listener: (event: IpcMainInvokeEvent) => void): this;
on(channel: "saveCreatorTheme", listener: (event: IpcMainInvokeEvent, theme: Themes.Theme) => void): this;
on(channel: "sync-themes", listener: (event: IpcMainInvokeEvent) => void): this;
on(
channel: "set-clipboard-data",
listener: (event: IpcMainInvokeEvent, data: WebApi.SetClipboardData) => void,
): this;

handle(
channel: "writeNewExtensionToDisk",
Expand Down Expand Up @@ -171,6 +175,7 @@ declare namespace Electron {
send(channel: "set-default-theme"): this;
send(channel: "saveCreatorTheme", theme: Themes.Theme): this;
send(channel: "sync-themes"): this;
send(channel: "set-clipboard-data", data: WebApi.SetClipboardData): this;

invoke(channel: "writeNewExtensionToDisk", data: WebApi.WriteNewExtensionToDiskArgs): Promise<number>;
invoke(channel: "getAllLocalFileExtensionIds"): Promise<number[]>;
Expand Down
14 changes: 14 additions & 0 deletions src/main/window/WindowManager.ts
Expand Up @@ -422,6 +422,20 @@ class WindowManager {
}
logger.debug("Sync themes end");
});
E.ipcMain.on("set-clipboard-data", (event, data) => {
const format = data.format;
const buffer = Buffer.from(data.data);

if (["image/jpeg", "image/png"].indexOf(format) !== -1) {
E.clipboard.writeImage(E.nativeImage.createFromBuffer(buffer));
} else if (format === "image/svg+xml") {
E.clipboard.writeText(buffer.toString());
} else if (format === "application/pdf") {
E.clipboard.writeBuffer("Portable Document Format", buffer);
} else {
E.clipboard.writeBuffer(format, buffer);
}
});

E.app.on("toggle-current-tab-devtools", () => {
toggleDetachedDevTools(this.lastFocusedTab);
Expand Down
15 changes: 2 additions & 13 deletions src/middleware/webBinding.ts
Expand Up @@ -481,19 +481,8 @@ const publicAPI: any = {
});
},

setClipboardData(args: any) {
const format = args.format;
const data = Buffer.from(args.data);

if (["image/jpeg", "image/png"].indexOf(format) !== -1) {
E.clipboard.writeImage(E.remote.nativeImage.createFromBuffer(data));
} else if (format === "image/svg+xml") {
E.clipboard.writeText(data.toString());
} else if (format === "application/pdf") {
E.clipboard.writeBuffer("Portable Document Format", data);
} else {
E.clipboard.writeBuffer(format, data);
}
setClipboardData(args: WebApi.SetClipboardData) {
E.ipcRenderer.send("set-clipboard-data", args);
},

async writeFiles(args: WebApi.WriteFiles) {
Expand Down

0 comments on commit ca6d270

Please sign in to comment.