diff --git a/qad_blockview/blockbusitem.cpp b/qad_blockview/blockbusitem.cpp index 72a248b..c6512e2 100644 --- a/qad_blockview/blockbusitem.cpp +++ b/qad_blockview/blockbusitem.cpp @@ -368,10 +368,21 @@ void BlockBusItem::hoverMoveEvent(QGraphicsSceneHoverEvent * e) { return; } setToolTip(QString()); - QList il = scene()->items(Qt::DescendingOrder); - for (int i = 0; i < il.size(); ++i) - if (il[i]->data(1005) == "connection" && il[i] != this) - {stackBefore(il[i]);} + QList il = scene()->items(sp, Qt::ContainsItemBoundingRect, Qt::DescendingOrder), bil; + bil << this; + for (int i = 0; i < il.size(); ++i) { + QGraphicsItem * b = il[i]; + if (b->data(1005) == "connection" && b != this) { + int tp = -1, ts = -1; + ((BlockBusItem*)b)->testPoint(sp, &tp, &ts); + if (tp >= 0 || ts >= 0) { + foreach (QGraphicsItem * b2, bil) + b2->stackBefore(b); + break; + } + bil << b; + } + } update(); } diff --git a/qad_blockview/blockview.cpp b/qad_blockview/blockview.cpp index 8938512..916db98 100644 --- a/qad_blockview/blockview.cpp +++ b/qad_blockview/blockview.cpp @@ -1151,7 +1151,7 @@ void BlockView::moveBuses(const QList & items, QPointF dp) { buses << qgraphicsitem_cast(i); foreach (BlockBusItem * b, buses) { QList bpins = b->connections_.values(); - if (bpins.size() == b->endpointCount()) { + if (!bpins.isEmpty()) { foreach (BlockItemPin * p, pins) bpins.removeAll(p); if (bpins.isEmpty()) {