diff --git a/src/Mod/Part/Gui/ViewProviderBoolean.cpp b/src/Mod/Part/Gui/ViewProviderBoolean.cpp index cd7c99088..748dece6f 100644 --- a/src/Mod/Part/Gui/ViewProviderBoolean.cpp +++ b/src/Mod/Part/Gui/ViewProviderBoolean.cpp @@ -235,6 +235,37 @@ bool ViewProviderMultiFuse::onDelete(const std::vector &) return true; } +bool ViewProviderMultiFuse::canDragObjects() const +{ + return true; +} + +void ViewProviderMultiFuse::dragObject(App::DocumentObject* obj) +{ + Part::MultiFuse* pBool = static_cast(getObject()); + std::vector pShapes = pBool->Shapes.getValues(); + for (std::vector::iterator it = pShapes.begin(); it != pShapes.end(); ++it) { + if (*it == obj) { + pShapes.erase(it); + pBool->Shapes.setValues(pShapes); + break; + } + } +} + +bool ViewProviderMultiFuse::canDropObjects() const +{ + return true; +} + +void ViewProviderMultiFuse::dropObject(App::DocumentObject* obj) +{ + Part::MultiFuse* pBool = static_cast(getObject()); + std::vector pShapes = pBool->Shapes.getValues(); + pShapes.push_back(obj); + pBool->Shapes.setValues(pShapes); +} + PROPERTY_SOURCE(PartGui::ViewProviderMultiCommon,PartGui::ViewProviderPart) @@ -320,3 +351,34 @@ bool ViewProviderMultiCommon::onDelete(const std::vector &) return true; } + +bool ViewProviderMultiCommon::canDragObjects() const +{ + return true; +} + +void ViewProviderMultiCommon::dragObject(App::DocumentObject* obj) +{ + Part::MultiCommon* pBool = static_cast(getObject()); + std::vector pShapes = pBool->Shapes.getValues(); + for (std::vector::iterator it = pShapes.begin(); it != pShapes.end(); ++it) { + if (*it == obj) { + pShapes.erase(it); + pBool->Shapes.setValues(pShapes); + break; + } + } +} + +bool ViewProviderMultiCommon::canDropObjects() const +{ + return true; +} + +void ViewProviderMultiCommon::dropObject(App::DocumentObject* obj) +{ + Part::MultiCommon* pBool = static_cast(getObject()); + std::vector pShapes = pBool->Shapes.getValues(); + pShapes.push_back(obj); + pBool->Shapes.setValues(pShapes); +} diff --git a/src/Mod/Part/Gui/ViewProviderBoolean.h b/src/Mod/Part/Gui/ViewProviderBoolean.h index 04a409f81..f3a0f09cd 100644 --- a/src/Mod/Part/Gui/ViewProviderBoolean.h +++ b/src/Mod/Part/Gui/ViewProviderBoolean.h @@ -62,6 +62,12 @@ public: QIcon getIcon(void) const; void updateData(const App::Property*); bool onDelete(const std::vector &); + + /// drag and drop + bool canDragObjects() const; + void dragObject(App::DocumentObject*); + bool canDropObjects() const; + void dropObject(App::DocumentObject*); }; /// ViewProvider for the MultiFuse feature @@ -80,6 +86,12 @@ public: QIcon getIcon(void) const; void updateData(const App::Property*); bool onDelete(const std::vector &); + + /// drag and drop + bool canDragObjects() const; + void dragObject(App::DocumentObject*); + bool canDropObjects() const; + void dropObject(App::DocumentObject*); };