cherry-pick #19: cross-origin detection in SaveAs (a6e84552da)
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user