diff --git a/qad/blockview/blockitem.cpp b/qad/blockview/blockitem.cpp index 8316b6d..03b80f4 100644 --- a/qad/blockview/blockitem.cpp +++ b/qad/blockview/blockitem.cpp @@ -363,6 +363,11 @@ BlockItemPin * BlockItem::pinAtBus(BlockBusItem * bus) const { } +QRectF BlockItem::sceneRect() const { + return g_main.mapRectToScene(g_main.boundingRect()); +} + + QRectF BlockItem::boundingRect() const { return g_main.mapRectToParent(g_main.boundingRect()); } diff --git a/qad/blockview/blockitem.h b/qad/blockview/blockitem.h index 7ff5999..9ac1d79 100644 --- a/qad/blockview/blockitem.h +++ b/qad/blockview/blockitem.h @@ -47,6 +47,7 @@ public: QColor color() const {return col;} void setColor(QColor c) {col = c; _resize(size());} QSizeF size() const {return g_main.rect().size();} + QRectF sceneRect() const; qreal width() const {return size().width();} qreal height() const {return size().height();} int pinsMargin() const {return pins_margin;} diff --git a/qad/blockview/blockview.cpp b/qad/blockview/blockview.cpp index f860bec..6c34863 100644 --- a/qad/blockview/blockview.cpp +++ b/qad/blockview/blockview.cpp @@ -292,8 +292,18 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) { mm_ci = 0; } if (mm_ci->data(1002).toBool()) { + QGraphicsItem * ti = mm_ci; while (mm_ci->parentItem() != 0) mm_ci = mm_ci->parentItem(); + if (!ti->data(1010).toString().isEmpty()) { // text item, check for rect + BlockItem * bi = qgraphicsitem_cast(mm_ci); + if (bi) { + if (!bi->sceneRect().contains(scene_point)) { + //qDebug() << "return"; + mm_ci = 0; + } + } + } return true; } }