From 2336c568871d35c3a5fbd3f6ae9149c7a6e56f47 Mon Sep 17 00:00:00 2001 From: "hu.wang" Date: Tue, 12 Sep 2023 16:57:28 +0800 Subject: [PATCH] FIX:Crash caused by calibrating dialog constructors JIRA: STUDIO-4416 Change-Id: I7a15b773ab4df86f3e4234dcd8275fd8e17fad19 --- src/slic3r/GUI/Calibration.cpp | 15 ++++++++------- src/slic3r/GUI/StatusPanel.cpp | 10 +++++----- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/Calibration.cpp b/src/slic3r/GUI/Calibration.cpp index e558eb5b4..b6bdf06ac 100644 --- a/src/slic3r/GUI/Calibration.cpp +++ b/src/slic3r/GUI/Calibration.cpp @@ -236,13 +236,6 @@ void CalibrationDialog::update_cali(MachineObject *obj) m_checkbox_list["motor_noise"]->SetValue(false); } - if (!obj->is_calibration_running() && !m_checkbox_list["vibration"]->GetValue() && !m_checkbox_list["bed_leveling"]->GetValue() && !m_checkbox_list["xcam_cali"]->GetValue() && !m_checkbox_list["motor_noise"]->GetValue()) { - m_calibration_btn->Disable(); - m_calibration_btn->SetLabel(_L("No step selected")); - return ; - } else { - m_calibration_btn->Enable(); - } if (obj->is_calibration_running() || obj->is_calibration_done()) { if (obj->is_calibration_done()) { @@ -280,6 +273,14 @@ void CalibrationDialog::update_cali(MachineObject *obj) m_calibration_flow->DeleteAllItems(); m_calibration_btn->SetLabel(_L("Start Calibration")); } + if (!obj->is_calibration_running() && !m_checkbox_list["vibration"]->GetValue() && !m_checkbox_list["bed_leveling"]->GetValue() && + !m_checkbox_list["xcam_cali"]->GetValue() && !m_checkbox_list["motor_noise"]->GetValue()) { + m_calibration_btn->Disable(); + m_calibration_btn->SetLabel(_L("No step selected")); + } + else if(!obj->is_calibration_running()){ + m_calibration_btn->Enable(); + } } bool CalibrationDialog::is_stage_list_info_changed(MachineObject *obj) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 3a59e8c7f..db74b2318 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1879,13 +1879,11 @@ void StatusPanel::update(MachineObject *obj) } // update calibration status - if (calibration_dlg == nullptr) { - calibration_dlg = new CalibrationDialog(); - calibration_dlg->update_machine_obj(obj); - } else { + if (calibration_dlg != nullptr) { calibration_dlg->update_machine_obj(obj); + calibration_dlg->update_cali(obj); } - calibration_dlg->update_cali(obj); + if (obj->is_support_first_layer_inspect @@ -3812,9 +3810,11 @@ void StatusPanel::on_start_calibration(wxCommandEvent &event) if (calibration_dlg == nullptr) { calibration_dlg = new CalibrationDialog(); calibration_dlg->update_machine_obj(obj); + calibration_dlg->update_cali(obj); calibration_dlg->ShowModal(); } else { calibration_dlg->update_machine_obj(obj); + calibration_dlg->update_cali(obj); calibration_dlg->ShowModal(); } }