diff --git a/rpcs3/rpcs3qt/game_list_frame.cpp b/rpcs3/rpcs3qt/game_list_frame.cpp index 45764fc35b..9a8198717c 100644 --- a/rpcs3/rpcs3qt/game_list_frame.cpp +++ b/rpcs3/rpcs3qt/game_list_frame.cpp @@ -27,7 +27,6 @@ game_list_frame::game_list_frame(std::shared_ptr guiSettings, std: : custom_dock_widget(tr("Game List"), parent), xgui_settings(guiSettings), xemu_settings(emuSettings) { m_isListLayout = xgui_settings->GetValue(gui::gl_listMode).toBool(); - m_icon_size_index = xgui_settings->GetValue(gui::gl_iconSize).toInt(); m_Margin_Factor = xgui_settings->GetValue(gui::gl_marginFactor).toReal(); m_Text_Factor = xgui_settings->GetValue(gui::gl_textFactor).toReal(); m_Icon_Color = xgui_settings->GetValue(gui::gl_iconColor).value(); @@ -46,9 +45,7 @@ game_list_frame::game_list_frame(std::shared_ptr guiSettings, std: m_Game_Dock->setWindowFlags(Qt::Widget); setWidget(m_Game_Dock); - bool showText = m_icon_size_index < gui::gl_max_slider_pos; - m_Icon_Size = sizeFromSlider(m_icon_size_index); - m_xgrid = new game_list_grid(m_Icon_Size, m_Icon_Color, m_Margin_Factor, m_Text_Factor, showText); + m_xgrid = new game_list_grid(QSize(), m_Icon_Color, m_Margin_Factor, m_Text_Factor, false); m_gameList = new game_list(); m_gameList->setShowGrid(false); diff --git a/rpcs3/rpcs3qt/gui_settings.h b/rpcs3/rpcs3qt/gui_settings.h index 82e61fc83b..fb9d190c8d 100644 --- a/rpcs3/rpcs3qt/gui_settings.h +++ b/rpcs3/rpcs3qt/gui_settings.h @@ -127,6 +127,7 @@ namespace gui const gui_save gl_sortCol = gui_save(game_list, "sortCol", 1); const gui_save gl_state = gui_save(game_list, "state", QByteArray()); const gui_save gl_iconSize = gui_save(game_list, "iconSize", get_Index(gl_icon_size_small)); + const gui_save gl_iconSizeGrid = gui_save(game_list, "iconSizeGrid", get_Index(gl_icon_size_small)); const gui_save gl_iconColor = gui_save(game_list, "iconColor", gl_icon_color); const gui_save gl_listMode = gui_save(game_list, "listMode", true); const gui_save gl_textFactor = gui_save(game_list, "textFactor", (qreal) 2.0); diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index 42c8c57ba5..1665bddbc1 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -84,7 +84,6 @@ void main_window::Init() // add toolbar widgets (crappy Qt designer is not able to) ui->toolBar->setObjectName("mw_toolbar"); ui->sizeSlider->setRange(0, gui::gl_max_slider_pos); - ui->sizeSlider->setSliderPosition(guiSettings->GetValue(gui::gl_iconSize).toInt()); ui->toolBar->addWidget(ui->sizeSliderContainer); ui->toolBar->addSeparator(); ui->toolBar->addWidget(ui->mw_searchbar); @@ -1238,7 +1237,7 @@ void main_window::CreateConnects() if (m_save_slider_pos) { m_save_slider_pos = false; - guiSettings->SetValue(gui::gl_iconSize, index); + guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, index); } m_gameListFrame->ResizeIcons(index); }; @@ -1270,9 +1269,17 @@ void main_window::CreateConnects() connect(m_listModeActGroup, &QActionGroup::triggered, [=](QAction* act) { - bool isList = act == ui->setlistModeListAct; - m_gameListFrame->SetListMode(isList); - m_categoryVisibleActGroup->setEnabled(isList); + bool is_list_act = act == ui->setlistModeListAct; + if (is_list_act == m_is_list_mode) + return; + + int slider_pos = ui->sizeSlider->sliderPosition(); + ui->sizeSlider->setSliderPosition(m_other_slider_pos); + m_other_slider_pos = slider_pos; + + m_is_list_mode = is_list_act; + m_gameListFrame->SetListMode(m_is_list_mode); + m_categoryVisibleActGroup->setEnabled(m_is_list_mode); }); connect(ui->toolbar_disc, &QAction::triggered, this, &main_window::BootGame); @@ -1300,7 +1307,10 @@ void main_window::CreateConnects() connect(ui->toolbar_grid, &QAction::triggered, [=]() { ui->setlistModeGridAct->trigger(); }); connect(ui->sizeSlider, &QSlider::valueChanged, resizeIcons); - connect(ui->sizeSlider, &QSlider::sliderReleased, this, [&] { guiSettings->SetValue(gui::gl_iconSize, ui->sizeSlider->value()); }); + connect(ui->sizeSlider, &QSlider::sliderReleased, this, [&] + { + guiSettings->SetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid, ui->sizeSlider->value()); + }); connect(ui->sizeSlider, &QSlider::actionTriggered, [&](int action) { if (action != QAbstractSlider::SliderNoAction && action != QAbstractSlider::SliderMove) @@ -1433,14 +1443,18 @@ void main_window::ConfigureGuiFromSettings(bool configure_all) ui->showCatUnknownAct->setChecked(guiSettings->GetCategoryVisibility(Category::Unknown_Cat)); ui->showCatOtherAct->setChecked(guiSettings->GetCategoryVisibility(Category::Others)); - SetIconSizeActions(guiSettings->GetValue(gui::gl_iconSize).toInt()); - - bool isListMode = guiSettings->GetValue(gui::gl_listMode).toBool(); - if (isListMode) + // handle icon size options + m_is_list_mode = guiSettings->GetValue(gui::gl_listMode).toBool(); + if (m_is_list_mode) ui->setlistModeListAct->setChecked(true); else ui->setlistModeGridAct->setChecked(true); - m_categoryVisibleActGroup->setEnabled(isListMode); + m_categoryVisibleActGroup->setEnabled(m_is_list_mode); + + int icon_size_index = guiSettings->GetValue(m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid).toInt(); + m_other_slider_pos = guiSettings->GetValue(!m_is_list_mode ? gui::gl_iconSize : gui::gl_iconSizeGrid).toInt(); + ui->sizeSlider->setSliderPosition(icon_size_index); + SetIconSizeActions(icon_size_index); if (configure_all) { diff --git a/rpcs3/rpcs3qt/main_window.h b/rpcs3/rpcs3qt/main_window.h index ffe16dc9c1..8730c8dd3f 100644 --- a/rpcs3/rpcs3qt/main_window.h +++ b/rpcs3/rpcs3qt/main_window.h @@ -30,7 +30,9 @@ class main_window : public QMainWindow Ui::main_window *ui; bool m_sys_menu_opened; + bool m_is_list_mode = false; bool m_save_slider_pos = false; + int m_other_slider_pos; QIcon m_appIcon; QIcon m_icon_play;