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.DuplicateBreakpointButton = 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.columnHeader2 = ((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)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.BreakpointView.BlazingFast = false;
this.BreakpointView.CheckBoxes = true;
this.BreakpointView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
@ -129,16 +128,13 @@
this.BreakpointView.FullRowSelect = true;
this.BreakpointView.GridLines = true;
this.BreakpointView.HideSelection = false;
this.BreakpointView.ItemCount = 0;
this.BreakpointView.VirtualListSize = 0;
this.BreakpointView.Location = new System.Drawing.Point(0, 19);
this.BreakpointView.Name = "BreakpointView";
this.BreakpointView.SelectAllInProgress = false;
this.BreakpointView.selectedItem = -1;
this.BreakpointView.Size = new System.Drawing.Size(366, 365);
this.BreakpointView.TabIndex = 5;
this.BreakpointView.TabStop = false;
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);
@ -184,7 +180,7 @@
#endregion
private VirtualListView BreakpointView;
private System.Windows.Forms.ListView BreakpointView;
public System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.Button AddBreakpointButton;

View File

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