From 8df56cfb60f05e3439ff1bad327203da15e35209 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Mon, 6 Nov 2023 17:11:33 +0800 Subject: [PATCH] FIX: Bitmap cache not take effect Change-Id: I972098fdbda0b4542c6c759a8f5e1f0f2a30852b Jira: STUDIO-4991 --- src/slic3r/GUI/BitmapCache.cpp | 4 ++-- src/slic3r/GUI/ObjectDataViewModel.cpp | 10 ++++++++++ src/slic3r/GUI/Widgets/StaticBox.cpp | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index ea8c6dcbe..1c683ec9c 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -316,9 +316,9 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ + (grayscale ? "-gs" : "") + new_color; - /*auto it = m_map.find(bitmap_key); + auto it = m_map.find(bitmap_key); if (it != m_map.end()) - return it->second;*/ + return it->second; // map of color replaces std::map replaces; diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 22c790ec1..50672a31e 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -190,6 +190,8 @@ void ObjectDataViewModelNode::set_extruder_icon() void ObjectDataViewModelNode::set_printable_icon(PrintIndicator printable) { + if (m_printable == printable) + return; m_printable = printable; m_printable_icon = m_printable == piUndef ? m_empty_bmp : create_scaled_bitmap(m_printable == piPrintable ? "check_on" : "check_off_focused"); @@ -197,6 +199,8 @@ void ObjectDataViewModelNode::set_printable_icon(PrintIndicator printable) void ObjectDataViewModelNode::set_action_icon(bool enable) { + if (m_action_enable == enable) + return; m_action_enable = enable; auto undo = enable ? "lock_normal" : "dot"; m_action_icon_name = m_type & itPlate ? undo : @@ -208,6 +212,8 @@ void ObjectDataViewModelNode::set_action_icon(bool enable) // BBS void ObjectDataViewModelNode::set_color_icon(bool enable) { + if (m_color_enable == enable) + return; m_color_enable = enable; if ((m_type & itObject) && enable) m_color_icon = create_scaled_bitmap("mmu_segmentation"); @@ -217,6 +223,8 @@ void ObjectDataViewModelNode::set_color_icon(bool enable) void ObjectDataViewModelNode::set_support_icon(bool enable) { + if (m_support_enable == enable) + return; m_support_enable = enable; if ((m_type & itObject) && enable) m_support_icon = create_scaled_bitmap("toolbar_support"); @@ -226,6 +234,8 @@ void ObjectDataViewModelNode::set_support_icon(bool enable) void ObjectDataViewModelNode::set_sinking_icon(bool enable) { + if (m_sink_enable == enable) + return; m_sink_enable = enable; if ((m_type & itObject) && enable) m_sinking_icon = create_scaled_bitmap("objlist_sinking"); diff --git a/src/slic3r/GUI/Widgets/StaticBox.cpp b/src/slic3r/GUI/Widgets/StaticBox.cpp index 6fde9bb3a..00855eddf 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.cpp +++ b/src/slic3r/GUI/Widgets/StaticBox.cpp @@ -143,7 +143,11 @@ void StaticBox::render(wxDC& dc) wxSize size = GetSize(); if (size.x <= 0 || size.y <= 0) return; - wxMemoryDC memdc; + wxMemoryDC memdc(&dc); + if (!memdc.IsOk()) { + doRender(dc); + return; + } wxBitmap bmp(size.x, size.y); memdc.SelectObject(bmp); //memdc.Blit({0, 0}, size, &dc, {0, 0});