From 347eaa679e1a2c4e9d1d854c922388bc387010b0 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: Fri, 21 Sep 2018 12:49:44 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@426 a8b55f48-bf90-11e4-a774-851b48703e85 --- qad/blockview/blockitem.cpp | 5 +++++ qad/blockview/blockitem.h | 1 + qad/blockview/blockview.cpp | 10 ++++++++++ 3 files changed, 16 insertions(+) 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; } }