From 59711afa14ea5856dc2312d5dd58481f28680ab5 Mon Sep 17 00:00:00 2001 From: Ivan Pelipenko Date: Wed, 14 Oct 2020 01:47:15 +0300 Subject: [PATCH] BlockView selection fix - many bugs with 1 fix (ctrl+click, ctrl+selection_rect, selection disappear) --- libs/blockview/blockbusitem.cpp | 6 ++++++ libs/blockview/blockview.cpp | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libs/blockview/blockbusitem.cpp b/libs/blockview/blockbusitem.cpp index fc9d8ae..7994276 100644 --- a/libs/blockview/blockbusitem.cpp +++ b/libs/blockview/blockbusitem.cpp @@ -1,4 +1,5 @@ #include "blockview.h" +#include BlockBusItem::BlockBusItem(bool temp): QGraphicsObject(), PropertyStorage() { @@ -572,6 +573,11 @@ void BlockBusItem::hoverLeaveEvent(QGraphicsSceneHoverEvent * e) { setPen(pu); setBrush(bu); setToolTip(QString()); anim_point_size.stop(); + BlockView * bv = 0; + if (!scene()->views().isEmpty()) + bv = qobject_cast(scene()->views().back()); + if (bv && (QApplication::mouseButtons() == 0)) + bv->cur_bus = 0; update(); QGraphicsObject::hoverLeaveEvent(e); } diff --git a/libs/blockview/blockview.cpp b/libs/blockview/blockview.cpp index 3d675b9..189daeb 100644 --- a/libs/blockview/blockview.cpp +++ b/libs/blockview/blockview.cpp @@ -363,7 +363,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) { if (cur_bus) { return false; } - //qDebug() << "move mm_ci" << mm_ci; + //qDebug() << "move mm_ci" << mm_ci << mm_cancel; if (mm_ci) if (mm_ci->data(bvidTmpItem).toBool()) { mm_ci = 0; @@ -1210,6 +1210,7 @@ QRectF BlockView::itemsBoundingRect() const { void BlockView::restoreSelState() { + //qDebug() << "restoreSelState"; foreach (QGraphicsItem * i, sel_items) { i->setPos(i->data(bvidItemPos).toPointF()); } @@ -1224,6 +1225,7 @@ void BlockView::restoreSelState() { void BlockView::saveSelState() { + //qDebug() << "saveSelState"; QList gi = scene_->items(); sel_items = scene_->selectedItems(); foreach (QGraphicsItem * i, gi) {