diff --git a/src/component/Canvas/CanvasEditor/index.vue b/src/component/Canvas/CanvasEditor/index.vue index e6fc380f..9774ab35 100644 --- a/src/component/Canvas/CanvasEditor/index.vue +++ b/src/component/Canvas/CanvasEditor/index.vue @@ -305,14 +305,13 @@ onMounted(async () => { commandManager, layerManager, toolManager, + isRedGreenMode, pasteText: (text) => { // console.log("粘贴的文本:", text); - if (isRedGreenMode.value) return; handleAddText(text); }, pasteImage: (file) => { // console.log("粘贴的图片:", file); - if (isRedGreenMode.value) return; uploadImageAndCreateLayer({ file, layerManager, diff --git a/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js b/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js index 3e76ec9d..49c1e110 100644 --- a/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js +++ b/src/component/Canvas/CanvasEditor/managers/events/KeyboardManager.js @@ -12,6 +12,7 @@ export class KeyboardManager { * @param {Object} options.layerManager 图层管理器实例 * @param {Function} options.pasteText 粘贴文本回调函数 * @param {Function} options.pasteImage 粘贴图片回调函数 + * @param {Ref} options.isRedGreenMode 是否为红绿模式 * @param {HTMLElement} options.container 容器元素,用于添加事件监听 */ constructor(options = {}) { @@ -21,6 +22,7 @@ export class KeyboardManager { this.container = options.container || document; this.pasteText = options.pasteText || (() => {}); this.pasteImage = options.pasteImage || (() => {}); + this.isRedGreenMode = options.isRedGreenMode; // 检测平台类型 this.platform = this.detectPlatform(); @@ -207,6 +209,7 @@ export class KeyboardManager { */ handlePaste(event) { event.preventDefault(); // 阻止默认粘贴行为 + if(this.isRedGreenMode.value) return; const text = event.clipboardData?.getData("text/plain") || ""; if(/^aida_copy_canvas_layer/.test(text)) return; const items = event.clipboardData?.items || []; @@ -429,30 +432,35 @@ export class KeyboardManager { case "copy": // 复制逻辑 console.log("复制当前选中图层"); + if(this.isRedGreenMode.value) return; this.layerManager.copyLayer(this.layerManager.activeLayerId.value); break; case "paste": // 粘贴逻辑 console.log("粘贴"); + if(this.isRedGreenMode.value) return; this.layerManager.pasteLayer(); break; case "cut": // 剪切逻辑 console.log("剪切"); + if(this.isRedGreenMode.value) return; this.layerManager.cutLayer(this.layerManager.activeLayerId.value); break; case "delete": // 删除逻辑 console.log("删除"); + if(this.isRedGreenMode.value) return; this.layerManager.removeLayer(this.layerManager.activeLayerId.value); break; case "selectAll": // 全选逻辑 console.log("全选"); + if(this.isRedGreenMode.value) return; // 这里需要实现全选逻辑 TODO: 是否在选择模式下才可以全选? if (this.layerManager) { this.layerManager.selectAll();