From d4d2c13235f7e3728d45fc5b4b3fbc399a6c37da Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 7 May 2024 16:23:29 +0200 Subject: [PATCH] UIManager: Fixed update after change selection and process it --- src/slic3r/GUI/UpdatesUIManager.cpp | 19 +++++++++++++------ src/slic3r/GUI/UpdatesUIManager.hpp | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/UpdatesUIManager.cpp b/src/slic3r/GUI/UpdatesUIManager.cpp index d0f610ae5f..79bb1114ab 100644 --- a/src/slic3r/GUI/UpdatesUIManager.cpp +++ b/src/slic3r/GUI/UpdatesUIManager.cpp @@ -61,6 +61,9 @@ void UIManager::fill_entries() m_online_entries.clear(); m_offline_entries.clear(); + m_online_selections.clear(); + m_offline_selections.clear(); + const ArchiveRepositoryVector& archs = m_pad->get_archive_repositories(); const std::map& selected_repos = m_pad->get_selected_repositories_uuid(); @@ -267,7 +270,7 @@ void UIManager::load_offline_repos() update(); } -void UIManager::set_selected_repositories() +bool UIManager::set_selected_repositories() { std::vector used_ids; for (const std::string& id : m_online_selections) @@ -276,9 +279,13 @@ void UIManager::set_selected_repositories() used_ids.push_back(id); std::string msg; - if (!m_pad->set_selected_repositories(used_ids, msg)) { - ErrorDialog(m_parent, msg, false).ShowModal(); - } + if (m_pad->set_selected_repositories(used_ids, msg)) + return true; + + ErrorDialog(m_parent, msg, false).ShowModal(); + // update selection on UI + update(); + return false; } @@ -320,8 +327,8 @@ void ManageUpdatesDialog::onCloseDialog(wxEvent &) void ManageUpdatesDialog::onOkDialog(wxEvent&) { - m_manager->set_selected_repositories(); - this->EndModal(wxID_CLOSE); + if (m_manager->set_selected_repositories()) + this->EndModal(wxID_CLOSE); } } // namespace GUI diff --git a/src/slic3r/GUI/UpdatesUIManager.hpp b/src/slic3r/GUI/UpdatesUIManager.hpp index e6c3c8bb4d..cb95d4159d 100644 --- a/src/slic3r/GUI/UpdatesUIManager.hpp +++ b/src/slic3r/GUI/UpdatesUIManager.hpp @@ -67,7 +67,7 @@ public: ~UIManager() {} wxSizer* get_sizer() { return m_main_sizer; } - void set_selected_repositories(); + bool set_selected_repositories(); }; class ManageUpdatesDialog : public DPIDialog