BlockView interact pins while new bus from existing bus trace, #23
This commit is contained in:
@@ -323,10 +323,8 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
|
||||
break;
|
||||
case QEvent::GraphicsSceneMouseMove:
|
||||
// qDebug() << "move" << (mm_ci != 0 ? mm_ci : 0) << mm_mods << mm_cancel << mm_drag;
|
||||
if (cur_bus) {
|
||||
return false;
|
||||
}
|
||||
// qDebug() << "move mm_ci" << mm_ci << mm_cancel;
|
||||
// if (cur_bus) return false;
|
||||
// qDebug() << "move mm_ci" << mm_ci << mm_cancel;
|
||||
if (mm_ci)
|
||||
if (mm_ci->data(bvidTmpItem).toBool()) {
|
||||
mm_ci = 0;
|
||||
@@ -335,42 +333,45 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
|
||||
if (mm_ci->data(bvidItemSelection).toBool()) break;
|
||||
if (mm_ci->data(bvidDTHandle).toBool()) break;
|
||||
if (mm_cancel) return true;
|
||||
// qDebug() << tmp_bus.isVisible();
|
||||
if ((me->buttons().testFlag(Qt::LeftButton) && mm_drag && tmp_bus.isVisible()) || new_branch) {
|
||||
mil = scene_->items(me->scenePos());
|
||||
hpin = 0;
|
||||
foreach(QGraphicsItem * i, mil)
|
||||
if (i->data(bvidType).toInt() == bvitPin) {
|
||||
hpin = qgraphicsitem_cast<BlockItemPin *>(i);
|
||||
break;
|
||||
}
|
||||
if (hpin) {
|
||||
if (hpin->state() == BlockItemPin::Accept) {
|
||||
unhoverPins(hpin);
|
||||
hoverAcceptedPin(hpin, true);
|
||||
} else
|
||||
hpin = 0;
|
||||
} else
|
||||
unhoverPins();
|
||||
if (!cur_bus) {
|
||||
if (new_branch) {
|
||||
matchBus();
|
||||
break;
|
||||
}
|
||||
trace(trace_from, me->scenePos(), &tmp_bus);
|
||||
for (int i = 0; i < qMin(tmp_buses.size(), last_multiconnect_pl.size()); ++i) {
|
||||
QPointF dp = last_multiconnect_pl[i]->scenePos() - trace_from;
|
||||
// qDebug() << "trace" << i << dp;
|
||||
trace(trace_from + dp, me->scenePos() + dp, tmp_buses[i], false);
|
||||
tmp_buses[i]->show();
|
||||
}
|
||||
matchBus();
|
||||
}
|
||||
}
|
||||
if (cur_bus) return false;
|
||||
if (me->buttons().testFlag(Qt::LeftButton)) {
|
||||
if (!mm_drag) {
|
||||
if ((screen_point - me->screenPos()).manhattanLength() >= QApplication::startDragDistance()) {
|
||||
mm_drag = fmm_drag = true;
|
||||
saveBusesState();
|
||||
}
|
||||
} else {
|
||||
if (tmp_bus.isVisible()) {
|
||||
mil = scene_->items(me->scenePos());
|
||||
hpin = 0;
|
||||
foreach(QGraphicsItem * i, mil)
|
||||
if (i->data(bvidType).toInt() == bvitPin) {
|
||||
hpin = qgraphicsitem_cast<BlockItemPin *>(i);
|
||||
break;
|
||||
}
|
||||
if (hpin) {
|
||||
if (hpin->state() == BlockItemPin::Accept) {
|
||||
unhoverPins(hpin);
|
||||
hoverAcceptedPin(hpin, true);
|
||||
} else
|
||||
hpin = 0;
|
||||
} else
|
||||
unhoverPins();
|
||||
if (new_branch) {
|
||||
matchBus();
|
||||
break;
|
||||
}
|
||||
trace(trace_from, me->scenePos(), &tmp_bus);
|
||||
for (int i = 0; i < qMin(tmp_buses.size(), last_multiconnect_pl.size()); ++i) {
|
||||
QPointF dp = last_multiconnect_pl[i]->scenePos() - trace_from;
|
||||
// qDebug() << "trace" << i << dp;
|
||||
trace(trace_from + dp, me->scenePos() + dp, tmp_buses[i], false);
|
||||
tmp_buses[i]->show();
|
||||
}
|
||||
matchBus();
|
||||
}
|
||||
}
|
||||
if (tmp_bus.isVisible()) return true;
|
||||
if (mm_mods.testFlag(Qt::ShiftModifier)) {
|
||||
@@ -1763,8 +1764,6 @@ void BlockView::newBranchAccept(BlockBusItem * item) {
|
||||
}
|
||||
item->updateGeometry();
|
||||
newBusCreated(item);
|
||||
emitActionEvent(BlockItemBase::BusAdd, QList<QGraphicsItem *>() << item);
|
||||
emit connectionsChanged();
|
||||
tmp_bus.clear();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user