Merge pull request #107 from PrefacedCorg/beta

fix:issue #93
This commit is contained in:
CJK_mkp
2025-07-28 02:02:57 +08:00
committed by GitHub
2 changed files with 18 additions and 1 deletions
@@ -29,6 +29,15 @@ namespace Ink_Canvas {
TimeMachineHistories[0] = timeMachineHistory; TimeMachineHistories[0] = timeMachineHistory;
timeMachine.ClearStrokeHistory(); timeMachine.ClearStrokeHistory();
} else { } else {
// 新增:提交所有图片元素到时间机器历史记录
foreach (var child in inkCanvas.Children)
{
if (child is Image img)
{
timeMachine.CommitElementInsertHistory(img);
}
}
var timeMachineHistory = timeMachine.ExportTimeMachineHistory(); var timeMachineHistory = timeMachine.ExportTimeMachineHistory();
TimeMachineHistories[CurrentWhiteboardIndex] = timeMachineHistory; TimeMachineHistories[CurrentWhiteboardIndex] = timeMachineHistory;
timeMachine.ClearStrokeHistory(); timeMachine.ClearStrokeHistory();
@@ -71,6 +80,14 @@ namespace Ink_Canvas {
foreach (var item in TimeMachineHistories[0]) ApplyHistoryToCanvas(item); foreach (var item in TimeMachineHistories[0]) ApplyHistoryToCanvas(item);
} else { } else {
timeMachine.ImportTimeMachineHistory(TimeMachineHistories[CurrentWhiteboardIndex]); timeMachine.ImportTimeMachineHistory(TimeMachineHistories[CurrentWhiteboardIndex]);
// 新增:通过时间机器历史恢复图片
foreach (var item in TimeMachineHistories[CurrentWhiteboardIndex])
{
if (item.CommitType == TimeMachineHistoryType.ElementInsert)
{
inkCanvas.Children.Add(item.InsertedElement);
}
}
foreach (var item in TimeMachineHistories[CurrentWhiteboardIndex]) ApplyHistoryToCanvas(item); foreach (var item in TimeMachineHistories[CurrentWhiteboardIndex]) ApplyHistoryToCanvas(item);
// 恢复当前页图片信息 // 恢复当前页图片信息
inkCanvas.Children.Clear(); inkCanvas.Children.Clear();
+1 -1
View File
@@ -130,7 +130,7 @@ namespace Ink_Canvas {
canvas.Strokes.Remove(currentStroke); canvas.Strokes.Remove(currentStroke);
} }
} else if (item.CommitType == TimeMachineHistoryType.ElementInsert) { } else if (item.CommitType == TimeMachineHistoryType.ElementInsert) {
if (!item.StrokeHasBeenCleared) { if (item.StrokeHasBeenCleared) {
// Undo: 移除元素 // Undo: 移除元素
if (item.InsertedElement != null && inkCanvas.Children.Contains(item.InsertedElement)) if (item.InsertedElement != null && inkCanvas.Children.Contains(item.InsertedElement))
inkCanvas.Children.Remove(item.InsertedElement); inkCanvas.Children.Remove(item.InsertedElement);