Skip to content

Commit 07e2d35

Browse files
Fixed undo not working properly
1 parent 987588d commit 07e2d35

File tree

7 files changed

+21
-17
lines changed

7 files changed

+21
-17
lines changed

src/@types/Canvas.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ export interface CanvasNode extends CanvasElement {
232232

233233
color: string
234234

235-
setData(data: CanvasNodeData): void
235+
setData(data: CanvasNodeData, addHistory?: boolean): void
236236
getData(): CanvasNodeData
237237
}
238238

@@ -297,7 +297,7 @@ export interface CanvasEdge extends CanvasElement {
297297
render(): void
298298
updatePath(): void
299299

300-
setData(data: CanvasEdgeData): void
300+
setData(data: CanvasEdgeData, addHistory?: boolean): void
301301
getData(): CanvasEdgeData
302302
}
303303

src/canvas-extensions/edge-styles-canvas-extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,13 @@ export default class EdgeStylesCanvasExtension {
133133

134134
private setStyleForSelection(_canvas: Canvas, selectedEdges: CanvasEdge[], styleId: string|undefined) {
135135
for (const edge of selectedEdges) {
136-
edge.setData({ ...edge.getData(), edgeStyle: styleId as any })
136+
edge.setData({ ...edge.getData(), edgeStyle: styleId as any }, true)
137137
}
138138
}
139139

140140
private setPathRouteForSelection(_canvas: Canvas, selectedEdges: CanvasEdge[], pathRouteTypeId: string|undefined) {
141141
for (const edge of selectedEdges) {
142-
edge.setData({ ...edge.getData(), edgePathRoute: pathRouteTypeId as any })
142+
edge.setData({ ...edge.getData(), edgePathRoute: pathRouteTypeId as any }, true)
143143
}
144144
}
145145

src/canvas-extensions/node-styles-canvas-extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ export default class NodeStylesCanvasExtension {
141141
const node = canvas.nodes.get(nodeData.id)
142142
if (!node) continue
143143

144-
node.setData({ ...nodeData, shape: shapeId })
144+
node.setData({ ...nodeData, shape: shapeId }, true)
145145
}
146146
}
147147

@@ -152,7 +152,7 @@ export default class NodeStylesCanvasExtension {
152152
const node = canvas.nodes.get(nodeData.id)
153153
if (!node) continue
154154

155-
node.setData({ ...nodeData, borderStyle: borderId })
155+
node.setData({ ...nodeData, borderStyle: borderId }, true)
156156
}
157157
}
158158
}

src/canvas-extensions/presentation-canvas-extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ export default class PresentationCanvasExtension {
164164
const startNode = this.getStartNode(canvas)
165165
if (startNode) startNode.setData({ ...startNode.getData(), isStartNode: false })
166166

167-
if (node !== startNode) node.setData({ ...node.getData(), isStartNode: true })
167+
if (node !== startNode) node.setData({ ...node.getData(), isStartNode: true }, true)
168168
}
169169

170170
private getDefaultSlideSize(): Size {

src/canvas-extensions/properties-canvas-extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export default class PropertiesCanvasExtension {
3939
canvas.wrapperEl.classList.remove(cssclass)
4040
})
4141

42-
this.previousCssclasses = canvas.metadata.properties?.cssclasses || []
42+
this.previousCssclasses = canvas.metadata?.properties?.cssclasses || []
4343
this.previousCssclasses.forEach((cssclass) => {
4444
canvas.wrapperEl.classList.add(cssclass)
4545
})

src/core/canvas-patcher.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import AdvancedCanvasPlugin from "src/main"
2-
import { BBox, Canvas, CanvasData, CanvasEdge, CanvasElement, CanvasNode, CanvasView } from "src/@types/Canvas"
2+
import { BBox, Canvas, CanvasData, CanvasEdge, CanvasEdgeData, CanvasElement, CanvasNode, CanvasNodeData, CanvasView } from "src/@types/Canvas"
33
import { patchObjectInstance, patchObjectPrototype } from "src/utils/patch-helper"
44
import { CanvasEvent } from "./events"
55
import { WorkspaceLeaf } from "obsidian"
@@ -191,8 +191,8 @@ export default class CanvasPatcher {
191191
const that = this
192192

193193
patchObjectInstance(this.plugin, node, {
194-
setData: (next: any) => function (...args: any) {
195-
const result = next.call(this, ...args)
194+
setData: (next: any) => function (data: CanvasNodeData, addHistory?: boolean) {
195+
const result = next.call(this, data)
196196

197197
if (node.initialized && !node.isDirty) {
198198
node.isDirty = true
@@ -204,6 +204,9 @@ export default class CanvasPatcher {
204204
this.canvas.data = this.canvas.getData()
205205
this.canvas.view.requestSave()
206206

207+
// Add to the undo stack
208+
if (addHistory) this.canvas.pushHistory(this.canvas.getData())
209+
207210
return result
208211
},
209212
getBBox: (next: any) => function (...args: any) {
@@ -223,8 +226,8 @@ export default class CanvasPatcher {
223226
const that = this
224227

225228
patchObjectInstance(this.plugin, edge, {
226-
setData: (next: any) => function (...args: any) {
227-
const result = next.call(this, ...args)
229+
setData: (next: any) => function (data: CanvasEdgeData, addHistory?: boolean) {
230+
const result = next.call(this, data)
228231

229232
if (edge.initialized && !edge.isDirty) {
230233
edge.isDirty = true
@@ -236,6 +239,9 @@ export default class CanvasPatcher {
236239
this.canvas.data = this.canvas.getData()
237240
this.canvas.view.requestSave()
238241

242+
// Add to the undo stack
243+
if (addHistory) this.canvas.pushHistory(this.canvas.getData())
244+
239245
return result
240246
},
241247
render: (next: any) => function (...args: any) {

src/utils/modal-helper.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,8 @@ export class FileSelectModal extends SuggestModal<string> {
9090
this.onChooseSuggestion = (path: string, _evt: MouseEvent | KeyboardEvent) => {
9191
const file = this.app.vault.getAbstractFileByPath(path)
9292

93-
if (file instanceof TFile) {
94-
resolve(file)
95-
return
96-
}
93+
if (file instanceof TFile)
94+
return resolve(file)
9795

9896
if (!this.suggestNewFile) return
9997

0 commit comments

Comments
 (0)