diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp index 9868bd8dac..ab6509f272 100644 --- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp +++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp @@ -120,12 +120,9 @@ void CmdTechDrawToggleFrame::activated(int iMsg) bool CmdTechDrawToggleFrame::isActive() { - if (PreferencesGui::getViewFrameMode() != ViewFrameMode::Manual) { - return false; - } - - auto mvp = dynamic_cast(Gui::getMainWindow()->activeWindow()); - return mvp != nullptr; + bool havePage = DrawGuiUtil::needPage(this); + bool haveView = DrawGuiUtil::needView(this); + return (havePage && haveView && PreferencesGui::getViewFrameMode() == ViewFrameMode::Manual); } //=========================================================================== diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index 3738769b14..4ad708288b 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -447,7 +447,9 @@ void MDIViewPage::contextMenuEvent(QContextMenuEvent* event) menu.addAction(m_exportDXFAction); menu.addAction(m_exportPDFAction); menu.addAction(m_printAllAction); - if (PreferencesGui::getViewFrameMode() != ViewFrameMode::Manual) { + if (PreferencesGui::getViewFrameMode() == ViewFrameMode::Manual) { + m_toggleFrameAction->setEnabled(true); + } else { m_toggleFrameAction->setEnabled(false); } menu.exec(event->globalPos()); diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 12a4289855..eb58261a5d 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -470,6 +470,7 @@ void QGIViewPart::drawAllVertexes() // dvp and vp already validated auto dvp(static_cast(getViewObject())); auto vp(static_cast(getViewProvider(getViewObject()))); + ViewProviderPage* vpPage = vp->getViewProviderPage(); QColor vertexColor = PreferencesGui::getAccessibleQColor(PreferencesGui::vertexQColor()); const std::vector& verts = dvp->getVertexGeometry(); @@ -485,7 +486,8 @@ void QGIViewPart::drawAllVertexes() cmItem->setZValue(ZVALUE::VERTEX); bool showMark = ( (!isExporting() && vp->ArcCenterMarks.getValue()) || - (isExporting() && Preferences::printCenterMarks()) ); + (isExporting() && Preferences::printCenterMarks()) || + (vpPage->getFrameState() && PreferencesGui::getViewFrameMode() == ViewFrameMode::Manual)); cmItem->setVisible(showMark); } else { //regular Vertex @@ -498,7 +500,8 @@ void QGIViewPart::drawAllVertexes() item->setRadius(getVertexSize()); item->setPrettyNormal(); item->setZValue(ZVALUE::VERTEX); - item->setVisible(m_isHovered || isSelected()); + item->setVisible(m_isHovered || isSelected() || + (vpPage->getFrameState() && PreferencesGui::getViewFrameMode() == ViewFrameMode::Manual)); } } } @@ -1353,6 +1356,13 @@ void QGIViewPart::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) return; } + auto vp(static_cast(getViewProvider(getViewObject()))); + ViewProviderPage* vpPage = vp->getViewProviderPage(); + if (vpPage->getFrameState() && + PreferencesGui::getViewFrameMode() == ViewFrameMode::Manual) { + return; + } + bool hideCenters = hideCenterMarks(); for (auto& child : childItems()) {