From 26e8b2b718ae500ea2d36c9a198b673cd6f4bdfa Mon Sep 17 00:00:00 2001 From: slavara Date: Fri, 11 Dec 2020 21:52:45 +0300 Subject: [PATCH] [FlashDebugger] Added removal of breakpoint markers when switching projects. fixes #456 --- .../FlashDebugger/Controls/BreakPointUI.cs | 56 ++++++++++--------- External/Plugins/FlashDebugger/PluginMain.cs | 2 +- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/External/Plugins/FlashDebugger/Controls/BreakPointUI.cs b/External/Plugins/FlashDebugger/Controls/BreakPointUI.cs index 1abcdd01fa..d41ff6d68d 100644 --- a/External/Plugins/FlashDebugger/Controls/BreakPointUI.cs +++ b/External/Plugins/FlashDebugger/Controls/BreakPointUI.cs @@ -45,11 +45,8 @@ public BreakPointUI(BreakPointManager breakPointManager) void BreakPointManager_UpdateBreakPointEvent(object sender, UpdateBreakPointArgs e) { - int index = ItemIndex(e.FileFullPath, e.OldLine); - if (index >= 0) - { - dgv.Rows[index].Cells["Line"].Value = e.NewLine.ToString(); - } + var index = ItemIndex(e.FileFullPath, e.OldLine); + if (index >= 0) dgv.Rows[index].Cells["Line"].Value = e.NewLine.ToString(); } void BreakPointManager_ChangeBreakPointEvent(object sender, BreakPointArgs e) @@ -170,7 +167,7 @@ void Dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) breakPointManager.SetBreakPointCondition(filename, line - 1, exp); } - public void Clear() => dgv.Rows.Clear(); + public void Clear() => RemoveAllMarkers(); public new bool Enabled { @@ -340,10 +337,10 @@ void TsbRemoveSelected_Click(object sender, EventArgs e) var filefullpath = (string)selected.Cells["FilePath"].Value; var line = int.Parse((string)selected.Cells["Line"].Value) - 1; var doc = ScintillaHelper.GetDocument(filefullpath); - if (doc != null) + if (doc?.SciControl is {} sci) { - bool m = ScintillaHelper.IsMarkerSet(doc.SciControl, ScintillaHelper.markerBPDisabled, line); - doc.SciControl.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled); + var m = ScintillaHelper.IsMarkerSet(sci, ScintillaHelper.markerBPDisabled, line); + sci.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled); } else breakPointManager.SetBreakPointInfo(filefullpath, line, true, false); dgv.Rows.Remove(selected); @@ -356,21 +353,26 @@ void TsbRemoveFiltered_Click(object sender, EventArgs e) { if (dgv.Rows.Count == 0) return; breakPointManager.ChangeBreakPointEvent -= BreakPointManager_ChangeBreakPointEvent; - foreach (DataGridViewRow row in dgv.Rows) + RemoveAllMarkers(); + breakPointManager.ChangeBreakPointEvent += BreakPointManager_ChangeBreakPointEvent; + breakPointManager.Save(); + } + + void RemoveAllMarkers() + { + for (var i = dgv.Rows.Count - 1; i >= 0; i--) { - var filefullpath = (string)row.Cells["FilePath"].Value; - var line = int.Parse((string)row.Cells["Line"].Value) - 1; - var doc = ScintillaHelper.GetDocument(filefullpath); - if (doc != null) + var row = dgv.Rows[i]; + var fileName = (string) row.Cells["FilePath"].Value; + var line = int.Parse((string) row.Cells["Line"].Value) - 1; + if (ScintillaHelper.GetDocument(fileName)?.SciControl is {} sci) { - var m = ScintillaHelper.IsMarkerSet(doc.SciControl, ScintillaHelper.markerBPDisabled, line); - doc.SciControl.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled); + var m = ScintillaHelper.IsMarkerSet(sci, ScintillaHelper.markerBPDisabled, line); + sci.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled); } - else breakPointManager.SetBreakPointInfo(filefullpath, line, true, false); + else breakPointManager.SetBreakPointInfo(fileName, line, true, false); } dgv.Rows.Clear(); - breakPointManager.ChangeBreakPointEvent += BreakPointManager_ChangeBreakPointEvent; - breakPointManager.Save(); } void TsbAlternateFiltered_Click(object sender, EventArgs e) @@ -402,9 +404,11 @@ void TsbAlternateFiltered_Click(object sender, EventArgs e) void TsbExportFiltered_Click(object sender, EventArgs e) { - using var dialog = new SaveFileDialog(); - dialog.OverwritePrompt = true; - dialog.Filter = TextHelper.GetString("ProjectManager.Info.FileFilter"); + using var dialog = new SaveFileDialog + { + OverwritePrompt = true, + Filter = TextHelper.GetString("ProjectManager.Info.FileFilter") + }; if (dialog.ShowDialog(this) != DialogResult.OK) return; try { @@ -418,9 +422,11 @@ void TsbExportFiltered_Click(object sender, EventArgs e) void TsbImport_Click(object sender, EventArgs e) { - using var dialog = new OpenFileDialog(); - dialog.CheckFileExists = true; - dialog.Filter = TextHelper.GetString("ProjectManager.Info.FileFilter"); + using var dialog = new OpenFileDialog + { + CheckFileExists = true, + Filter = TextHelper.GetString("ProjectManager.Info.FileFilter") + }; if (dialog.ShowDialog(this) != DialogResult.OK) return; try { diff --git a/External/Plugins/FlashDebugger/PluginMain.cs b/External/Plugins/FlashDebugger/PluginMain.cs index 66d8515877..aac8f04609 100644 --- a/External/Plugins/FlashDebugger/PluginMain.cs +++ b/External/Plugins/FlashDebugger/PluginMain.cs @@ -132,7 +132,7 @@ public void HandleEvent(object sender, NotifyEvent e, HandlingPriority priority) de.Handled = true; return; } - if (!de.Action.StartsWithOrdinal(nameof(ProjectManager))) return; + if (!de.Action.StartsWithOrdinal(nameof(ProjectManager))) return; if (de.Action == ProjectManagerEvents.Project) { var project = PluginBase.CurrentProject;