From 7bbb7e7ca4b1b5793e202d513eed1e373463aee6 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Sat, 7 Oct 2023 10:42:11 +0800 Subject: [PATCH] FIX: PrinterFileSystem crash when switch file type Change-Id: I25b0659d7a33bda5bb1157c967dac300b41696a9 Github: 2633 --- src/slic3r/GUI/ImageGrid.cpp | 6 +++++- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index be60185f6..624c0539d 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -92,8 +92,12 @@ void Slic3r::GUI::ImageGrid::SetFileType(int type, std::string const &storage) void Slic3r::GUI::ImageGrid::SetGroupMode(int mode) { - if (!m_file_sys || m_file_sys->GetCount() == 0) + if (!m_file_sys) return; + if (m_file_sys->GetCount() == 0) { + m_file_sys->SetGroupMode((PrinterFileSystem::GroupMode) mode); + return; + } wxSize size = GetClientSize(); int index = (m_row_offset + 1 < m_row_count || m_row_count == 0) ? m_row_offset / 4 * m_col_count diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index bdd1260e9..170d18687 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -104,6 +104,7 @@ void PrinterFileSystem::SetFileType(FileType type, std::string const &storage) m_file_list.swap(m_file_list_cache[{m_file_type, m_file_storage}]); m_lock_start = m_lock_end = 0; BuildGroups(); + UpdateGroupSelect(); SendChangedEvent(EVT_FILE_CHANGED); if (type == F_INVALID_TYPE) return; @@ -530,10 +531,10 @@ void PrinterFileSystem::Stop(bool quit) void PrinterFileSystem::BuildGroups() { - if (m_file_list.empty()) - return; m_group_year.clear(); m_group_month.clear(); + if (m_file_list.empty()) + return; wxDateTime t = wxDateTime((time_t) m_file_list.front().time); m_group_year.push_back(0); m_group_month.push_back(0);