diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp index d76dfe7ab0..862efa54d7 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp @@ -144,19 +144,23 @@ void ViewProviderPage::hide(void) void ViewProviderPage::removeMDIView(void) { - if (!m_mdiView.isNull()) { //m_mdiView is a QPointer - // https://forum.freecadweb.org/viewtopic.php?f=3&t=22797&p=182614#p182614 - //Gui::getMainWindow()->activatePreviousWindow(); - QList wList= Gui::getMainWindow()->windows(); - bool found = wList.contains(m_mdiView); - if (found) { - Gui::getMainWindow()->removeWindow(m_mdiView); - Gui::MDIView* aw = Gui::getMainWindow()->activeWindow(); //WF: this bit should be in the remove window logic, not here. - if (aw != nullptr) { - aw->showMaximized(); - } - } + if (m_mdiView.isNull()) { + return; } + + //m_mdiView is a QPointer + // https://forum.freecadweb.org/viewtopic.php?f=3&t=22797&p=182614#p182614 + //Gui::getMainWindow()->activatePreviousWindow(); + QList wList= Gui::getMainWindow()->windows(); + if (!wList.contains(m_mdiView)) + return; + + Gui::getMainWindow()->removeWindow(m_mdiView); + Gui::MDIView* aw = Gui::getMainWindow()->activeWindow(); //WF: this bit should be in the remove window logic, not here. + if (aw == nullptr) { + return; + } + aw->showMaximized(); } void ViewProviderPage::updateData(const App::Property* prop) @@ -250,22 +254,20 @@ void ViewProviderPage::setupContextMenu(QMenu* menu, QObject* receiver, const ch bool ViewProviderPage::setEdit(int ModNum) { - bool rc = true; if (ModNum == _SHOWDRAWING) { Visibility.setValue(true); showMDIViewPage(); // show the drawing - rc = false; //finished editing + return false; //finished editing } else if (ModNum == _TOGGLEUPDATE) { auto page = getDrawPage(); if (page != nullptr) { page->KeepUpdated.setValue(!page->KeepUpdated.getValue()); page->recomputeFeature(); } - rc = false; + return false; } else { - rc = Gui::ViewProviderDocumentObject::setEdit(ModNum); + return Gui::ViewProviderDocumentObject::setEdit(ModNum); } - return rc; } bool ViewProviderPage::doubleClicked(void) @@ -277,12 +279,8 @@ bool ViewProviderPage::doubleClicked(void) bool ViewProviderPage::showMDIViewPage() { - if (isRestoring()) { + if (isRestoring() || !Visibility.getValue()) return true; - } - if (!Visibility.getValue()) { - return true; - } if (m_mdiView.isNull()){ Gui::Document* doc = Gui::Application::Instance->getDocument @@ -334,37 +332,34 @@ std::vector ViewProviderPage::claimChildren(void) const const std::vector &views = getDrawPage()->Views.getValues(); try { - for (std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { - TechDraw::DrawView* featView = dynamic_cast (*it); - App::DocumentObject *docObj = *it; - //DrawRichAnno with no parent is child of Page - TechDraw::DrawRichAnno* dra = dynamic_cast (*it); - if (dra != nullptr) { - if (dra->AnnoParent.getValue() != nullptr) { - continue; //has a parent somewhere else - } else { - temp.push_back(*it); //no parent, belongs to page - continue; - } - } + for (std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { + TechDraw::DrawView* featView = dynamic_cast (*it); + App::DocumentObject *docObj = *it; + //DrawRichAnno with no parent is child of Page + TechDraw::DrawRichAnno* dra = dynamic_cast (*it); + if (dra != nullptr) { + if (dra->AnnoParent.getValue() == nullptr) { + temp.push_back(*it); //no parent, belongs to page + } + continue; //has a parent somewhere else + } - // Don't collect if dimension, projection group item, hatch or member of ClipGroup as these should be grouped elsewhere - if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId()) || - docObj->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId()) || - docObj->isDerivedFrom(TechDraw::DrawHatch::getClassTypeId()) || - docObj->isDerivedFrom(TechDraw::DrawViewBalloon::getClassTypeId()) || - docObj->isDerivedFrom(TechDraw::DrawRichAnno::getClassTypeId()) || - docObj->isDerivedFrom(TechDraw::DrawLeaderLine::getClassTypeId()) || - docObj->isDerivedFrom(TechDraw::DrawWeldSymbol::getClassTypeId()) || - (featView && featView->isInClip()) ) - continue; - else - temp.push_back(*it); - } - return temp; + // Don't collect if dimension, projection group item, hatch or member of ClipGroup as these should be grouped elsewhere + if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId()) || + docObj->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId()) || + docObj->isDerivedFrom(TechDraw::DrawHatch::getClassTypeId()) || + docObj->isDerivedFrom(TechDraw::DrawViewBalloon::getClassTypeId()) || + docObj->isDerivedFrom(TechDraw::DrawRichAnno::getClassTypeId()) || + docObj->isDerivedFrom(TechDraw::DrawLeaderLine::getClassTypeId()) || + docObj->isDerivedFrom(TechDraw::DrawWeldSymbol::getClassTypeId()) || + (featView && featView->isInClip()) ) + continue; + else + temp.push_back(*it); + } + return temp; } catch (...) { - std::vector tmp; - return tmp; + return std::vector(); } } @@ -381,20 +376,17 @@ MDIViewPage* ViewProviderPage::getMDIViewPage() const if (m_mdiView.isNull()) { Base::Console().Log("INFO - ViewProviderPage::getMDIViewPage has no m_mdiView!\n"); return nullptr; - } else { - return m_mdiView; } + + return m_mdiView; } void ViewProviderPage::onChanged(const App::Property *prop) { - if (prop == &(ShowGrid)) { - setGrid(); - } else if (prop == &(GridSpacing)) { + if (prop == &(ShowGrid) || prop == &(GridSpacing)) { setGrid(); } - Gui::ViewProviderDocumentObject::onChanged(prop); } @@ -422,8 +414,7 @@ bool ViewProviderPage::isShow(void) const bool ViewProviderPage::getFrameState(void) { - bool result = ShowFrames.getValue(); - return result; + return ShowFrames.getValue(); } void ViewProviderPage::setFrameState(bool state)