Fix crashes related to music list context menu (#1088)

This commit is contained in:
in1tiate 2025-03-14 08:22:00 -05:00 committed by GitHub
parent 36ad63b0c0
commit c0c278e63c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5797,12 +5797,12 @@ void Courtroom::on_music_list_context_menu_requested(const QPoint &pos)
menu->addSeparator(); menu->addSeparator();
QTreeWidgetItem *current_song = ui_music_list->currentItem(); QTreeWidgetItem *current_song = ui_music_list->currentItem();
if (ui_music_list->currentItem()->text(2) == "1") if (ui_music_list->currentItem() && ui_music_list->currentItem()->text(2) == "1")
{ {
menu->addAction(QString(tr("Remove Favorite")), this, [this, current_song] { Courtroom::remove_favorite_song(current_song); }); menu->addAction(QString(tr("Remove Favorite")), this, [this, current_song] { Courtroom::remove_favorite_song(current_song); });
menu->addSeparator(); menu->addSeparator();
} }
else else if (ui_music_list->currentItem())
{ {
menu->addAction(QString(tr("Add Favorite")), this, [this, current_song] { Courtroom::add_favorite_song(current_song); }); menu->addAction(QString(tr("Add Favorite")), this, [this, current_song] { Courtroom::add_favorite_song(current_song); });
menu->addSeparator(); menu->addSeparator();
@ -5920,6 +5920,9 @@ void Courtroom::music_list_expand_all()
void Courtroom::music_list_collapse_all() void Courtroom::music_list_collapse_all()
{ {
ui_music_list->collapseAll(); ui_music_list->collapseAll();
// If we had a selection, restore it, or select its parent
if (ui_music_list->selectedItems().size() > 0)
{
QTreeWidgetItem *current = ui_music_list->selectedItems()[0]; QTreeWidgetItem *current = ui_music_list->selectedItems()[0];
if (current->parent() != nullptr) if (current->parent() != nullptr)
{ {
@ -5927,6 +5930,7 @@ void Courtroom::music_list_collapse_all()
} }
ui_music_list->setCurrentItem(current); ui_music_list->setCurrentItem(current);
} }
}
void Courtroom::music_stop(bool no_effects) void Courtroom::music_stop(bool no_effects)
{ {