红绿图模式禁用一些快捷键功能

This commit is contained in:
李志鹏
2025-11-13 16:32:35 +08:00
parent 917aea07e1
commit e806e0da73
2 changed files with 9 additions and 2 deletions

View File

@@ -305,14 +305,13 @@ onMounted(async () => {
commandManager, commandManager,
layerManager, layerManager,
toolManager, toolManager,
isRedGreenMode,
pasteText: (text) => { pasteText: (text) => {
// console.log("粘贴的文本:", text); // console.log("粘贴的文本:", text);
if (isRedGreenMode.value) return;
handleAddText(text); handleAddText(text);
}, },
pasteImage: (file) => { pasteImage: (file) => {
// console.log("粘贴的图片:", file); // console.log("粘贴的图片:", file);
if (isRedGreenMode.value) return;
uploadImageAndCreateLayer({ uploadImageAndCreateLayer({
file, file,
layerManager, layerManager,

View File

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