From aa8fea7ba401bc26f2f2c653e79886ebb720a798 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Fri, 22 Jul 2016 14:42:51 -0400 Subject: [PATCH] Fix GH Issue 49 Clip artifact --- src/Mod/TechDraw/Gui/QGIView.cpp | 15 ++++++--------- src/Mod/TechDraw/Gui/QGIView.h | 4 ++-- src/Mod/TechDraw/Gui/QGIViewClip.cpp | 2 ++ src/Mod/TechDraw/Gui/QGIViewPart.cpp | 6 +++++- src/Mod/TechDraw/Gui/QGIViewPart.h | 4 +++- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index c13b43edb..be407c7e8 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -59,8 +59,6 @@ using namespace TechDrawGui; -void _debugRect(char* text, QRectF r); - QGIView::QGIView() :QGraphicsItemGroup(), locked(false), @@ -298,12 +296,14 @@ void QGIView::draw() void QGIView::drawBorder() { + prepareGeometryChange(); if (!borderVisible) { + m_label->hide(); + m_border->hide(); return; } //double margin = 2.0; - prepareGeometryChange(); m_label->hide(); m_border->hide(); @@ -350,10 +350,6 @@ void QGIView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q QStyleOptionGraphicsItem myOption(*option); myOption.state &= ~QStyle::State_Selected; - if(!borderVisible){ - m_label->hide(); - m_border->hide(); - } QGraphicsItemGroup::paint(painter, &myOption, widget); } @@ -377,6 +373,7 @@ QRectF QGIView::boundingRect() const { return m_border->rect().adjusted(-2.,-2.,2.,2.); //allow for border line width //TODO: fiddle brect if border off? } + QColor QGIView::getNormalColor() { Base::Reference hGrp = getParmGroupCol(); @@ -419,7 +416,7 @@ QString QGIView::getPrefFont() return QString::fromStdString(fontName); } -void _debugRect(char* text, QRectF r) { - Base::Console().Message("TRACE - %s - rect: (%.3f,%.3f) x (%.3f,%.3f)\n",text, +void QGIView::dumpRect(char* text, QRectF r) { + Base::Console().Message("DUMP - %s - rect: (%.3f,%.3f) x (%.3f,%.3f)\n",text, r.left(),r.top(),r.right(),r.bottom()); } diff --git a/src/Mod/TechDraw/Gui/QGIView.h b/src/Mod/TechDraw/Gui/QGIView.h index d1b7bcc15..182b8b756 100644 --- a/src/Mod/TechDraw/Gui/QGIView.h +++ b/src/Mod/TechDraw/Gui/QGIView.h @@ -75,7 +75,6 @@ public: virtual void updateView(bool update = false); virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ); virtual QRectF boundingRect() const override; - //virtual QPainterPath shape(void) const; virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event); @@ -89,6 +88,7 @@ protected: virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual QRectF customChildrenBoundingRect(void); + void dumpRect(char* text, QRectF r); QColor getNormalColor(void); QColor getPreColor(void); @@ -117,6 +117,6 @@ protected: QPen m_decorPen; }; -} // namespace MDIViewPageGui +} // namespace #endif // DRAWINGGUI_QGRAPHICSITEMVIEW_H diff --git a/src/Mod/TechDraw/Gui/QGIViewClip.cpp b/src/Mod/TechDraw/Gui/QGIViewClip.cpp index 2080b1b5f..10d9b66d6 100644 --- a/src/Mod/TechDraw/Gui/QGIViewClip.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewClip.cpp @@ -138,6 +138,7 @@ void QGIViewClip::drawClip() //TODO: why is qgiv never already in a group? if (qgiv->group() != m_cliparea) { qgiv->hide(); + scene()->removeItem(qgiv); m_cliparea->addToGroup(qgiv); qgiv->isInnerView(true); double x = qgiv->getViewObject()->X.getValue(); @@ -172,6 +173,7 @@ void QGIViewClip::drawClip() } } +//TODO: at least move to QGIView QGIView* QGIViewClip::getQGIVByName(std::string name) //should probably be method in MDIViewPage?? but qgiv can't get drawingView? or QGVPage! { QList qgItems = scene()->items(); diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index eda1516a9..107e438ae 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -272,7 +272,6 @@ void QGIViewPart::updateView(bool update) void QGIViewPart::draw() { drawViewPart(); drawBorder(); - QGIView::draw(); } void QGIViewPart::drawViewPart() @@ -595,3 +594,8 @@ void QGIViewPart::dumpPath(const char* text,QPainterPath path) elem.type,typeName,elem.x,elem.y,elem.isMoveTo(),elem.isLineTo(),elem.isCurveTo()); } } + +QRectF QGIViewPart::boundingRect() const +{ + return childrenBoundingRect(); +} diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.h b/src/Mod/TechDraw/Gui/QGIViewPart.h index 29b96d8a3..b93ee23fa 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.h +++ b/src/Mod/TechDraw/Gui/QGIViewPart.h @@ -28,6 +28,7 @@ #include #include +#include "QGCustomBorder.h" #include "QGIView.h" namespace TechDraw { @@ -56,6 +57,7 @@ public: void setViewPartFeature(TechDraw::DrawViewPart *obj); virtual void updateView(bool update = false) override; void tidy(); + virtual QRectF boundingRect() const override; virtual void draw() override; @@ -90,6 +92,6 @@ private: QList deleteItems; }; -} // namespace MDIViewPageGui +} // namespace #endif // DRAWINGGUI_QGRAPHICSITEMVIEWPART_H