actions: locate song: fix crash (hopefully for the last time)
This commit is contained in:
@@ -1149,13 +1149,11 @@ void TogglePlayingSongCentering::run()
|
|||||||
Statusbar::printf("Centering playing song: %1%",
|
Statusbar::printf("Centering playing song: %1%",
|
||||||
Config.autocenter_mode ? "on" : "off"
|
Config.autocenter_mode ? "on" : "off"
|
||||||
);
|
);
|
||||||
if (Config.autocenter_mode
|
if (Config.autocenter_mode && !myPlaylist->main().isFiltered())
|
||||||
&& Status::State::player() != MPD::psUnknown
|
|
||||||
&& !myPlaylist->main().isFiltered())
|
|
||||||
{
|
{
|
||||||
auto sp = Status::State::currentSongPosition();
|
auto s = myPlaylist->nowPlayingSong();
|
||||||
if (sp >= 0 && size_t(sp) < myPlaylist->main().size())
|
if (!s.empty())
|
||||||
myPlaylist->main().highlight(Status::State::currentSongPosition());
|
myPlaylist->main().highlight(s.getPosition());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1176,25 +1174,24 @@ bool JumpToPlayingSong::canBeRun() const
|
|||||||
return ((myScreen == myPlaylist && !myPlaylist->isFiltered())
|
return ((myScreen == myPlaylist && !myPlaylist->isFiltered())
|
||||||
|| myScreen == myBrowser
|
|| myScreen == myBrowser
|
||||||
|| myScreen == myLibrary)
|
|| myScreen == myLibrary)
|
||||||
&& Status::State::player() != MPD::psUnknown;
|
&& !myPlaylist->nowPlayingSong().empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void JumpToPlayingSong::run()
|
void JumpToPlayingSong::run()
|
||||||
{
|
{
|
||||||
|
auto s = myPlaylist->nowPlayingSong();
|
||||||
if (myScreen == myPlaylist)
|
if (myScreen == myPlaylist)
|
||||||
{
|
{
|
||||||
auto sp = Status::State::currentSongPosition();
|
myPlaylist->main().highlight(s.getPosition());
|
||||||
if (sp >= 0 && size_t(sp) < myPlaylist->main().size())
|
|
||||||
myPlaylist->main().highlight(Status::State::currentSongPosition());
|
|
||||||
}
|
}
|
||||||
else if (myScreen == myBrowser)
|
else if (myScreen == myBrowser)
|
||||||
{
|
{
|
||||||
myBrowser->LocateSong(myPlaylist->nowPlayingSong());
|
myBrowser->LocateSong(s);
|
||||||
drawHeader();
|
drawHeader();
|
||||||
}
|
}
|
||||||
else if (myScreen == myLibrary)
|
else if (myScreen == myLibrary)
|
||||||
{
|
{
|
||||||
myLibrary->LocateSong(myPlaylist->nowPlayingSong());
|
myLibrary->LocateSong(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -249,9 +249,11 @@ MPD::SongList Playlist::getSelectedSongs()
|
|||||||
MPD::Song Playlist::nowPlayingSong()
|
MPD::Song Playlist::nowPlayingSong()
|
||||||
{
|
{
|
||||||
MPD::Song s;
|
MPD::Song s;
|
||||||
if (Status::State::player() != MPD::psStop)
|
if (Status::State::player() != MPD::psUnknown)
|
||||||
withUnfilteredMenu(w, [this, &s]() {
|
withUnfilteredMenu(w, [this, &s]() {
|
||||||
s = w.at(Status::State::currentSongPosition()).value();
|
auto sp = Status::State::currentSongPosition();
|
||||||
|
if (sp >= 0 && size_t(sp) < w.size())
|
||||||
|
s = w.at(sp).value();
|
||||||
});
|
});
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user