mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-05-11 02:09:07 +08:00
Fix of crash and/or assert when changing language
This commit is contained in:
parent
1d337b0e24
commit
2c9bd86a70
@ -3191,6 +3191,9 @@ std::string format_mouse_event_debug_message(const wxMouseEvent &evt)
|
|||||||
|
|
||||||
void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
||||||
{
|
{
|
||||||
|
if (!m_initialized || !_set_current())
|
||||||
|
return;
|
||||||
|
|
||||||
#if ENABLE_RETINA_GL
|
#if ENABLE_RETINA_GL
|
||||||
const float scale = m_retina_helper->get_scale_factor();
|
const float scale = m_retina_helper->get_scale_factor();
|
||||||
evt.SetX(evt.GetX() * scale);
|
evt.SetX(evt.GetX() * scale);
|
||||||
@ -3260,9 +3263,6 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_picking_enabled)
|
|
||||||
_set_current();
|
|
||||||
|
|
||||||
int selected_object_idx = m_selection.get_object_idx();
|
int selected_object_idx = m_selection.get_object_idx();
|
||||||
int layer_editing_object_idx = is_layers_editing_enabled() ? selected_object_idx : -1;
|
int layer_editing_object_idx = is_layers_editing_enabled() ? selected_object_idx : -1;
|
||||||
m_layers_editing.select_object(*m_model, layer_editing_object_idx);
|
m_layers_editing.select_object(*m_model, layer_editing_object_idx);
|
||||||
|
@ -860,6 +860,10 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
|
|||||||
/* Before change application language, let's check unsaved changes on 3D-Scene
|
/* Before change application language, let's check unsaved changes on 3D-Scene
|
||||||
* and draw user's attention to the application restarting after a language change
|
* and draw user's attention to the application restarting after a language change
|
||||||
*/
|
*/
|
||||||
|
{
|
||||||
|
// the dialog needs to be destroyed before the call to switch_language()
|
||||||
|
// or sometimes the application crashes into wxDialogBase() destructor
|
||||||
|
// so we put it into an inner scope
|
||||||
wxMessageDialog dialog(nullptr,
|
wxMessageDialog dialog(nullptr,
|
||||||
_(L("Switching the language will trigger application restart.\n"
|
_(L("Switching the language will trigger application restart.\n"
|
||||||
"You will lose content of the plater.")) + "\n\n" +
|
"You will lose content of the plater.")) + "\n\n" +
|
||||||
@ -868,6 +872,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
|
|||||||
wxICON_QUESTION | wxOK | wxCANCEL);
|
wxICON_QUESTION | wxOK | wxCANCEL);
|
||||||
if (dialog.ShowModal() == wxID_CANCEL)
|
if (dialog.ShowModal() == wxID_CANCEL)
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch_language();
|
switch_language();
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user