FIX:fixed crashed when starting Studio on secondary display

Change-Id: I0392607479a25b5e2b2704f5569d6b8b94ba7e3d
This commit is contained in:
Tao Wang 2022-09-05 15:52:23 +08:00 committed by Lane.Wei
parent 3fb942077c
commit 0ed1d2ed34
1 changed files with 13 additions and 5 deletions

View File

@ -5855,14 +5855,14 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale()
{
#if ENABLE_RETINA_GL
IMSlider *m_layers_slider = get_gcode_viewer().get_layers_slider();
IMSlider *m_moves_slider = get_gcode_viewer().get_moves_slider();
IMSlider* m_layers_slider = get_gcode_viewer().get_layers_slider();
IMSlider* m_moves_slider = get_gcode_viewer().get_moves_slider();
const float sc = m_retina_helper->get_scale_factor();
m_layers_slider->set_scale(sc);
m_moves_slider->set_scale(sc);
m_gcode_viewer.set_scale(sc);
auto *m_notification = wxGetApp().plater()->get_notification_manager();
auto* m_notification = wxGetApp().plater()->get_notification_manager();
m_notification->set_scale(sc);
#endif
@ -5887,7 +5887,7 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale()
collapse_toolbar.set_scale(sc);
size *= m_retina_helper->get_scale_factor();
auto *m_notification = wxGetApp().plater()->get_notification_manager();
auto* m_notification = wxGetApp().plater()->get_notification_manager();
m_notification->set_scale(sc);
#else
//BBS: GUI refactor: GLToolbar
@ -5902,12 +5902,20 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale()
float collapse_toolbar_width = collapse_toolbar.is_enabled() ? collapse_toolbar.get_width() : GLToolbar::Default_Icons_Size;
float top_tb_width = m_main_toolbar.get_width() + m_gizmos.get_scaled_total_width() + m_assemble_view_toolbar.get_width() + m_separator_toolbar.get_width() + collapse_toolbar_width;
int items_cnt = m_main_toolbar.get_visible_items_cnt() + m_gizmos.get_selectable_icons_cnt() + m_assemble_view_toolbar.get_visible_items_cnt() + m_separator_toolbar.get_visible_items_cnt() + collapse_toolbar.get_visible_items_cnt();
int items_cnt = m_main_toolbar.get_visible_items_cnt() + m_gizmos.get_selectable_icons_cnt() + m_assemble_view_toolbar.get_visible_items_cnt() + m_separator_toolbar.get_visible_items_cnt() + collapse_toolbar.get_visible_items_cnt();
float noitems_width = top_tb_width - size * items_cnt; // width of separators and borders in top toolbars
// calculate scale needed for items in all top toolbars
#ifdef __WINDOWS__
cnv_size.set_width(cnv_size.get_width() + m_separator_toolbar.get_width() + collapse_toolbar_width);
#endif
float new_h_scale = (cnv_size.get_width() - noitems_width) / (items_cnt * GLToolbar::Default_Icons_Size);
//for protect
if (new_h_scale <= 0) {
new_h_scale = 1;
}
//use the same value as horizon
float new_v_scale = new_h_scale;
#else