@@ -435,6 +435,20 @@ void Evaluator::setCircuitIO(const DataUpdateEventManager::EventData* data) {
435435 logError (" Position for connection end ID {} not found in CircuitBlockData for Circuit ID {}" , " Evaluator::setCircuitIO" , connectionEndId, circuitId);
436436 return ;
437437 }
438+ // find block position
439+
440+ SharedCircuit circuit = circuitManager.getCircuit (circuitId);
441+ if (!circuit) {
442+ logError (" Circuit with ID {} not found" , " Evaluator::setCircuitIO" , circuitId);
443+ return ;
444+ }
445+ const BlockContainer& blockContainer = circuit->getBlockContainer ();
446+ const Block* block = blockContainer.getBlock (*position);
447+ if (!block) {
448+ logError (" Block at position {} not found in Circuit ID {}" , " Evaluator::setCircuitIO" , position->toString (), circuitId);
449+ return ;
450+ }
451+ Position blockPosition = block->getPosition ();
438452 // use checkToCreateExternalConnections
439453 // iterate over eval_circuit_id_t
440454 for (eval_circuit_id_t evalCircuitId : evalCircuitContainer.ids ()) {
@@ -445,7 +459,7 @@ void Evaluator::setCircuitIO(const DataUpdateEventManager::EventData* data) {
445459 if (evalCircuit->getCircuitId () != circuitId) {
446460 continue ;
447461 }
448- checkToCreateExternalConnections (pauseGuard, evalCircuitId, *position );
462+ checkToCreateExternalConnections (pauseGuard, evalCircuitId, blockPosition );
449463 }
450464 if (changedSim){
451465 evalSimulator->endEdit (pauseGuard);
@@ -938,6 +952,7 @@ void Evaluator::checkToCreateExternalConnections(SimPauseGuard& pauseGuard, eval
938952 }
939953 for (const EvalPosition& evalPosition : visitedEvalPositions) {
940954 dirtyNodes.insert (evalPosition);
955+ changedPositioning = true ;
941956 }
942957 }
943958}
0 commit comments