Skip to content

Commit 17706ff

Browse files
committed
move more logic into virtual FLP class
1 parent 81b9055 commit 17706ff

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevosAchievementListForm.Designer.cs

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/BizHawk.Client.EmuHawk/RetroAchievements/RCheevosAchievementListForm.cs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public RCheevosAchievementListForm()
2626
_cheevoForms = Array.Empty<RCheevosAchievementForm>();
2727
using var temp = new RCheevosAchievementForm(null);
2828
_controlHeight = temp.Height + temp.Margin.Bottom + temp.Margin.Top;
29+
flowLayoutPanel1.BoundScrollBar = vScrollBar1;
2930
}
3031

3132
private void DisposeCheevoForms()
@@ -92,19 +93,13 @@ private void UpdateForms()
9293

9394
private void vScrollBar1_ValueChanged(object sender, EventArgs e) => UpdateForms();
9495

95-
public void flowLayoutPanel1_MouseWheel(object sender, MouseEventArgs e)
96-
{
97-
vScrollBar1.Value = (vScrollBar1.Value - e.Delta).Clamp(vScrollBar1.Minimum, vScrollBar1.Maximum - vScrollBar1.LargeChange + 1);
98-
}
99-
10096
private int DisplayedItems()
10197
{
10298
return Math.Min((int) Math.Ceiling((double) flowLayoutPanel1.Height / _controlHeight) + 1, _cheevos.Length);
10399
}
104100

105101
private void RCheevosAchievementListForm_SizeChanged(object sender, EventArgs e)
106102
{
107-
vScrollBar1.LargeChange = vScrollBar1.Size.Height;
108103
if (flowLayoutPanel1.Controls.Count != DisplayedItems())
109104
{
110105
flowLayoutPanel1.Controls.Clear();
@@ -123,9 +118,28 @@ private void RCheevosAchievementListForm_SizeChanged(object sender, EventArgs e)
123118

124119
public class VirtualizedFlowLayoutPanel : FlowLayoutPanel
125120
{
121+
private VScrollBar _boundScrollBar;
122+
public VScrollBar BoundScrollBar
123+
{
124+
get => _boundScrollBar;
125+
set
126+
{
127+
_boundScrollBar = value;
128+
_boundScrollBar.SmallChange = 5;
129+
_boundScrollBar.LargeChange = this.Height;
130+
}
131+
}
132+
133+
protected override void OnSizeChanged(EventArgs e)
134+
{
135+
if (_boundScrollBar is not null)
136+
_boundScrollBar.LargeChange = this.Height;
137+
base.OnSizeChanged(e);
138+
}
139+
126140
protected override void OnMouseWheel(MouseEventArgs e)
127141
{
128-
(Parent as RCheevosAchievementListForm)?.flowLayoutPanel1_MouseWheel(this, e);
142+
BoundScrollBar.Value = (BoundScrollBar.Value - e.Delta).Clamp(BoundScrollBar.Minimum, BoundScrollBar.Maximum - BoundScrollBar.LargeChange + 1);
129143
}
130144
}
131145
}

0 commit comments

Comments
 (0)