Showing Eject button only after exporting is finished. Fix of #4212

This commit is contained in:
David Kocik 2020-06-14 23:14:44 +02:00
parent 87824ef5f8
commit 67d2f43845
3 changed files with 10 additions and 3 deletions

View File

@ -3450,7 +3450,7 @@ void Plater::priv::on_slicing_completed(wxCommandEvent &)
break;
default: break;
}
}
}
void Plater::priv::on_process_completed(wxCommandEvent &evt)
{
@ -3510,7 +3510,10 @@ void Plater::priv::on_process_completed(wxCommandEvent &evt)
show_action_buttons(true);
}
else if (this->writing_to_removable_device || wxGetApp().get_mode() == comSimple)
{
wxGetApp().removable_drive_manager()->set_exporting_finished(true);
show_action_buttons(false);
}
this->writing_to_removable_device = false;
}

View File

@ -393,6 +393,7 @@ bool RemovableDriveManager::set_and_verify_last_save_path(const std::string &pat
#endif // REMOVABLE_DRIVE_MANAGER_OS_CALLBACKS
m_last_save_path = this->get_removable_drive_from_path(path);
m_exporting_finished = false;
return ! m_last_save_path.empty();
}
@ -407,6 +408,7 @@ RemovableDriveManager::RemovableDrivesStatus RemovableDriveManager::status()
}
if (! out.has_eject)
m_last_save_path.clear();
out.has_eject = out.has_eject && m_exporting_finished;
return out;
}

View File

@ -83,7 +83,7 @@ public:
// Public to be accessible from RemovableDriveManagerMM::on_device_unmount OSX notification handler.
// It would be better to make this method private and friend to RemovableDriveManagerMM, but RemovableDriveManagerMM is an ObjectiveC class.
void update();
void set_exporting_finished(bool b) { m_exporting_finished = b; }
#ifdef _WIN32
// Called by Win32 Volume arrived / detached callback.
void volumes_changed();
@ -121,7 +121,9 @@ private:
std::vector<DriveData>::const_iterator find_last_save_path_drive_data() const;
// Set with set_and_verify_last_save_path() to a removable drive path to be ejected.
std::string m_last_save_path;
// Verifies that exporting was finished so drive can be ejected.
// Set false by set_and_verify_last_save_path() that is called just before exporting.
bool m_exporting_finished;
#if __APPLE__
void register_window_osx();
void unregister_window_osx();