diff --git a/src/Mod/TechDraw/Gui/ViewProviderPageExtension.cpp b/src/Mod/TechDraw/Gui/ViewProviderPageExtension.cpp index 5cf0e88bbb..48c56d1e78 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPageExtension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPageExtension.cpp @@ -71,6 +71,22 @@ bool ViewProviderPageExtension::extensionCanDropObject(App::DocumentObject* obj) return false; } +bool ViewProviderPageExtension::extensionCanDropObjectEx(App::DocumentObject* obj, App::DocumentObject* owner, + const char* subname, + const std::vector& elements) const +{ + //only DrawView objects can live on pages (except special case Template) + if (obj->isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { + return true; + } + if (obj->isDerivedFrom(TechDraw::DrawTemplate::getClassTypeId())) { + //don't let another extension try to drop templates + return true; + } + + return false; +} + void ViewProviderPageExtension::extensionDropObject(App::DocumentObject* obj) { if (obj->isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { diff --git a/src/Mod/TechDraw/Gui/ViewProviderPageExtension.h b/src/Mod/TechDraw/Gui/ViewProviderPageExtension.h index 755e986a1c..0971827105 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPageExtension.h +++ b/src/Mod/TechDraw/Gui/ViewProviderPageExtension.h @@ -46,6 +46,9 @@ public: void extensionDragObject(App::DocumentObject*) override; bool extensionCanDropObjects() const override; bool extensionCanDropObject(App::DocumentObject*) const override; + bool extensionCanDropObjectEx(App::DocumentObject* obj, App::DocumentObject* owner, + const char* subname, + const std::vector& elements) const override; void extensionDropObject(App::DocumentObject*) override; void dropObject(App::DocumentObject* docObj);