From e3f046cd2e70525caf155505fad15a8cfd3749d4 Mon Sep 17 00:00:00 2001 From: peri4 Date: Fri, 27 Jan 2023 00:10:14 +0300 Subject: [PATCH] BlockView pin multiconnect - display pin as error if >1 bus connected, #9 --- libs/blockview/blockview.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/libs/blockview/blockview.cpp b/libs/blockview/blockview.cpp index 27dcf00..1fa0a2a 100644 --- a/libs/blockview/blockview.cpp +++ b/libs/blockview/blockview.cpp @@ -1875,16 +1875,21 @@ void BlockView::reconnectAll() { for (int c = 0; c < conns.size(); ++c) { QPointF cp = b->pol[conns[c]]; for (int j = 0; j < pins.size(); ++j) { - if (!pins[j]->isVisible()) continue; - QPointF pp = pins[j]->scenePos(); + BlockItemPin * pin = pins[j]; + if (!pin->isVisible()) continue; + QPointF pp = pin->scenePos(); if ((cp - pp).manhattanLength() <= (grid_step / 2.)) { // qDebug() << "found"; - if (b->busType() == pins[j]->busType()) { - b->connections_[conns[c]] = pins[j]; - if (!pins[j]->buses_.contains(b)) pins[j]->buses_ << b; - pins[j]->setState(BlockItemPin::Connected); + if (b->busType() == pin->busType()) { + b->connections_[conns[c]] = pin; + if (!pin->buses_.contains(b)) pin->buses_ << b; + if (m_pin_mc) { + pin->setState(BlockItemPin::Connected); + } else { + pin->setState(pin->buses_.size() == 1 ? BlockItemPin::Connected : BlockItemPin::Reject); + } } else - pins[j]->setState(BlockItemPin::Reject); + pin->setState(BlockItemPin::Reject); break; } }