mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-10 16:27:54 -06:00
An attempt to fix an OSX crash when manipulating the ImGui sliders
This commit is contained in:
parent
ee4496f59f
commit
9c5194c89b
4 changed files with 21 additions and 7 deletions
|
@ -2365,8 +2365,10 @@ RENDER_AGAIN:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value_changed) { // Update side panel
|
if (value_changed) { // Update side panel
|
||||||
wxGetApp().obj_settings()->UpdateAndShow(true);
|
wxTheApp->CallAfter([]() {
|
||||||
wxGetApp().obj_list()->update_settings_items();
|
wxGetApp().obj_settings()->UpdateAndShow(true);
|
||||||
|
wxGetApp().obj_list()->update_settings_items();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool generate = m_imgui->button(_(L("Auto-generate points [A]")));
|
bool generate = m_imgui->button(_(L("Auto-generate points [A]")));
|
||||||
|
@ -2400,7 +2402,7 @@ RENDER_AGAIN:
|
||||||
|
|
||||||
if (remove_selected || remove_all) {
|
if (remove_selected || remove_all) {
|
||||||
force_refresh = false;
|
force_refresh = false;
|
||||||
m_parent.reload_scene(true);
|
m_parent.set_as_dirty();
|
||||||
if (remove_all)
|
if (remove_all)
|
||||||
select_point(AllPoints);
|
select_point(AllPoints);
|
||||||
delete_selected_points(remove_all);
|
delete_selected_points(remove_all);
|
||||||
|
@ -2413,7 +2415,7 @@ RENDER_AGAIN:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (force_refresh)
|
if (force_refresh)
|
||||||
m_parent.reload_scene(true);
|
m_parent.set_as_dirty();
|
||||||
}
|
}
|
||||||
#endif // ENABLE_IMGUI
|
#endif // ENABLE_IMGUI
|
||||||
|
|
||||||
|
|
|
@ -376,7 +376,8 @@ void ObjectList::selection_changed()
|
||||||
fix_multiselection_conflicts();
|
fix_multiselection_conflicts();
|
||||||
|
|
||||||
// update object selection on Plater
|
// update object selection on Plater
|
||||||
update_selections_on_canvas();
|
if (!m_prevent_canvas_selection_update)
|
||||||
|
update_selections_on_canvas();
|
||||||
|
|
||||||
// to update the toolbar and info sizer
|
// to update the toolbar and info sizer
|
||||||
if (!GetSelection() || m_objects_model->GetItemType(GetSelection()) == itObject) {
|
if (!GetSelection() || m_objects_model->GetItemType(GetSelection()) == itObject) {
|
||||||
|
@ -2129,6 +2130,10 @@ bool ObjectList::has_multi_part_objects()
|
||||||
|
|
||||||
void ObjectList::update_settings_items()
|
void ObjectList::update_settings_items()
|
||||||
{
|
{
|
||||||
|
m_prevent_canvas_selection_update = true;
|
||||||
|
wxDataViewItemArray sel;
|
||||||
|
GetSelections(sel); // stash selection
|
||||||
|
|
||||||
wxDataViewItemArray items;
|
wxDataViewItemArray items;
|
||||||
m_objects_model->GetChildren(wxDataViewItem(0), items);
|
m_objects_model->GetChildren(wxDataViewItem(0), items);
|
||||||
|
|
||||||
|
@ -2136,7 +2141,9 @@ void ObjectList::update_settings_items()
|
||||||
const wxDataViewItem& settings_item = m_objects_model->GetSettingsItem(item);
|
const wxDataViewItem& settings_item = m_objects_model->GetSettingsItem(item);
|
||||||
select_item(settings_item ? settings_item : m_objects_model->AddSettingsChild(item));
|
select_item(settings_item ? settings_item : m_objects_model->AddSettingsChild(item));
|
||||||
}
|
}
|
||||||
UnselectAll();
|
// restore selection:
|
||||||
|
SetSelections(sel);
|
||||||
|
m_prevent_canvas_selection_update = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectList::update_object_menu()
|
void ObjectList::update_object_menu()
|
||||||
|
|
|
@ -127,6 +127,10 @@ class ObjectList : public wxDataViewCtrl
|
||||||
bool m_prevent_update_extruder_in_config = false; // We use this flag to avoid updating of the extruder value in config
|
bool m_prevent_update_extruder_in_config = false; // We use this flag to avoid updating of the extruder value in config
|
||||||
// during updating of the extruder count.
|
// during updating of the extruder count.
|
||||||
|
|
||||||
|
bool m_prevent_canvas_selection_update = false; // This flag prevents changing selection on the canvas. See function
|
||||||
|
// update_settings_items - updating canvas selection is undesirable,
|
||||||
|
// because it would turn off the gizmos (mainly a problem for the SLA gizmo)
|
||||||
|
|
||||||
bool m_parts_changed = false;
|
bool m_parts_changed = false;
|
||||||
bool m_part_settings_changed = false;
|
bool m_part_settings_changed = false;
|
||||||
|
|
||||||
|
|
|
@ -191,7 +191,8 @@ void View3D::reload_scene(bool refresh_immediately, bool force_full_scene_refres
|
||||||
void View3D::render()
|
void View3D::render()
|
||||||
{
|
{
|
||||||
if (m_canvas != nullptr)
|
if (m_canvas != nullptr)
|
||||||
m_canvas->render();
|
//m_canvas->render();
|
||||||
|
m_canvas->set_as_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
Preview::Preview(wxWindow* parent, DynamicPrintConfig* config, BackgroundSlicingProcess* process, GCodePreviewData* gcode_preview_data, std::function<void()> schedule_background_process_func)
|
Preview::Preview(wxWindow* parent, DynamicPrintConfig* config, BackgroundSlicingProcess* process, GCodePreviewData* gcode_preview_data, std::function<void()> schedule_background_process_func)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue