From 1a7210aa74cda4d6c7533c718159b0263cf74d91 Mon Sep 17 00:00:00 2001 From: Michael Maltese Date: Sat, 27 May 2017 18:59:19 -0700 Subject: [PATCH] GameListModel: provide Qt::InitialSortOrderRole for sorting Fixes regression where pixmap columns can't be sorted by default. --- Source/Core/DolphinQt2/GameList/GameList.cpp | 1 + .../Core/DolphinQt2/GameList/GameListModel.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Source/Core/DolphinQt2/GameList/GameList.cpp b/Source/Core/DolphinQt2/GameList/GameList.cpp index 10bbd128a9..41a063322d 100644 --- a/Source/Core/DolphinQt2/GameList/GameList.cpp +++ b/Source/Core/DolphinQt2/GameList/GameList.cpp @@ -31,6 +31,7 @@ GameList::GameList(QWidget* parent) : QStackedWidget(parent) m_model = new GameListModel(this); m_table_proxy = new QSortFilterProxyModel(this); m_table_proxy->setSortCaseSensitivity(Qt::CaseInsensitive); + m_table_proxy->setSortRole(Qt::InitialSortOrderRole); m_table_proxy->setSourceModel(m_model); m_list_proxy = new ListProxyModel(this); m_list_proxy->setSourceModel(m_model); diff --git a/Source/Core/DolphinQt2/GameList/GameListModel.cpp b/Source/Core/DolphinQt2/GameList/GameListModel.cpp index 4d00a2e3df..ad2a291908 100644 --- a/Source/Core/DolphinQt2/GameList/GameListModel.cpp +++ b/Source/Core/DolphinQt2/GameList/GameListModel.cpp @@ -27,14 +27,20 @@ QVariant GameListModel::data(const QModelIndex& index, int role) const case COL_PLATFORM: if (role == Qt::DecorationRole) return Resources::GetPlatform(static_cast(game->GetPlatformID())); + if (role == Qt::InitialSortOrderRole) + return static_cast(game->GetPlatformID()); break; case COL_COUNTRY: if (role == Qt::DecorationRole) return Resources::GetCountry(static_cast(game->GetCountryID())); + if (role == Qt::InitialSortOrderRole) + return static_cast(game->GetCountryID()); break; case COL_RATING: if (role == Qt::DecorationRole) return Resources::GetRating(game->GetRating()); + if (role == Qt::InitialSortOrderRole) + return game->GetRating(); break; case COL_BANNER: if (role == Qt::DecorationRole) @@ -48,24 +54,26 @@ QVariant GameListModel::data(const QModelIndex& index, int role) const } break; case COL_TITLE: - if (role == Qt::DisplayRole) + if (role == Qt::DisplayRole || role == Qt::InitialSortOrderRole) return game->GetLongName(); break; case COL_ID: - if (role == Qt::DisplayRole) + if (role == Qt::DisplayRole || role == Qt::InitialSortOrderRole) return game->GetGameID(); break; case COL_DESCRIPTION: - if (role == Qt::DisplayRole) + if (role == Qt::DisplayRole || role == Qt::InitialSortOrderRole) return game->GetDescription(); break; case COL_MAKER: - if (role == Qt::DisplayRole) + if (role == Qt::DisplayRole || role == Qt::InitialSortOrderRole) return game->GetMaker(); break; case COL_SIZE: if (role == Qt::DisplayRole) return FormatSize(game->GetFileSize()); + if (role == Qt::InitialSortOrderRole) + return game->GetFileSize(); break; }