Fix modified polygon not being saved when editing IO note (#2762)

This commit is contained in:
Hikaru Y 2023-10-22 09:51:45 +09:00 committed by GitHub
parent 56f7d54900
commit f8edbcc686
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 12 deletions

View file

@ -13,6 +13,7 @@ import { notesDataStore, tagsWritable, zoomResetValue } from "./store";
import Toast from "./Toast.svelte"; import Toast from "./Toast.svelte";
import { addShapesToCanvasFromCloze } from "./tools/add-from-cloze"; import { addShapesToCanvasFromCloze } from "./tools/add-from-cloze";
import { enableSelectable, moveShapeToCanvasBoundaries } from "./tools/lib"; import { enableSelectable, moveShapeToCanvasBoundaries } from "./tools/lib";
import { modifiedPolygon } from "./tools/tool-polygon";
import { undoStack } from "./tools/tool-undo-redo"; import { undoStack } from "./tools/tool-undo-redo";
import type { Size } from "./types"; import type { Size } from "./types";
@ -103,7 +104,13 @@ function initCanvas(onChange: () => void): fabric.Canvas {
canvas.uniformScaling = false; canvas.uniformScaling = false;
canvas.uniScaleKey = "none"; canvas.uniScaleKey = "none";
moveShapeToCanvasBoundaries(canvas); moveShapeToCanvasBoundaries(canvas);
canvas.on("object:modified", onChange); canvas.on("object:modified", (evt) => {
if (evt.target instanceof fabric.Polygon) {
modifiedPolygon(canvas, evt.target);
undoStack.onObjectModified();
}
onChange();
});
canvas.on("object:removed", onChange); canvas.on("object:removed", onChange);
return canvas; return canvas;
} }

View file

@ -193,15 +193,11 @@ const generatePolygon = (canvas: fabric.Canvas, pointsList): void => {
undoStack.onObjectAdded(polygon.id); undoStack.onObjectAdded(polygon.id);
} }
polygon.on("modified", () => {
modifiedPolygon(canvas, polygon);
undoStack.onObjectModified();
});
toggleDrawPolygon(canvas); toggleDrawPolygon(canvas);
}; };
const modifiedPolygon = (canvas: fabric.Canvas, polygon: fabric.Polygon): void => { // https://github.com/fabricjs/fabric.js/issues/6522
export const modifiedPolygon = (canvas: fabric.Canvas, polygon: fabric.Polygon): void => {
const matrix = polygon.calcTransformMatrix(); const matrix = polygon.calcTransformMatrix();
const transformedPoints = polygon.get("points") const transformedPoints = polygon.get("points")
.map(function(p) { .map(function(p) {
@ -221,11 +217,6 @@ const modifiedPolygon = (canvas: fabric.Canvas, polygon: fabric.Polygon): void =
noScaleCache: false, noScaleCache: false,
}); });
polygon1.on("modified", () => {
modifiedPolygon(canvas, polygon1);
undoStack.onObjectModified();
});
canvas.remove(polygon); canvas.remove(polygon);
canvas.add(polygon1); canvas.add(polygon1);
}; };