Skip to content

Commit 7032eeb

Browse files
author
SlavaRa
authored
[FlashDebugger] Added removal of breakpoint markers when switching projects. fixes #456 (#3176)
1 parent 0698fa4 commit 7032eeb

2 files changed

Lines changed: 32 additions & 26 deletions

File tree

‎External/Plugins/FlashDebugger/Controls/BreakPointUI.cs‎

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,8 @@ public BreakPointUI(BreakPointManager breakPointManager)
4545

4646
void BreakPointManager_UpdateBreakPointEvent(object sender, UpdateBreakPointArgs e)
4747
{
48-
int index = ItemIndex(e.FileFullPath, e.OldLine);
49-
if (index >= 0)
50-
{
51-
dgv.Rows[index].Cells["Line"].Value = e.NewLine.ToString();
52-
}
48+
var index = ItemIndex(e.FileFullPath, e.OldLine);
49+
if (index >= 0) dgv.Rows[index].Cells["Line"].Value = e.NewLine.ToString();
5350
}
5451

5552
void BreakPointManager_ChangeBreakPointEvent(object sender, BreakPointArgs e)
@@ -170,7 +167,7 @@ void Dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
170167
breakPointManager.SetBreakPointCondition(filename, line - 1, exp);
171168
}
172169

173-
public void Clear() => dgv.Rows.Clear();
170+
public void Clear() => RemoveAllMarkers();
174171

175172
public new bool Enabled
176173
{
@@ -340,10 +337,10 @@ void TsbRemoveSelected_Click(object sender, EventArgs e)
340337
var filefullpath = (string)selected.Cells["FilePath"].Value;
341338
var line = int.Parse((string)selected.Cells["Line"].Value) - 1;
342339
var doc = ScintillaHelper.GetDocument(filefullpath);
343-
if (doc != null)
340+
if (doc?.SciControl is {} sci)
344341
{
345-
bool m = ScintillaHelper.IsMarkerSet(doc.SciControl, ScintillaHelper.markerBPDisabled, line);
346-
doc.SciControl.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled);
342+
var m = ScintillaHelper.IsMarkerSet(sci, ScintillaHelper.markerBPDisabled, line);
343+
sci.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled);
347344
}
348345
else breakPointManager.SetBreakPointInfo(filefullpath, line, true, false);
349346
dgv.Rows.Remove(selected);
@@ -356,21 +353,26 @@ void TsbRemoveFiltered_Click(object sender, EventArgs e)
356353
{
357354
if (dgv.Rows.Count == 0) return;
358355
breakPointManager.ChangeBreakPointEvent -= BreakPointManager_ChangeBreakPointEvent;
359-
foreach (DataGridViewRow row in dgv.Rows)
356+
RemoveAllMarkers();
357+
breakPointManager.ChangeBreakPointEvent += BreakPointManager_ChangeBreakPointEvent;
358+
breakPointManager.Save();
359+
}
360+
361+
void RemoveAllMarkers()
362+
{
363+
for (var i = dgv.Rows.Count - 1; i >= 0; i--)
360364
{
361-
var filefullpath = (string)row.Cells["FilePath"].Value;
362-
var line = int.Parse((string)row.Cells["Line"].Value) - 1;
363-
var doc = ScintillaHelper.GetDocument(filefullpath);
364-
if (doc != null)
365+
var row = dgv.Rows[i];
366+
var fileName = (string) row.Cells["FilePath"].Value;
367+
var line = int.Parse((string) row.Cells["Line"].Value) - 1;
368+
if (ScintillaHelper.GetDocument(fileName)?.SciControl is {} sci)
365369
{
366-
var m = ScintillaHelper.IsMarkerSet(doc.SciControl, ScintillaHelper.markerBPDisabled, line);
367-
doc.SciControl.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled);
370+
var m = ScintillaHelper.IsMarkerSet(sci, ScintillaHelper.markerBPDisabled, line);
371+
sci.MarkerDelete(line, m ? ScintillaHelper.markerBPDisabled : ScintillaHelper.markerBPEnabled);
368372
}
369-
else breakPointManager.SetBreakPointInfo(filefullpath, line, true, false);
373+
else breakPointManager.SetBreakPointInfo(fileName, line, true, false);
370374
}
371375
dgv.Rows.Clear();
372-
breakPointManager.ChangeBreakPointEvent += BreakPointManager_ChangeBreakPointEvent;
373-
breakPointManager.Save();
374376
}
375377

376378
void TsbAlternateFiltered_Click(object sender, EventArgs e)
@@ -402,9 +404,11 @@ void TsbAlternateFiltered_Click(object sender, EventArgs e)
402404

403405
void TsbExportFiltered_Click(object sender, EventArgs e)
404406
{
405-
using var dialog = new SaveFileDialog();
406-
dialog.OverwritePrompt = true;
407-
dialog.Filter = TextHelper.GetString("ProjectManager.Info.FileFilter");
407+
using var dialog = new SaveFileDialog
408+
{
409+
OverwritePrompt = true,
410+
Filter = TextHelper.GetString("ProjectManager.Info.FileFilter")
411+
};
408412
if (dialog.ShowDialog(this) != DialogResult.OK) return;
409413
try
410414
{
@@ -418,9 +422,11 @@ void TsbExportFiltered_Click(object sender, EventArgs e)
418422

419423
void TsbImport_Click(object sender, EventArgs e)
420424
{
421-
using var dialog = new OpenFileDialog();
422-
dialog.CheckFileExists = true;
423-
dialog.Filter = TextHelper.GetString("ProjectManager.Info.FileFilter");
425+
using var dialog = new OpenFileDialog
426+
{
427+
CheckFileExists = true,
428+
Filter = TextHelper.GetString("ProjectManager.Info.FileFilter")
429+
};
424430
if (dialog.ShowDialog(this) != DialogResult.OK) return;
425431
try
426432
{

‎External/Plugins/FlashDebugger/PluginMain.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public void HandleEvent(object sender, NotifyEvent e, HandlingPriority priority)
132132
de.Handled = true;
133133
return;
134134
}
135-
if (!de.Action.StartsWithOrdinal(nameof(ProjectManager))) return;
135+
if (!de.Action.StartsWithOrdinal(nameof(ProjectManager))) return;
136136
if (de.Action == ProjectManagerEvents.Project)
137137
{
138138
var project = PluginBase.CurrentProject;

0 commit comments

Comments
 (0)