From 274b13d97716316c015050fae0a91e3fb820caa4 Mon Sep 17 00:00:00 2001 From: "wenjie.guo" Date: Wed, 22 Nov 2023 16:15:06 +0800 Subject: [PATCH] FIX: Black spot in the sending printing task page Jira: STUDIO-5307 Signed-off-by: wenjie.guo Change-Id: I3bd97c063ec5f0faf7d12047da39f60ce55cae4b --- src/slic3r/GUI/SelectMachine.cpp | 29 ++++++++++++++++++++++------- src/slic3r/GUI/SelectMachine.hpp | 2 +- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index f411ccae8..1226ab3b6 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -4196,8 +4196,6 @@ void SelectMachineDialog::sys_color_changed() else { m_rename_button->SetBitmap(ams_editable->bmp()); } - m_thumbnailPanel->set_thumbnail_on_color_change(); - m_thumbnailPanel->Refresh(); m_rename_button->Refresh(); } @@ -4432,6 +4430,7 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) m_staticbitmap = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize); m_background_bitmap = ScalableBitmap(this,"thumbnail_grid",256); sizer->Add(m_staticbitmap, 1, wxEXPAND, 0); + Bind(wxEVT_PAINT, &ThumbnailPanel::OnPaint, this); SetSizer(sizer); Layout(); Fit(); @@ -4448,14 +4447,30 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) dc.DrawBitmap(m_bitmap, 0, 0); dc.SelectObject(wxNullBitmap); - set_thumbnail_on_color_change(); } - void ThumbnailPanel::set_thumbnail_on_color_change() { - if (wxGetApp().dark_mode()) - m_staticbitmap->SetBitmap(bitmap_with_background); + void ThumbnailPanel::OnPaint(wxPaintEvent& event) { + + wxPaintDC dc(this); + render(dc); + } + + void ThumbnailPanel::render(wxDC& dc) { + + if (wxGetApp().dark_mode()) { + #ifdef __WXMSW__ + wxMemoryDC memdc; + wxBitmap bmp(GetSize()); + memdc.SelectObject(bmp); + memdc.DrawBitmap(bitmap_with_background, 0, 0); + dc.Blit(0, 0, GetSize().GetWidth(), GetSize().GetHeight(), &memdc, 0, 0); + #else + dc.DrawBitmap(bitmap_with_background, 0, 0); + #endif + } else - m_staticbitmap->SetBitmap(m_bitmap); + dc.DrawBitmap(m_bitmap, 0, 0); + } ThumbnailPanel::~ThumbnailPanel() {} diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 57e3ba3d9..7028cd4af 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -514,7 +514,7 @@ public: void PaintBackground(wxDC &dc); void OnEraseBackground(wxEraseEvent &event); void set_thumbnail(wxImage img); - void set_thumbnail_on_color_change(); + void render(wxDC &dc); private: ScalableBitmap m_background_bitmap; wxBitmap bitmap_with_background;