gui: Play preview videos on row selection, not just hover

Previously, game list preview videos/GIFs were only triggered by
mouse hover events. This meant that users navigating the game list
via keyboard or gamepad would never see the preview animations.

Connect to currentCellChanged to also activate/deactivate the movie
item when the selected row changes, providing visual feedback for all
input methods.

Fixes #18315
This commit is contained in:
Phil Coulson 2026-05-11 15:27:34 +08:00
parent 4f424e6c2a
commit d7e12d9c50

View File

@ -12,6 +12,27 @@ game_list::game_list() : QTableWidget(), game_list_base()
{
Q_EMIT IconReady(game, item);
};
// Activate video/music preview on selection change (keyboard/pad navigation)
connect(this, &QTableWidget::currentCellChanged, this, [this](int row, int /*column*/, int prev_row, int /*prev_column*/)
{
if (row == prev_row)
return;
if (m_last_hover_item)
{
m_last_hover_item->set_active(false);
}
movie_item* new_item = static_cast<movie_item*>(item(row, 0));
if (new_item)
{
new_item->set_active(true);
}
m_last_hover_item = new_item;
});
}
void game_list::sync_header_actions(std::map<int, QAction*>& actions, std::function<bool(int)> get_visibility)