From b09ab037249dac416f3a40668f576d99df3aa7f7 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 29 Apr 2019 07:42:43 -0400 Subject: [PATCH] Fix handling of Visibility property on Restore --- src/Mod/TechDraw/Gui/QGIView.cpp | 33 +++++++++++++++++-- src/Mod/TechDraw/Gui/QGIView.h | 4 +-- src/Mod/TechDraw/Gui/QGIViewPart.cpp | 4 +++ .../TechDraw/Gui/ViewProviderDrawingView.cpp | 5 ++- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index b25a959712..3ef8bf8c44 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -113,8 +113,6 @@ QGIView::QGIView() m_lockWidth = (double) sizeLock.width(); m_lockHeight = (double) sizeLock.height(); m_lock->hide(); - - isVisible(true); } QGIView::~QGIView() @@ -122,6 +120,37 @@ QGIView::~QGIView() signalSelectPoint.disconnect_all_slots(); } +void QGIView::isVisible(bool state) +{ + auto feat = getViewObject(); + if (feat != nullptr) { + auto vp = QGIView::getViewProvider(feat); + if (vp != nullptr) { + Gui::ViewProviderDocumentObject* vpdo = dynamic_cast(vp); + if (vpdo != nullptr) { + vpdo->Visibility.setValue(state); + } + } + } +} + +bool QGIView::isVisible(void) +{ + bool result = false; + auto feat = getViewObject(); + if (feat != nullptr) { + auto vp = QGIView::getViewProvider(feat); + if (vp != nullptr) { + Gui::ViewProviderDocumentObject* vpdo = dynamic_cast(vp); + if (vpdo != nullptr) { + result = vpdo->Visibility.getValue(); + } + } + } + return result; +} + + void QGIView::alignTo(QGraphicsItem*item, const QString &alignment) { alignHash.clear(); diff --git a/src/Mod/TechDraw/Gui/QGIView.h b/src/Mod/TechDraw/Gui/QGIView.h index 178710d1b7..f93f8c5777 100644 --- a/src/Mod/TechDraw/Gui/QGIView.h +++ b/src/Mod/TechDraw/Gui/QGIView.h @@ -74,8 +74,8 @@ public: virtual void toggleCache(bool state); virtual void updateView(bool update = false); virtual void drawBorder(void); - virtual void isVisible(bool state) { m_visibility = state; } - virtual bool isVisible(void) {return m_visibility;} + virtual void isVisible(bool state); + virtual bool isVisible(void); virtual void draw(void); virtual void drawCaption(void); virtual void rotateView(void); diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 15367ddc3c..5296c6ac86 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -317,6 +317,10 @@ void QGIViewPart::updateView(bool update) } void QGIViewPart::draw() { + if (!isVisible()) { + return; + } + drawViewPart(); drawMatting(); QGIView::draw(); diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index c7b9079266..7bb0701446 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -133,7 +133,6 @@ void ViewProviderDrawingView::show(void) if (obj->getTypeId().isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { QGIView* qView = getQView(); if (qView) { - qView->isVisible(true); qView->draw(); qView->show(); } @@ -150,7 +149,6 @@ void ViewProviderDrawingView::hide(void) if (obj->getTypeId().isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { QGIView* qView = getQView(); if (qView) { - qView->isVisible(false); qView->draw(); qView->hide(); } @@ -170,7 +168,8 @@ QGIView* ViewProviderDrawingView::getQView(void) if (dvp) { if (dvp->getMDIViewPage()) { if (dvp->getMDIViewPage()->getQGVPage()) { - qView = dynamic_cast(dvp->getMDIViewPage()->getQGVPage()->findQViewForDocObj(getViewObject())); + qView = dynamic_cast(dvp->getMDIViewPage()-> + getQGVPage()->findQViewForDocObj(getViewObject())); } } }