FIX: avoid arrange to outer when quick click autoarrangement in plate.

Change-Id: Ic8fa2f605094c7a3b7fa5a6fe36c5159678c50fd

STUDIO-2202
(cherry picked from commit 641c18c25f5f297234059d463ac12220c4b6fa9f)

Change-Id: Ic452f2fa4357fcacf71f6a70df2c514d2628b217
This commit is contained in:
miaoxin 2023-02-21 16:46:53 +08:00 committed by Lane.Wei
parent 4c93d6e59d
commit 3448b7a053
3 changed files with 12 additions and 2 deletions

View File

@ -750,6 +750,7 @@ void ArrangeJob::finalize() {
m_plater->update(); m_plater->update();
Job::finalize(); Job::finalize();
m_plater->m_arrange_running.store(false);
} }
std::optional<arrangement::ArrangePolygon> std::optional<arrangement::ArrangePolygon>

View File

@ -11098,8 +11098,10 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click)
ret = select_plate(plate_index); ret = select_plate(plate_index);
if (!ret) if (!ret)
{ {
set_prepare_state(Job::PREPARE_STATE_MENU); if (last_arrange_job_is_finished()) {
arrange(); set_prepare_state(Job::PREPARE_STATE_MENU);
arrange();
}
} }
else else
{ {

View File

@ -678,6 +678,13 @@ public:
std::string get_preview_only_filename() { return m_preview_only_filename; }; std::string get_preview_only_filename() { return m_preview_only_filename; };
bool last_arrange_job_is_finished()
{
bool prevRunning = false;
return m_arrange_running.compare_exchange_strong(prevRunning, true);
};
std::atomic<bool> m_arrange_running{false};
private: private:
struct priv; struct priv;
std::unique_ptr<priv> p; std::unique_ptr<priv> p;