diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 6e0427c78..a2a0b2965 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -373,7 +373,7 @@ void NotificationManager::PopNotification::init() void NotificationManager::PopNotification::set_next_window_size(ImGuiWrapper& imgui) { m_window_height = m_multiline ? - m_lines_count * m_line_height : + std::max(m_lines_count, (size_t)2) * m_line_height : 2 * m_line_height; m_window_height += 1 * m_line_height; // top and bottom } @@ -1055,6 +1055,8 @@ void NotificationManager::UpdatedItemsInfoNotification::add_type(InfoItemType ty std::string text; for (it = m_types_and_counts.begin(); it != m_types_and_counts.end(); ++it) { + if ((*it).second == 0) + continue; text += std::to_string((*it).second); text += _L_PLURAL(" Object was loaded with "," Objects were loaded with ", (*it).second).ToUTF8().data(); switch ((*it).first) { @@ -1066,6 +1068,7 @@ void NotificationManager::UpdatedItemsInfoNotification::add_type(InfoItemType ty default: BOOST_LOG_TRIVIAL(error) << "Unknown InfoItemType: " << (*it).second; break; } } + m_state = EState::Unknown; NotificationData data { get_data().type, get_data().level , get_data().duration, text }; update(data); } diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 1649a1308..4a92e1c42 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -214,6 +214,7 @@ public: bool is_hint_notification_open(); // Forces Hints to reload its content when next hint should be showed void deactivate_loaded_hints(); + // Adds counter to existing UpdatedItemsInfo notification or opens new one void push_updated_item_info_notification(InfoItemType type); // Close old notification ExportFinished. void new_export_began(bool on_removable); @@ -653,6 +654,11 @@ private: } void count_spaces() override; void add_type(InfoItemType type); + void close() override{ + for (auto& tac : m_types_and_counts) + tac.second = 0; + PopNotification::close(); + } protected: void render_left_sign(ImGuiWrapper& imgui) override; std::vector> m_types_and_counts; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 0d74ae524..8c578a2d6 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2600,6 +2600,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode // so 3D-scene should be updated before object additing to the ObjectList this->view3D->reload_scene(false, (unsigned int)UpdateParams::FORCE_FULL_SCREEN_REFRESH); + notification_manager->close_notification_of_type(NotificationType::UpdatedItemsInfo); for (const size_t idx : obj_idxs) { wxGetApp().obj_list()->add_object_to_list(idx); }