diff --git a/src/ops/deleteoperation.cpp b/src/ops/deleteoperation.cpp index 6f4fe34..8b8f996 100644 --- a/src/ops/deleteoperation.cpp +++ b/src/ops/deleteoperation.cpp @@ -21,6 +21,7 @@ #include "core/partition.h" #include "core/device.h" #include "core/partitiontable.h" +#include "fs/luks.h" #include "jobs/deletepartitionjob.h" #include "jobs/deletefilesystemjob.h" @@ -123,5 +124,16 @@ bool DeleteOperation::canDelete(const Partition* p) if (p->roles().has(PartitionRole::Extended)) return p->children().size() == 1 && p->children()[0]->roles().has(PartitionRole::Unallocated); + if (p->roles().has(PartitionRole::Luks)) + { + const FileSystem& fsRef = p->fileSystem(); + const FS::luks* luksFs = dynamic_cast(&fsRef); + if (!luksFs) + return false; + + if (luksFs->isCryptOpen() || luksFs->isMounted()) + return false; + } + return true; }