From 24fe8a9fa7f78378f58ddc12a6a7427f6265e4d4 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sun, 5 Oct 2025 14:26:19 +0800 Subject: [PATCH] Fix switch button color --- src/slic3r/GUI/Widgets/SwitchButton.cpp | 24 +++++++++++++++++++----- src/slic3r/GUI/Widgets/SwitchButton.hpp | 2 ++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/Widgets/SwitchButton.cpp b/src/slic3r/GUI/Widgets/SwitchButton.cpp index 7899ad7e15..0c040325c3 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.cpp @@ -38,22 +38,26 @@ void SwitchButton::SetLabels(wxString const& lbl_on, wxString const& lbl_off) void SwitchButton::SetTextColor(StateColor const& color) { - text_color = color; + text_color = color; + Rescale(); } void SwitchButton::SetTextColor2(StateColor const &color) { - text_color2 = color; + text_color2 = color; + Rescale(); } void SwitchButton::SetTrackColor(StateColor const& color) { - track_color = color; + track_color = color; + Rescale(); } void SwitchButton::SetThumbColor(StateColor const& color) { - thumb_color = color; + thumb_color = color; + Rescale(); } void SwitchButton::SetValue(bool value) @@ -63,6 +67,16 @@ void SwitchButton::SetValue(bool value) update(); } +bool SwitchButton::SetBackgroundColour(const wxColour& colour) +{ + if (wxBitmapToggleButton::SetBackgroundColour(colour)) { + Rescale(); + return true; + } + + return false; +} + void SwitchButton::Rescale() { if (labels[0].IsEmpty()) { @@ -70,7 +84,7 @@ void SwitchButton::Rescale() m_off.msw_rescale(); } else { - SetBackgroundColour(StaticBox::GetParentBackgroundColor(GetParent())); + wxBitmapToggleButton::SetBackgroundColour(StaticBox::GetParentBackgroundColor(GetParent())); #ifdef __WXOSX__ auto scale = Slic3r::GUI::mac_max_scaling_factor(); int BS = (int) scale; diff --git a/src/slic3r/GUI/Widgets/SwitchButton.hpp b/src/slic3r/GUI/Widgets/SwitchButton.hpp index 744d6437c9..18a2a2c55d 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.hpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.hpp @@ -30,6 +30,8 @@ public: void Rescale(); + bool SetBackgroundColour(const wxColour& colour) override; + private: void update();