diff --git a/src/Mod/TechDraw/Gui/QGIViewClip.cpp b/src/Mod/TechDraw/Gui/QGIViewClip.cpp index c22c9a60b1..be1a03f738 100644 --- a/src/Mod/TechDraw/Gui/QGIViewClip.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewClip.cpp @@ -38,6 +38,7 @@ #include "QGCustomClip.h" #include "QGCustomRect.h" #include "Rez.h" +#include "ViewProviderViewClip.h" using namespace TechDrawGui; @@ -155,6 +156,13 @@ void QGIViewClip::drawClip() } } } + + auto* vpClip = freecad_cast(getViewProvider(viewClip)); + if (!vpClip) { + return; + } + + m_cliparea->setFlag(QGraphicsItem::ItemClipsChildrenToShape, vpClip->ClipChildren.getValue()); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp index 4664410531..a9b0a4391d 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp @@ -35,6 +35,7 @@ #include #include "ViewProviderViewClip.h" +#include "QGIViewClip.h" using namespace TechDrawGui; @@ -44,6 +45,9 @@ ViewProviderViewClip::ViewProviderViewClip() { sPixmap = "actions/TechDraw_ClipGroup"; + ADD_PROPERTY_TYPE(ClipChildren,(true), "Clip", App::Prop_None, "True clips children. False shows entire child views"); + + // Do not show in property editor why? wf WF: because DisplayMode applies only to coin and we // don't use coin. DisplayMode.setStatus(App::Property::Hidden, true); @@ -146,4 +150,15 @@ void ViewProviderViewClip::dropObject(App::DocumentObject* docObj) } getObject()->addView(dv); -} \ No newline at end of file +} + +void ViewProviderViewClip::onChanged(const App::Property* prop) +{ + if (prop == &ClipChildren) { + QGIView* qgiv = getQView(); + if (qgiv) { + qgiv->updateView(true); + } + } +} + diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h index a33f61bbe4..5f4d32cbb3 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h @@ -43,11 +43,15 @@ public: /// destructor ~ViewProviderViewClip() override; + App::PropertyBool ClipChildren; + bool useNewSelectionModel() const override {return false;} TechDraw::DrawViewClip* getViewObject() const override; TechDraw::DrawViewClip* getObject() const; + void onChanged(const App::Property *prop) override; + /// Hide the object in the view void hide() override; /// Show the object in the view