From 289bddc9172011b34e5cddd6fe54ab5ee3828733 Mon Sep 17 00:00:00 2001 From: Ryan Reilly Date: Thu, 4 Apr 2024 12:23:24 -0400 Subject: [PATCH] Proof mode does not prevent CTRL+Y on clear --- src/ProofHistory/ProofHistory.ts | 2 +- src/TreeContext.ts | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/ProofHistory/ProofHistory.ts b/src/ProofHistory/ProofHistory.ts index 20ad9322..b18ee945 100644 --- a/src/ProofHistory/ProofHistory.ts +++ b/src/ProofHistory/ProofHistory.ts @@ -86,5 +86,5 @@ export function deleteButtons(stopIndex: number): void { * Removes the most recent move's button from the proof bar. */ export function deleteMostRecentButton(): void { - document.getElementById("Row: " + TreeContext.proof.length)?.remove(); + document.getElementById("Row: " + (TreeContext.proof.length + 1))?.remove(); } diff --git a/src/TreeContext.ts b/src/TreeContext.ts index 70c5948c..fb2a9d7b 100644 --- a/src/TreeContext.ts +++ b/src/TreeContext.ts @@ -147,17 +147,22 @@ export class TreeContext { */ public static undoProofStep(): void { if (this.proof.length <= 1) { - this.clearProof(); return; } - const stepToRemove: ProofModeNode = this.proof[this.proof.length - 1]; + const mostRecentStep: ProofModeNode | undefined = this.proof.pop(); + + if (mostRecentStep === undefined) { + return; + } else if (this.proof.length === 0) { + deleteMostRecentButton(); + return; + } deleteMostRecentButton(); - this.proofHistoryRedoStack.push(stepToRemove); + this.proofHistoryRedoStack.push(mostRecentStep); - this.proof.pop(); stepBack(this.proof[this.proof.length - 1]); redrawProof(); @@ -174,7 +179,13 @@ export class TreeContext { const mostRecentStep: ProofModeNode | undefined = this.proofHistoryRedoStack.pop(); - if (mostRecentStep === undefined || this.proof[this.proof.length - 1] === undefined) { + if (mostRecentStep === undefined) { + return; + } else if ( + this.proofHistoryRedoStack[this.proofHistoryRedoStack.length - 1] === undefined + ) { + this.pushToProof(mostRecentStep); + redrawProof(); return; } @@ -182,7 +193,7 @@ export class TreeContext { this.pushToProof(mostRecentStep); - stepBack(this.proof[this.proof.length - 1]); + stepBack(mostRecentStep); redrawProof(); }