From 8d1545bb7efd9cba1e5bae4d30831a878c09f29c Mon Sep 17 00:00:00 2001 From: Dariusz L Date: Thu, 14 Aug 2025 14:59:28 +0200 Subject: [PATCH] Fix context menu canvas access issues ix context menu canvas access paths to properly reference canvasWidget.canvas methods instead of canvasWidget directly. --- js/CanvasView.js | 28 ++++++++++++++-------------- src/CanvasView.ts | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/js/CanvasView.js b/js/CanvasView.js index bdc0f65..e2d94bc 100644 --- a/js/CanvasView.js +++ b/js/CanvasView.js @@ -1296,8 +1296,8 @@ app.registerExtension({ callback: async () => { try { log.info("Opening LayerForge canvas in MaskEditor"); - if (self.canvasWidget && self.canvasWidget.startMaskEditor) { - await self.canvasWidget.startMaskEditor(null, true); + if (self.canvasWidget && self.canvasWidget.canvas) { + await self.canvasWidget.canvas.startMaskEditor(null, true); } else { log.error("Canvas widget not available"); @@ -1314,9 +1314,9 @@ app.registerExtension({ content: "Open Image", callback: async () => { try { - if (!self.canvasWidget) + if (!self.canvasWidget || !self.canvasWidget.canvas) return; - const blob = await self.canvasWidget.getFlattenedCanvasAsBlob(); + const blob = await self.canvasWidget.canvas.canvasLayers.getFlattenedCanvasAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); @@ -1332,9 +1332,9 @@ app.registerExtension({ content: "Open Image with Mask Alpha", callback: async () => { try { - if (!self.canvasWidget) + if (!self.canvasWidget || !self.canvasWidget.canvas) return; - const blob = await self.canvasWidget.getFlattenedCanvasWithMaskAsBlob(); + const blob = await self.canvasWidget.canvas.canvasLayers.getFlattenedCanvasWithMaskAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); @@ -1350,9 +1350,9 @@ app.registerExtension({ content: "Copy Image", callback: async () => { try { - if (!self.canvasWidget) + if (!self.canvasWidget || !self.canvasWidget.canvas) return; - const blob = await self.canvasWidget.getFlattenedCanvasAsBlob(); + const blob = await self.canvasWidget.canvas.canvasLayers.getFlattenedCanvasAsBlob(); if (!blob) return; const item = new ClipboardItem({ 'image/png': blob }); @@ -1369,9 +1369,9 @@ app.registerExtension({ content: "Copy Image with Mask Alpha", callback: async () => { try { - if (!self.canvasWidget) + if (!self.canvasWidget || !self.canvasWidget.canvas) return; - const blob = await self.canvasWidget.getFlattenedCanvasWithMaskAsBlob(); + const blob = await self.canvasWidget.canvas.canvasLayers.getFlattenedCanvasWithMaskAsBlob(); if (!blob) return; const item = new ClipboardItem({ 'image/png': blob }); @@ -1388,9 +1388,9 @@ app.registerExtension({ content: "Save Image", callback: async () => { try { - if (!self.canvasWidget) + if (!self.canvasWidget || !self.canvasWidget.canvas) return; - const blob = await self.canvasWidget.getFlattenedCanvasAsBlob(); + const blob = await self.canvasWidget.canvas.canvasLayers.getFlattenedCanvasAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); @@ -1411,9 +1411,9 @@ app.registerExtension({ content: "Save Image with Mask Alpha", callback: async () => { try { - if (!self.canvasWidget) + if (!self.canvasWidget || !self.canvasWidget.canvas) return; - const blob = await self.canvasWidget.getFlattenedCanvasWithMaskAsBlob(); + const blob = await self.canvasWidget.canvas.canvasLayers.getFlattenedCanvasWithMaskAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); diff --git a/src/CanvasView.ts b/src/CanvasView.ts index 955f4cc..8584880 100644 --- a/src/CanvasView.ts +++ b/src/CanvasView.ts @@ -1490,8 +1490,8 @@ app.registerExtension({ callback: async () => { try { log.info("Opening LayerForge canvas in MaskEditor"); - if ((self as any).canvasWidget && (self as any).canvasWidget.startMaskEditor) { - await (self as any).canvasWidget.startMaskEditor(null, true); + if ((self as any).canvasWidget && (self as any).canvasWidget.canvas) { + await (self as any).canvasWidget.canvas.startMaskEditor(null, true); } else { log.error("Canvas widget not available"); showErrorNotification("Canvas not ready. Please try again."); @@ -1506,8 +1506,8 @@ app.registerExtension({ content: "Open Image", callback: async () => { try { - if (!(self as any).canvasWidget) return; - const blob = await (self as any).canvasWidget.getFlattenedCanvasAsBlob(); + if (!(self as any).canvasWidget || !(self as any).canvasWidget.canvas) return; + const blob = await (self as any).canvasWidget.canvas.canvasLayers.getFlattenedCanvasAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); window.open(url, '_blank'); @@ -1521,8 +1521,8 @@ app.registerExtension({ content: "Open Image with Mask Alpha", callback: async () => { try { - if (!(self as any).canvasWidget) return; - const blob = await (self as any).canvasWidget.getFlattenedCanvasWithMaskAsBlob(); + if (!(self as any).canvasWidget || !(self as any).canvasWidget.canvas) return; + const blob = await (self as any).canvasWidget.canvas.canvasLayers.getFlattenedCanvasWithMaskAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); window.open(url, '_blank'); @@ -1536,8 +1536,8 @@ app.registerExtension({ content: "Copy Image", callback: async () => { try { - if (!(self as any).canvasWidget) return; - const blob = await (self as any).canvasWidget.getFlattenedCanvasAsBlob(); + if (!(self as any).canvasWidget || !(self as any).canvasWidget.canvas) return; + const blob = await (self as any).canvasWidget.canvas.canvasLayers.getFlattenedCanvasAsBlob(); if (!blob) return; const item = new ClipboardItem({'image/png': blob}); await navigator.clipboard.write([item]); @@ -1552,8 +1552,8 @@ app.registerExtension({ content: "Copy Image with Mask Alpha", callback: async () => { try { - if (!(self as any).canvasWidget) return; - const blob = await (self as any).canvasWidget.getFlattenedCanvasWithMaskAsBlob(); + if (!(self as any).canvasWidget || !(self as any).canvasWidget.canvas) return; + const blob = await (self as any).canvasWidget.canvas.canvasLayers.getFlattenedCanvasWithMaskAsBlob(); if (!blob) return; const item = new ClipboardItem({'image/png': blob}); await navigator.clipboard.write([item]); @@ -1568,8 +1568,8 @@ app.registerExtension({ content: "Save Image", callback: async () => { try { - if (!(self as any).canvasWidget) return; - const blob = await (self as any).canvasWidget.getFlattenedCanvasAsBlob(); + if (!(self as any).canvasWidget || !(self as any).canvasWidget.canvas) return; + const blob = await (self as any).canvasWidget.canvas.canvasLayers.getFlattenedCanvasAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); const a = document.createElement('a'); @@ -1588,8 +1588,8 @@ app.registerExtension({ content: "Save Image with Mask Alpha", callback: async () => { try { - if (!(self as any).canvasWidget) return; - const blob = await (self as any).canvasWidget.getFlattenedCanvasWithMaskAsBlob(); + if (!(self as any).canvasWidget || !(self as any).canvasWidget.canvas) return; + const blob = await (self as any).canvasWidget.canvas.canvasLayers.getFlattenedCanvasWithMaskAsBlob(); if (!blob) return; const url = URL.createObjectURL(blob); const a = document.createElement('a');