mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 18:08:33 +02:00
add "copy image" context menu to also attachments, fixes #4514
This commit is contained in:
parent
a3783131a2
commit
8dbc592563
44
src/public/app/menus/image_context_menu.js
Normal file
44
src/public/app/menus/image_context_menu.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import utils from "../services/utils.js";
|
||||||
|
import contextMenu from "./context_menu.js";
|
||||||
|
import imageService from "../services/image.js";
|
||||||
|
|
||||||
|
const PROP_NAME = "imageContextMenuInstalled";
|
||||||
|
|
||||||
|
function setupContextMenu($image) {
|
||||||
|
if (!utils.isElectron() || $image.prop(PROP_NAME)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$image.prop(PROP_NAME, true);
|
||||||
|
$image.on('contextmenu', e => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
contextMenu.show({
|
||||||
|
x: e.pageX,
|
||||||
|
y: e.pageY,
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
title: "Copy reference to clipboard",
|
||||||
|
command: "copyImageReferenceToClipboard",
|
||||||
|
uiIcon: "bx bx-empty"
|
||||||
|
},
|
||||||
|
{title: "Copy image to clipboard", command: "copyImageToClipboard", uiIcon: "bx bx-empty"},
|
||||||
|
],
|
||||||
|
selectMenuItemHandler: ({command}) => {
|
||||||
|
if (command === 'copyImageReferenceToClipboard') {
|
||||||
|
imageService.copyImageReferenceToClipboard($image);
|
||||||
|
} else if (command === 'copyImageToClipboard') {
|
||||||
|
const webContents = utils.dynamicRequire('@electron/remote').getCurrentWebContents();
|
||||||
|
utils.dynamicRequire('electron');
|
||||||
|
webContents.copyImageAt(e.pageX, e.pageY);
|
||||||
|
} else {
|
||||||
|
throw new Error(`Unrecognized command '${command}'`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
setupContextMenu
|
||||||
|
};
|
@ -9,6 +9,7 @@ import linkService from "./link.js";
|
|||||||
import treeService from "./tree.js";
|
import treeService from "./tree.js";
|
||||||
import FNote from "../entities/fnote.js";
|
import FNote from "../entities/fnote.js";
|
||||||
import FAttachment from "../entities/fattachment.js";
|
import FAttachment from "../entities/fattachment.js";
|
||||||
|
import imageContextMenuService from "../menus/image_context_menu.js";
|
||||||
|
|
||||||
let idCounter = 1;
|
let idCounter = 1;
|
||||||
|
|
||||||
@ -148,6 +149,8 @@ function renderImage(entity, $renderedContent, options = {}) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
imageContextMenuService.setupContextMenu($img);
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderFile(entity, type, $renderedContent) {
|
function renderFile(entity, type, $renderedContent) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import utils from "../../services/utils.js";
|
import utils from "../../services/utils.js";
|
||||||
import TypeWidget from "./type_widget.js";
|
import TypeWidget from "./type_widget.js";
|
||||||
import libraryLoader from "../../services/library_loader.js";
|
import libraryLoader from "../../services/library_loader.js";
|
||||||
import contextMenu from "../../menus/context_menu.js";
|
import imageContextMenuService from "../../menus/image_context_menu.js";
|
||||||
import imageService from "../../services/image.js";
|
import imageService from "../../services/image.js";
|
||||||
|
|
||||||
const TPL = `
|
const TPL = `
|
||||||
@ -55,36 +55,7 @@ class ImageTypeWidget extends TypeWidget {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
if (utils.isElectron()) {
|
imageContextMenuService.setupContextMenu(this.$imageView);
|
||||||
// for browser, we want to let the native menu
|
|
||||||
this.$imageView.on('contextmenu', e => {
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
contextMenu.show({
|
|
||||||
x: e.pageX,
|
|
||||||
y: e.pageY,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
title: "Copy reference to clipboard",
|
|
||||||
command: "copyImageReferenceToClipboard",
|
|
||||||
uiIcon: "bx bx-empty"
|
|
||||||
},
|
|
||||||
{title: "Copy image to clipboard", command: "copyImageToClipboard", uiIcon: "bx bx-empty"},
|
|
||||||
],
|
|
||||||
selectMenuItemHandler: ({command}) => {
|
|
||||||
if (command === 'copyImageReferenceToClipboard') {
|
|
||||||
imageService.copyImageReferenceToClipboard(this.$imageWrapper);
|
|
||||||
} else if (command === 'copyImageToClipboard') {
|
|
||||||
const webContents = utils.dynamicRequire('@electron/remote').getCurrentWebContents();
|
|
||||||
utils.dynamicRequire('electron');
|
|
||||||
webContents.copyImageAt(e.pageX, e.pageY);
|
|
||||||
} else {
|
|
||||||
throw new Error(`Unrecognized command '${command}'`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
super.doRender();
|
super.doRender();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user