Fix rerender during undo and redo stack.

This commit is contained in:
CrossPr0duct committed 2025-02-24 20:31:31 -05:00
1 parent 4aece4045f
commit ffd52845e5
4 files changed
+14 -3

No files matched your search

@@ -49,7 +49,8 @@ export class CommandManager {
this.undoStackManagerRef = engineRefs.undoStackManagerRef;
}
createNode(node: VideoNode | ImageNode | TextNode | ShapeNode | PaintNode) {
createNode(node: MediaNode) {
console.log("CREATE?!?!?!?!")
const command = new CreateCommand({
nodes: new Set<MediaNode>([node]),
mediaLayerRef: this.mediaLayerRef,
@@ -63,6 +64,7 @@ export class CommandManager {
// Set the kNode's manual id to same as kNode's internal _id
// This helps identify the kNode in the Konva layer with find
node.kNode.id(node.kNode._id.toString());
this.renderEngineRef.render();
}
deleteNodes() {
const nodes = this.selectionManagerRef.getSelectedNodes();
@@ -75,6 +77,7 @@ export class CommandManager {
renderEngineRef: this.renderEngineRef,
});
this.undoStackManagerRef.executeCommand(command);
this.renderEngineRef.render();
}
toggleLockNodes() {
const nodes = this.selectionManagerRef.getSelectedNodes();
@@ -102,6 +105,7 @@ export class CommandManager {
mediaLayerRef: this.mediaLayerRef,
});
this.undoStackManagerRef.executeCommand(command);
this.renderEngineRef.render();
}
moveNodesDown() {
const command = new MoveLayerDown({
@@ -110,6 +114,7 @@ export class CommandManager {
mediaLayerRef: this.mediaLayerRef,
});
this.undoStackManagerRef.executeCommand(command);
this.renderEngineRef.render();
}
translateNodes(props: {
nodes: Set<MediaNode>;
@@ -121,6 +126,7 @@ export class CommandManager {
layerRef: this.mediaLayerRef,
});
this.undoStackManagerRef.pushCommand(command);
}
transformNodes(props: {
nodes: Set<MediaNode>;
@@ -541,6 +541,7 @@ export class RealTimeDrawEngine {
console.log(this.imageNodes)
node.kNode.on("dragend", this.handleNodeDragEnd);
}
await this.render();
}
public removeNodes(node: MediaNode) {
@@ -550,7 +551,7 @@ export class RealTimeDrawEngine {
node.kNode.off("dragend", this.handleNodeDragEnd);
this.videoNodes.splice(index, 1);
}
} else if (node instanceof ImageNode || node instanceof TextNode) {
} else if (node instanceof ImageNode || node instanceof TextNode || node instanceof ShapeNode || node instanceof PaintNode) {
const index = this.imageNodes.indexOf(node);
if (index > -1) {
node.kNode.off("dragend", this.handleNodeDragEnd);
@@ -53,6 +53,7 @@ export class CreateCommand implements ICommand {
this.renderEngineRef.addNodes(node);
});
this.mediaLayerRef.draw();
}
undo() {
@@ -71,5 +72,7 @@ export class CreateCommand implements ICommand {
this.nodeTransformerRef.clear();
toolbarNode.hide();
this.mediaLayerRef.draw();
this.renderEngineRef.render();
}
}
@@ -3,10 +3,11 @@ import { NodeType, BaseNode, ImageNode, TextNode, VideoNode, ShapeNode } from ".
import { TransformationData } from "./Transformation";
import { TextNodeData } from "./Text";
import { PaintNode } from "../Nodes/PaintNode";
export type MediaNode =
// | NetworkedNode
BaseNode | VideoNode | ImageNode | TextNode | ShapeNode;
BaseNode | VideoNode | ImageNode | TextNode | ShapeNode | PaintNode;
export type ImageNodeData = {
mediaFileUrl: string;