Debugger Breakpoints - use ListView in virtual mode instead of VirtualListView

This commit is contained in:
adelikat 2019-10-19 19:32:34 -05:00
parent 4eea88a988
commit 7fc4e82ef9
2 changed files with 21 additions and 40 deletions

View File

@ -36,7 +36,7 @@
this.RemoveBreakpointButton = new System.Windows.Forms.Button(); this.RemoveBreakpointButton = new System.Windows.Forms.Button();
this.DuplicateBreakpointButton = new System.Windows.Forms.Button(); this.DuplicateBreakpointButton = new System.Windows.Forms.Button();
this.EditBreakpointButton = new System.Windows.Forms.Button(); this.EditBreakpointButton = new System.Windows.Forms.Button();
this.BreakpointView = new BizHawk.Client.EmuHawk.VirtualListView(); this.BreakpointView = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
@ -118,7 +118,6 @@
this.BreakpointView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.BreakpointView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.BreakpointView.BlazingFast = false;
this.BreakpointView.CheckBoxes = true; this.BreakpointView.CheckBoxes = true;
this.BreakpointView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.BreakpointView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1, this.columnHeader1,
@ -129,16 +128,13 @@
this.BreakpointView.FullRowSelect = true; this.BreakpointView.FullRowSelect = true;
this.BreakpointView.GridLines = true; this.BreakpointView.GridLines = true;
this.BreakpointView.HideSelection = false; this.BreakpointView.HideSelection = false;
this.BreakpointView.ItemCount = 0; this.BreakpointView.VirtualListSize = 0;
this.BreakpointView.Location = new System.Drawing.Point(0, 19); this.BreakpointView.Location = new System.Drawing.Point(0, 19);
this.BreakpointView.Name = "BreakpointView"; this.BreakpointView.Name = "BreakpointView";
this.BreakpointView.SelectAllInProgress = false;
this.BreakpointView.selectedItem = -1;
this.BreakpointView.Size = new System.Drawing.Size(366, 365); this.BreakpointView.Size = new System.Drawing.Size(366, 365);
this.BreakpointView.TabIndex = 5; this.BreakpointView.TabIndex = 5;
this.BreakpointView.TabStop = false; this.BreakpointView.TabStop = false;
this.BreakpointView.UseCompatibleStateImageBehavior = false; this.BreakpointView.UseCompatibleStateImageBehavior = false;
this.BreakpointView.UseCustomBackground = true;
this.BreakpointView.View = System.Windows.Forms.View.Details; this.BreakpointView.View = System.Windows.Forms.View.Details;
this.BreakpointView.ItemActivate += new System.EventHandler(this.BreakpointView_ItemActivate); this.BreakpointView.ItemActivate += new System.EventHandler(this.BreakpointView_ItemActivate);
this.BreakpointView.SelectedIndexChanged += new System.EventHandler(this.BreakpointView_SelectedIndexChanged); this.BreakpointView.SelectedIndexChanged += new System.EventHandler(this.BreakpointView_SelectedIndexChanged);
@ -184,7 +180,7 @@
#endregion #endregion
private VirtualListView BreakpointView; private System.Windows.Forms.ListView BreakpointView;
public System.Windows.Forms.ColumnHeader columnHeader1; public System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2; private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.Button AddBreakpointButton; private System.Windows.Forms.Button AddBreakpointButton;

View File

