cherry-pick #19: cross-origin detection in SaveAs (a6e84552da)

This commit is contained in:
forbes
2026-02-13 14:08:30 -06:00
parent ae9a8414d2
commit a83be25a63

View File

@@ -768,13 +768,40 @@ void StdCmdSaveAs::activated(int iMsg)
return;
}
// SaveAs uses current origin (allows saving to different origin)
FileOrigin* origin = OriginManager::instance()->currentOrigin();
if (!origin) {
auto* mgr = OriginManager::instance();
FileOrigin* currentOrigin = mgr->currentOrigin();
FileOrigin* docOrigin = mgr->originForDocument(doc);
if (!currentOrigin) {
return;
}
origin->saveDocumentAsInteractive(doc);
// Determine workflow based on document and target origins
OriginType currentType = currentOrigin->type();
OriginType docType = docOrigin ? docOrigin->type() : OriginType::Local;
if (docOrigin == currentOrigin || !docOrigin) {
// Same origin or new document - standard SaveAs
currentOrigin->saveDocumentAsInteractive(doc);
}
else if (currentType == OriginType::PLM && docType == OriginType::Local) {
// Local → PLM: Migration workflow
// The PLM origin's saveDocumentAsInteractive should handle this
currentOrigin->saveDocumentAsInteractive(doc);
}
else if (currentType == OriginType::Local && docType == OriginType::PLM) {
// PLM → Local: Export workflow
// Use local origin to save without PLM tracking
currentOrigin->saveDocumentAsInteractive(doc);
}
else if (currentType == OriginType::PLM && docType == OriginType::PLM) {
// PLM → Different PLM: Transfer workflow
currentOrigin->saveDocumentAsInteractive(doc);
}
else {
// Default: use current origin
currentOrigin->saveDocumentAsInteractive(doc);
}
}
bool StdCmdSaveAs::isActive()