diff --git a/gui/WarpGraphModel.cpp b/gui/WarpGraphModel.cpp index e5f745f..2e4d022 100644 --- a/gui/WarpGraphModel.cpp +++ b/gui/WarpGraphModel.cpp @@ -488,19 +488,23 @@ void WarpGraphModel::refreshFromClient() { m_pwToQt.emplace(nodeInfo.id.value, qtId); auto pendingIt = m_pendingPositions.find(nodeInfo.name); - if (pendingIt != m_pendingPositions.end()) { - m_positions.emplace(qtId, pendingIt->second); - m_pendingPositions.erase(pendingIt); - } else { - auto savedIt = m_savedPositions.find(nodeInfo.name); - if (savedIt != m_savedPositions.end()) { - m_positions.emplace(qtId, savedIt->second); + if (pendingIt != m_pendingPositions.end()) { + m_positions.emplace(qtId, pendingIt->second); + m_pendingPositions.erase(pendingIt); } else { auto groupPos = findAppGroupPosition(nodeIt->second); - QPointF candidate = groupPos.value_or(nextPosition(nodeIt->second)); - m_positions.emplace(qtId, findNonOverlappingPosition(candidate, nodeIt->second)); + if (groupPos) { + m_positions.emplace(qtId, findNonOverlappingPosition(*groupPos, nodeIt->second)); + } else { + auto savedIt = m_savedPositions.find(nodeInfo.name); + if (savedIt != m_savedPositions.end()) { + m_positions.emplace(qtId, savedIt->second); + } else { + QPointF candidate = nextPosition(nodeIt->second); + m_positions.emplace(qtId, findNonOverlappingPosition(candidate, nodeIt->second)); + } + } } - } if (nodeHasVolume(nodeType)) { auto *volumeWidget = new NodeVolumeWidget();