mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 13:39:01 +01: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