Qt: Support changing theme without reopening window

This commit is contained in:
Connor McLaughlin 2022-07-24 23:29:20 +10:00
parent bc49e2f627
commit 5510f66a12
5 changed files with 15 additions and 3 deletions

View File

@ -146,6 +146,12 @@ void GameListModel::updateCacheSize(int width, int height)
m_cover_pixmap_cache.SetMaxCapacity(static_cast<int>(std::max(num_columns * num_rows, MIN_COVER_CACHE_SIZE)));
}
void GameListModel::reloadCommonImages()
{
loadCommonImages();
refresh();
}
void GameListModel::loadOrGenerateCover(const GameList::Entry* ge)
{
QFuture<QPixmap> future =

View File

@ -63,6 +63,7 @@ public:
int getCoverArtSpacing() const;
void refreshCovers();
void updateCacheSize(int width, int height);
void reloadCommonImages();
private:
void loadCommonImages();

View File

@ -455,6 +455,11 @@ void GameListWidget::resizeTableViewColumnsToFit()
});
}
void GameListWidget::reloadCommonImages()
{
m_model->reloadCommonImages();
}
static TinyString getColumnVisibilitySettingsKeyName(int column)
{
return TinyString::FromFormat("Show%s", GameListModel::getColumnName(static_cast<GameListModel::Column>(column)));

View File

@ -38,6 +38,7 @@ public:
void initialize();
void resizeTableViewColumnsToFit();
void reloadCommonImages();
void refresh(bool invalidate_cache);
void cancelRefresh();

View File

@ -1957,9 +1957,8 @@ void MainWindow::setTheme(const QString& theme)
{
Host::SetBaseStringSettingValue("UI", "Theme", theme.toUtf8().constData());
updateApplicationTheme();
// Sadly we need to recreate here, because otherwise the icon theme doesn't update.
recreate();
updateMenuSelectedTheme();
m_game_list_widget->reloadCommonImages();
}
void MainWindow::setStyleFromSettings()