From b16704d4db3169f0dd76d2913de05820bab78887 Mon Sep 17 00:00:00 2001 From: ne0ndrag0n Date: Sun, 18 Sep 2022 17:32:59 -0400 Subject: [PATCH] GamesSettings: Always ensure last card back selected is saved --- .../Applications/GamesSettings/CardSettingsWidget.cpp | 11 +++++++++-- .../Applications/GamesSettings/CardSettingsWidget.h | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Userland/Applications/GamesSettings/CardSettingsWidget.cpp b/Userland/Applications/GamesSettings/CardSettingsWidget.cpp index 4869501106..2f37876c72 100644 --- a/Userland/Applications/GamesSettings/CardSettingsWidget.cpp +++ b/Userland/Applications/GamesSettings/CardSettingsWidget.cpp @@ -43,12 +43,16 @@ CardSettingsWidget::CardSettingsWidget() if (!set_card_back_image_path(Config::read_string("Games"sv, "Cards"sv, "CardBackImage"sv))) set_card_back_image_path(default_card_back_image_path); m_card_back_image_view->on_selection_change = [&]() { - if (m_card_back_image_view->selection().is_empty()) + auto& card_back_selection = m_card_back_image_view->selection(); + if (card_back_selection.is_empty()) return; + m_last_selected_card_back = card_back_selection.first(); set_modified(true); Cards::CardPainter::the().set_background_image_path(card_back_image_path()); m_preview_card_back->update(); }; + + m_last_selected_card_back = m_card_back_image_view->selection().first(); } void CardSettingsWidget::apply_settings() @@ -84,6 +88,9 @@ bool CardSettingsWidget::set_card_back_image_path(String const& path) String CardSettingsWidget::card_back_image_path() const { - auto card_back_image_index = m_card_back_image_view->selection().first(); + auto& card_back_selection = m_card_back_image_view->selection(); + GUI::ModelIndex card_back_image_index = m_last_selected_card_back; + if (!card_back_selection.is_empty()) + card_back_image_index = card_back_selection.first(); return static_cast(m_card_back_image_view->model())->full_path(card_back_image_index); } diff --git a/Userland/Applications/GamesSettings/CardSettingsWidget.h b/Userland/Applications/GamesSettings/CardSettingsWidget.h index 5b1832a984..61dbb03c6a 100644 --- a/Userland/Applications/GamesSettings/CardSettingsWidget.h +++ b/Userland/Applications/GamesSettings/CardSettingsWidget.h @@ -10,6 +10,7 @@ #include #include #include +#include #include class CardSettingsWidget final : public GUI::SettingsWindow::Tab { @@ -34,4 +35,6 @@ private: RefPtr m_background_color_input; RefPtr m_card_back_image_view; + + GUI::ModelIndex m_last_selected_card_back; };