diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/Breakpoint.cs b/BizHawk.Client.EmuHawk/tools/Debugger/Breakpoint.cs index 06d6826ee6..d99630c1c5 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/Breakpoint.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/Breakpoint.cs @@ -56,6 +56,7 @@ namespace BizHawk.Client.EmuHawk public Breakpoint(IDebuggable core, IMemoryCallback callback) { _core = core; + _active = true; Callback = callback.Callback; Address = callback.Address; Type = callback.Type; diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.Designer.cs b/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.Designer.cs index 612a7b16e4..3e5d289dd4 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.Designer.cs @@ -84,6 +84,9 @@ this.BreakpointView.UseCompatibleStateImageBehavior = false; this.BreakpointView.UseCustomBackground = true; this.BreakpointView.View = System.Windows.Forms.View.Details; + this.BreakpointView.ItemActivate += new System.EventHandler(this.BreakpointView_ItemActivate); + this.BreakpointView.SelectedIndexChanged += new System.EventHandler(this.BreakpointView_SelectedIndexChanged); + this.BreakpointView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.BreakpointView_KeyDown); // // columnHeader1 // diff --git a/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs b/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs index c1fad566d7..7b3df8ab39 100644 --- a/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs +++ b/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs @@ -22,6 +22,7 @@ namespace BizHawk.Client.EmuHawk.tools.Debugger { InitializeComponent(); BreakpointView.QueryItemText += BreakPointView_QueryItemText; + BreakpointView.QueryItemBkColor += BreakPointView_QueryItemBkColor; BreakpointView.VirtualMode = true; Breakpoints.Callback = BreakpointCallback; } @@ -48,6 +49,11 @@ namespace BizHawk.Client.EmuHawk.tools.Debugger } } + private void BreakPointView_QueryItemBkColor(int index, int column, ref Color color) + { + color = Breakpoints[index].Active ? Color.LightCyan : SystemColors.Control; + } + private void BreakpointCallback() { GlobalWin.MainForm.PauseEmulator(); @@ -73,6 +79,7 @@ namespace BizHawk.Client.EmuHawk.tools.Debugger BreakpointView.ItemCount = Breakpoints.Count; BreakpointView.Refresh(); + UpdateBreakpointRemoveButton(); } else { @@ -129,5 +136,36 @@ namespace BizHawk.Client.EmuHawk.tools.Debugger { RemoveBreakpointButton.Enabled = BreakpointView.SelectedIndices.Count > 0; } + + private void BreakpointView_SelectedIndexChanged(object sender, EventArgs e) + { + UpdateBreakpointRemoveButton(); + } + + private void BreakpointView_ItemActivate(object sender, EventArgs e) + { + if (BreakpointView.SelectedIndices.Count > 0) + { + var items = SelectedItems.ToList(); + if (items.Any()) + { + foreach (var item in items) + { + item.Active ^= true; + } + + BreakpointView.ItemCount = Breakpoints.Count; + UpdateBreakpointRemoveButton(); + } + } + } + + private void BreakpointView_KeyDown(object sender, KeyEventArgs e) + { + if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.Delete) // Delete + { + RemoveBreakpointButton_Click(null, null); + } + } } }