[BugFix] 修复切换页面时无法保存墨迹的Bug

This commit is contained in:
Raspberry-Monster 2023-04-22 10:50:50 +08:00
parent 5ccf315efe
commit eda13ffe19
No known key found for this signature in database
GPG Key ID: 9A0D725BB122D507
2 changed files with 24 additions and 22 deletions

View File

@ -25,8 +25,7 @@ namespace Ink_Canvas.Helpers
}
_currentStrokeHistory.Add(new TimeMachineHistory(stroke, TimeMachineHistoryType.UserInput, false));
_currentIndex = _currentStrokeHistory.Count - 1;
OnUndoStateChanged?.Invoke(true);
OnRedoStateChanged?.Invoke(false);
NotifyUndoRedoState();
}
public void CommitStrokeShapeHistory(StrokeCollection strokeToBeReplaced, StrokeCollection generatedStroke)
@ -40,8 +39,7 @@ namespace Ink_Canvas.Helpers
false,
strokeToBeReplaced));
_currentIndex = _currentStrokeHistory.Count - 1;
OnUndoStateChanged?.Invoke(true);
OnRedoStateChanged?.Invoke(false);
NotifyUndoRedoState();
}
public void CommitStrokeEraseHistory(StrokeCollection stroke, StrokeCollection sourceStroke = null)
@ -52,16 +50,14 @@ namespace Ink_Canvas.Helpers
}
_currentStrokeHistory.Add(new TimeMachineHistory(stroke, TimeMachineHistoryType.Clear, true, sourceStroke));
_currentIndex = _currentStrokeHistory.Count - 1;
OnUndoStateChanged?.Invoke(true);
OnRedoStateChanged?.Invoke(false);
NotifyUndoRedoState();
}
public void ClearStrokeHistory()
{
_currentStrokeHistory.Clear();
_currentIndex = -1;
OnUndoStateChanged?.Invoke(true);
OnRedoStateChanged?.Invoke(false);
NotifyUndoRedoState();
}
public TimeMachineHistory Undo()
{
@ -77,8 +73,7 @@ namespace Ink_Canvas.Helpers
{
var item = _currentStrokeHistory[++_currentIndex];
item.StrokeHasBeenCleared = !item.StrokeHasBeenCleared;
OnUndoStateChanged?.Invoke(_currentIndex > -1);
if (_currentIndex != -1) OnRedoStateChanged?.Invoke(_currentStrokeHistory.Count - _currentIndex - 1 > 0);
NotifyUndoRedoState();
return item;
}
public TimeMachineHistory[] ExportTimeMachineHistory()
@ -95,9 +90,13 @@ namespace Ink_Canvas.Helpers
_currentStrokeHistory.Clear();
_currentStrokeHistory.AddRange(sourceHistory);
_currentIndex = _currentStrokeHistory.Count - 1;
NotifyUndoRedoState();
return true;
}
private void NotifyUndoRedoState()
{
OnUndoStateChanged?.Invoke(_currentIndex > -1);
OnRedoStateChanged?.Invoke(_currentStrokeHistory.Count - _currentIndex - 1 > 0);
return true;
}
}

View File

@ -5085,14 +5085,15 @@ namespace Ink_Canvas
if (isBackupMain)
{
var timeMachineHistory = timeMachine.ExportTimeMachineHistory();
timeMachine.ClearStrokeHistory();
TimeMachineHistories[0] = timeMachineHistory;
timeMachine.ClearStrokeHistory();
}
else
{
var timeMachineHistory = timeMachine.ExportTimeMachineHistory();
timeMachine.ClearStrokeHistory();
TimeMachineHistories[CurrentWhiteboardIndex] = timeMachineHistory;
timeMachine.ClearStrokeHistory();
}
}
@ -5112,9 +5113,10 @@ namespace Ink_Canvas
if (TimeMachineHistories[CurrentWhiteboardIndex] == null) return; //防止白板打开后不居中
if (isBackupMain)
{
IsCommitingByCode = true;
timeMachine.ImportTimeMachineHistory(TimeMachineHistories[0]);
foreach (var item in TimeMachineHistories[0])
{
IsCommitingByCode = true;
if (item.CommitType == TimeMachineHistoryType.UserInput)
{
if (!item.StrokeHasBeenCleared)
@ -5202,16 +5204,16 @@ namespace Ink_Canvas
}
}
}
}
IsCommitingByCode = false;
}
}
timeMachine.ImportTimeMachineHistory(TimeMachineHistories[0]);
IsCommitingByCode = false;
}
else
{
IsCommitingByCode = true;
timeMachine.ImportTimeMachineHistory(TimeMachineHistories[CurrentWhiteboardIndex]);
foreach (var item in TimeMachineHistories[CurrentWhiteboardIndex])
{
IsCommitingByCode = true;
if (item.CommitType == TimeMachineHistoryType.UserInput)
{
if (!item.StrokeHasBeenCleared)
@ -5300,9 +5302,9 @@ namespace Ink_Canvas
}
}
}
IsCommitingByCode = false;
}
timeMachine.ImportTimeMachineHistory(TimeMachineHistories[CurrentWhiteboardIndex]);
IsCommitingByCode = false;
}
AdjustStrokeColor();
}
@ -5327,12 +5329,12 @@ namespace Ink_Canvas
{
if (Settings.Automation.IsAutoSaveStrokesAtClear && inkCanvas.Strokes.Count > Settings.Automation.MinimumAutomationStrokeNumber)
SaveScreenShot(true);
SaveStrokes();
if (CurrentWhiteboardIndex >= WhiteboardTotalCount)
{
BtnWhiteBoardAdd_Click(sender, e);
return;
}
SaveStrokes();
ClearStrokes(true);
@ -6774,7 +6776,8 @@ namespace Ink_Canvas
fs.Close();
var memoryStream = new MemoryStream(File.ReadAllBytes(openFileDialog.FileName));
memoryStream.Position = 0;
inkCanvas.Strokes = new StrokeCollection(memoryStream);
ClearStrokes(true);
inkCanvas.Strokes.Add(new StrokeCollection(memoryStream));
LogHelper.NewLog(string.Format("Strokes Insert (2): Strokes Count: {0}", inkCanvas.Strokes.Count.ToString()));
}