Fix crash when pressing 'A' without any objects on plater

This commit is contained in:
tamasmeszaros 2022-12-01 12:37:34 +01:00
parent ba8b81b27e
commit f7c832ddaf
2 changed files with 9 additions and 6 deletions

View file

@ -165,8 +165,6 @@ void ArrangeJob::process(Ctl &ctl)
{
static const auto arrangestr = _u8L("Arranging");
ctl.update_status(0, arrangestr);
arrangement::ArrangeParams params;
Points bedpts;
ctl.call_on_main_thread([this, &params, &bedpts]{
@ -175,7 +173,12 @@ void ArrangeJob::process(Ctl &ctl)
bedpts = get_bed_shape(*m_plater->config());
}).wait();
auto count = unsigned(m_selected.size() + m_unprintable.size());
auto count = unsigned(m_selected.size() + m_unprintable.size());
if (count == 0) // Should be taken care of by plater, but doesn't hurt
return;
ctl.update_status(0, arrangestr);
params.stopcondition = [&ctl]() { return ctl.was_canceled(); };

View file

@ -4977,7 +4977,7 @@ bool Plater::priv::can_split_to_volumes() const
bool Plater::priv::can_arrange() const
{
if (model.objects.empty() && m_worker.is_idle()) return false;
if (model.objects.empty() || !m_worker.is_idle()) return false;
if (q->canvas3D()->get_gizmos_manager().get_current_type() == GLGizmosManager::Emboss) return false;
return true;
}
@ -6821,8 +6821,8 @@ GLCanvas3D* Plater::get_current_canvas3D()
void Plater::arrange()
{
auto &w = get_ui_job_worker();
if (w.is_idle()) {
if (p->can_arrange()) {
auto &w = get_ui_job_worker();
p->take_snapshot(_L("Arrange"));
replace_job(w, std::make_unique<ArrangeJob>());
}