Follow-up 3bd0728b: Fixed the toolbar icons size, when it's set from Preferences.

see https://github.com/prusa3d/PrusaSlicer/issues/12838#issuecomment-2176534793
This commit is contained in:
YuSanka 2024-06-22 16:27:16 +02:00 committed by Lukas Matena
parent bafd65d55b
commit 0237acb38f
4 changed files with 12 additions and 9 deletions

View File

@ -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);
}

View File

@ -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

View File

@ -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;
}

View File

@ -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();