@ -22,8 +22,7 @@ namespace BizHawk.Client.EmuHawk
public BreakpointControl() public BreakpointControl()
{ {
InitializeComponent(); InitializeComponent();
BreakpointView.QueryItemText += BreakPointView_QueryItemText; BreakpointView.RetrieveVirtualItem += BreakPointView_QueryItemText;
BreakpointView.QueryItemBkColor += BreakPointView_QueryItemBkColor;
BreakpointView.VirtualMode = true; BreakpointView.VirtualMode = true;
_breakpoints.Callback = BreakpointCallback; _breakpoints.Callback = BreakpointCallback;
} }
@ -33,30 +32,16 @@ namespace BizHawk.Client.EmuHawk
UpdateStatsLabel(); UpdateStatsLabel();
} }
private void BreakPointView_QueryItemText(int index, int column, out string text) private void BreakPointView_QueryItemText(object sender, RetrieveVirtualItemEventArgs e)
{ {
text = ""; var entry = _breakpoints[e.ItemIndex];
switch (column) e.Item = new ListViewItem($"{entry.Address:X}");
{ e.Item.SubItems.Add($"{entry.AddressMask:X}");
case 0: e.Item.SubItems.Add(entry.Type.ToString());
text = $"{_breakpoints[index].Address:X}"; e.Item.SubItems.Add(entry.Name);
break;
case 1:
text = $"{_breakpoints[index].AddressMask:X}";
break;
case 2:
text = _breakpoints[index].Type.ToString();
break;
case 3:
text = _breakpoints[index].Name;
break;
}
}
private void BreakPointView_QueryItemBkColor(int index, int column, ref Color color) e.Item.BackColor = entry.ReadOnly ? SystemColors.Control
{ : entry.Active ? Color.LightCyan
color = _breakpoints[index].ReadOnly ? SystemColors.Control
: _breakpoints[index].Active ? Color.LightCyan
: Color.White; : Color.White;
} }
@ -90,7 +75,7 @@ namespace BizHawk.Client.EmuHawk
{ {
CheckForNewBreakpoints(); CheckForNewBreakpoints();
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateStatsLabel(); UpdateStatsLabel();
} }
} }
@ -124,7 +109,7 @@ namespace BizHawk.Client.EmuHawk
_breakpoints.Add(new Breakpoint(Core, callback)); _breakpoints.Add(new Breakpoint(Core, callback));
} }
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
BreakpointView.Refresh(); BreakpointView.Refresh();
UpdateBreakpointRemoveButton(); UpdateBreakpointRemoveButton();
UpdateStatsLabel(); UpdateStatsLabel();
@ -146,7 +131,7 @@ namespace BizHawk.Client.EmuHawk
{ {
_breakpoints.Add(Core, MemoryDomains.SystemBus.Name, address, mask, type); _breakpoints.Add(Core, MemoryDomains.SystemBus.Name, address, mask, type);
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateBreakpointRemoveButton(); UpdateBreakpointRemoveButton();
UpdateStatsLabel(); UpdateStatsLabel();
} }
@ -160,7 +145,7 @@ namespace BizHawk.Client.EmuHawk
_breakpoints.Add(Core, MemoryDomains.SystemBus.Name, b.Address, b.AddressMask, b.BreakType); _breakpoints.Add(Core, MemoryDomains.SystemBus.Name, b.Address, b.AddressMask, b.BreakType);
} }
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateBreakpointRemoveButton(); UpdateBreakpointRemoveButton();
UpdateStatsLabel(); UpdateStatsLabel();
} }
@ -208,7 +193,7 @@ namespace BizHawk.Client.EmuHawk
_breakpoints.Remove(item); _breakpoints.Remove(item);
} }
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateBreakpointRemoveButton(); UpdateBreakpointRemoveButton();
UpdateStatsLabel(); UpdateStatsLabel();
} }
@ -243,7 +228,7 @@ namespace BizHawk.Client.EmuHawk
item.Active ^= true; item.Active ^= true;
} }
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateBreakpointRemoveButton(); UpdateBreakpointRemoveButton();
UpdateStatsLabel(); UpdateStatsLabel();
} }
@ -270,7 +255,7 @@ namespace BizHawk.Client.EmuHawk
item.Active ^= true; item.Active ^= true;
} }
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateStatsLabel(); UpdateStatsLabel();
} }
@ -288,7 +273,7 @@ namespace BizHawk.Client.EmuHawk
} }
} }
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateBreakpointRemoveButton(); UpdateBreakpointRemoveButton();
UpdateStatsLabel(); UpdateStatsLabel();
} }
@ -310,7 +295,7 @@ namespace BizHawk.Client.EmuHawk
} }
} }
BreakpointView.ItemCount = _breakpoints.Count; BreakpointView.VirtualListSize = _breakpoints.Count;
UpdateBreakpointRemoveButton(); UpdateBreakpointRemoveButton();
UpdateStatsLabel(); UpdateStatsLabel();
} }