NSF: UI - Fixed usability issues with the track dropdown when a scrollbar is present

This commit is contained in:
Sour 2020-04-19 16:58:27 -04:00
parent 241b09964b
commit caa8a6ac25

View file

@ -22,6 +22,7 @@ namespace Mesen.GUI.Controls
private float _xFactor = 1;
private float _yFactor = 1;
private bool _isNsf = false;
private int _selectedTrack = 0;
public ctrlNsfPlayer()
{
@ -161,11 +162,14 @@ namespace Mesen.GUI.Controls
NsfHeader header = InteropEmu.NsfGetHeader();
int currentTrack = InteropEmu.NsfGetCurrentTrack();
if(currentTrack != cboTrack.SelectedIndex) {
if(_selectedTrack != currentTrack) {
if(!_disableShortcutKeys) {
cboTrack.SelectedIndexChanged -= cboTrack_SelectedIndexChanged;
cboTrack.SelectedIndex = currentTrack;
cboTrack.SelectedIndexChanged += cboTrack_SelectedIndexChanged;
}
_selectedTrack = currentTrack;
}
TimeSpan time = TimeSpan.FromSeconds((double)elapsedFrames / ((header.Flags & 0x01) == 0x01 ? 50.006978 : 60.098812));
string label = time.ToString(time.TotalHours < 1 ? @"mm\:ss" : @"hh\:mm\:ss");
@ -217,7 +221,6 @@ namespace Mesen.GUI.Controls
}
NsfHeader header = InteropEmu.NsfGetHeader();
int currentTrack = InteropEmu.NsfGetCurrentTrack();
string[] trackNames = header.GetTrackNames();
@ -237,7 +240,10 @@ namespace Mesen.GUI.Controls
cboTrack.DataSource = _trackList;
cboTrack.DisplayMember = "Value";
}
int currentTrack = InteropEmu.NsfGetCurrentTrack();
if(cboTrack.SelectedIndex != currentTrack) {
cboTrack.SelectedIndex = currentTrack;
}
lblTrackTotal.Text = "/ " + header.TotalSongs.ToString();
}
@ -443,6 +449,7 @@ namespace Mesen.GUI.Controls
{
int currentTrack = InteropEmu.NsfGetCurrentTrack();
if(currentTrack != cboTrack.SelectedIndex) {
_selectedTrack = currentTrack;
InteropEmu.NsfSelectTrack((byte)cboTrack.SelectedIndex);
}
}