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