From 84e62087a17e8e3c09f61a6a46578afac94b83f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 11 Feb 2016 21:25:09 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@80 a8b55f48-bf90-11e4-a774-851b48703e85 --- qad_blockview/blockbusitem.cpp | 19 +++++++++++++++---- qad_blockview/blockview.cpp | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) 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()) {