EgtExecutor 2.4a7 :

- correzione a ExeDuploResetLocked per Duplo swappato
- in Duplo aggiunto richiamo ExeSetModified quando si modifica.
This commit is contained in:
DarioS
2022-01-31 13:27:47 +01:00
parent 948c1b5f50
commit ad6b45a2ee
2 changed files with 38 additions and 5 deletions
+38 -5
View File
@@ -708,6 +708,8 @@ ExeDuploNew( int nSouId)
// Aggiorno info del duplicato
pGeomDB->SetInfo( nNewId, GDB_SI_DUPSOU, nSouId) ;
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPLIST) ;
// Dichiaro progetto modificato
ExeSetModified() ;
return nNewId ;
}
@@ -765,7 +767,11 @@ ExeDuploSetModified( int nSouId)
if ( ! pGeomDB->ExistsInfo( nSouId, GDB_SI_DUPLIST))
return true ;
// Imposto il flag di modificato
return pGeomDB->SetInfo( nSouId, GDB_SI_DUPMODIF, true) ;
if ( ! pGeomDB->SetInfo( nSouId, GDB_SI_DUPMODIF, true))
return false ;
// Dichiaro progetto modificato
ExeSetModified() ;
return true ;
}
//-----------------------------------------------------------------------------
@@ -793,7 +799,11 @@ ExeDuploSetLocked( int nDupId)
if ( ! ExeIsDuplo( nDupId))
return false ;
// Imposto il flag di bloccato
return pGeomDB->SetInfo( nDupId, GDB_SI_DUPLOCKED, true) ;
if ( ! pGeomDB->SetInfo( nDupId, GDB_SI_DUPLOCKED, true))
return false ;
// Dichiaro progetto modificato
ExeSetModified() ;
return true ;
}
//-----------------------------------------------------------------------------
@@ -802,10 +812,16 @@ ExeDuploResetLocked( int nDupId)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, false)
// Verifico sia nel gruppo base dei duplicati
// Verifico sia nel gruppo base dei duplicati o scambiato con un gruppo da esso
int nDuploBaseId = GetDuploBase( pGeomDB) ;
if ( nDuploBaseId == GDB_ID_NULL || pGeomDB->GetParentId( nDupId) != nDuploBaseId)
if ( nDuploBaseId == GDB_ID_NULL)
return false ;
int nDBaseId = GDB_ID_NULL ;
if ( pGeomDB->GetParentId( nDupId) != nDuploBaseId) {
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_BASE, nDBaseId) ||
pGeomDB->GetParentId( nDBaseId) != nDuploBaseId)
return false ;
}
// Verifico abbia un sorgente
int nOrigId ;
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPSOU, nOrigId) || pGeomDB->GetGdbType( nOrigId) != GDB_TY_GROUP)
@@ -822,9 +838,17 @@ ExeDuploResetLocked( int nDupId)
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPTOUPDATE, bToUpdate))
bToUpdate = false ;
pGeomDB->RemoveInfo( nDupId, GDB_SI_DUPTOUPDATE) ;
if ( ! bToUpdate)
if ( ! bToUpdate) {
// Dichiaro progetto modificato
ExeSetModified() ;
return true ;
}
// Eseguo aggiornamento
int nDStat = GDB_ST_ON ;
if ( nDBaseId != GDB_ID_NULL) {
pGeomDB->GetStatus( nDupId, nDStat) ;
pGeomDB->GroupSwap( nDupId, nDBaseId, true, true) ;
}
pGeomDB->Erase( nDupId) ;
int nNewId = pGeomDB->Copy( nOrigId, nDupId, nDuploBaseId) ;
if ( nNewId == GDB_ID_NULL)
@@ -836,6 +860,13 @@ ExeDuploResetLocked( int nDupId)
pGeomDB->SetInfo( nNewId, GDB_SI_DUPSOU, nOrigId) ;
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPLIST) ;
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPMODIF) ;
// Se necessario rieseguo swap al contrario
if ( nDBaseId != GDB_ID_NULL) {
pGeomDB->SetStatus( nNewId, nDStat) ;
pGeomDB->GroupSwap( nNewId, nDBaseId, true, true) ;
}
// Dichiaro progetto modificato
ExeSetModified() ;
return true ;
}
@@ -908,6 +939,8 @@ ExeDuploUpdate( int nSouId)
}
// reset flag di modificato
pGeomDB->RemoveInfo( nSouId, GDB_SI_DUPMODIF) ;
// Dichiaro progetto modificato
ExeSetModified() ;
return bAllOk ;
}