From 0237acb38fbdd4055c80e49f8cbe544a08cf85a0 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Sat, 22 Jun 2024 16:27:16 +0200 Subject: [PATCH] Follow-up 3bd0728b: Fixed the toolbar icons size, when it's set from Preferences. see https://github.com/prusa3d/PrusaSlicer/issues/12838#issuecomment-2176534793 --- src/slic3r/GUI/GLCanvas3D.cpp | 10 +++++++--- src/slic3r/GUI/GLCanvas3D.hpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 7 +++---- src/slic3r/GUI/GUI_App.hpp | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 50674fc8db..c174dd3ca1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5950,7 +5950,7 @@ void GLCanvas3D::_render_sequential_clearance() } -bool GLCanvas3D::check_toolbar_icon_size(float init_scale, float& new_scale_to_save, int counter/* = 3*/) +bool GLCanvas3D::check_toolbar_icon_size(float init_scale, float& new_scale_to_save, bool is_custom, int counter/* = 3*/) { const Size cnv_size = get_canvas_size(); @@ -6006,6 +6006,9 @@ bool GLCanvas3D::check_toolbar_icon_size(float init_scale, float& new_scale_to_s new_scale_to_save = std::min(new_scale / max_scale, 1.f); + if (is_custom && new_scale_to_save > init_scale) + return false; + if (is_approx(init_scale, new_scale_to_save, 0.015f) || counter == 0) return true; @@ -6022,9 +6025,10 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() if (wxGetApp().plater()->is_preview_shown()) return; - const float init_scale = wxGetApp().toolbar_icon_scale(); + bool is_custom; + const float init_scale = wxGetApp().toolbar_icon_scale(is_custom); float new_scale_to_save; - if (check_toolbar_icon_size(init_scale, new_scale_to_save) && + if (check_toolbar_icon_size(init_scale, new_scale_to_save, is_custom) && !is_approx(init_scale, new_scale_to_save, 0.015f)) wxGetApp().set_auto_toolbar_icon_scale(new_scale_to_save); } diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 881f876c84..aed8f199ac 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -1053,7 +1053,7 @@ private: void _render_gcode_cog() { m_gcode_viewer.render_cog(); } void _render_selection(); void _render_sequential_clearance(); - bool check_toolbar_icon_size(float init_scale, float& new_scale_to_save, int counter = 3); + bool check_toolbar_icon_size(float init_scale, float& new_scale_to_save, bool is_custom, int counter = 3); #if ENABLE_RENDER_SELECTION_CENTER void _render_selection_center() { m_selection.render_center(m_gizmos.is_dragging()); } #endif // ENABLE_RENDER_SELECTION_CENTER diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 9c60677c75..a70a7e7997 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1965,7 +1965,7 @@ wxSize GUI_App::get_min_size(wxWindow* display_win) const return min_size; } -float GUI_App::toolbar_icon_scale(const bool is_limited/* = false*/) const +float GUI_App::toolbar_icon_scale(bool& is_custom) const { #ifdef __APPLE__ const float icon_sc = 1.0f; // for Retina display will be used its own scale @@ -1980,13 +1980,12 @@ float GUI_App::toolbar_icon_scale(const bool is_limited/* = false*/) const if (val.empty() || auto_val.empty() || use_val.empty()) return icon_sc; + is_custom = app_config->get_bool("use_custom_toolbar_size"); + int int_val = use_val == "0" ? 100 : atoi(val.c_str()); // correct value in respect to auto_toolbar_size int_val = std::min(atoi(auto_val.c_str()), int_val); - if (is_limited && int_val < 50) - int_val = 50; - return 0.01f * int_val; } diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index a0b2bbe4b3..291b335e29 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -268,7 +268,7 @@ public: bool suppress_round_corners() const; wxSize get_min_size(wxWindow* display_win) const; int get_max_font_pt_size(); - float toolbar_icon_scale(const bool is_limited = false) const; + float toolbar_icon_scale(bool& is_custom) const; void set_auto_toolbar_icon_scale(float scale) const; void check_printer_presets();