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

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,
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,

View File

@@ -12,6 +12,7 @@ export class KeyboardManager {
* @param {Object} options.layerManager 图层管理器实例
* @param {Function} options.pasteText 粘贴文本回调函数
* @param {Function} options.pasteImage 粘贴图片回调函数
* @param {Ref<Boolean>} 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();