[TD]fix view drag and drop to page
This commit is contained in:
@@ -460,6 +460,61 @@ bool ViewProviderPage::canDelete(App::DocumentObject *obj) const
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ViewProviderPage::canDragObjects() const
|
||||
{
|
||||
// Base::Console().Message("VPP:canDragObjects()\n");
|
||||
return ViewProviderDocumentObject::canDragObjects();
|
||||
}
|
||||
|
||||
bool ViewProviderPage::canDragObject(App::DocumentObject* docObj) const
|
||||
{
|
||||
// Base::Console().Message("VPP:canDragObject()\n");
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) {
|
||||
//DPGI can not be dragged from the Page as it belongs to DPG, not Page
|
||||
return false;
|
||||
}
|
||||
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool ViewProviderPage::canDropObject(App::DocumentObject* docObj) const
|
||||
{
|
||||
// Base::Console().Message("VPP:canDropObject()\n");
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) {
|
||||
//DPGI can not be dropped onto the Page as it belongs to DPG, not Page
|
||||
return false;
|
||||
}
|
||||
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void ViewProviderPage::dropObject(App::DocumentObject* docObj)
|
||||
{
|
||||
// Base::Console().Message("VPP:dropObject()\n");
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawProjGroupItem::getClassTypeId())) {
|
||||
//DPGI can not be dropped onto the Page as it belongs to DPG, not Page
|
||||
ViewProviderDocumentObject::dropObject(docObj);
|
||||
return;
|
||||
}
|
||||
if (docObj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
|
||||
auto dv = static_cast<TechDraw::DrawView*>(docObj);
|
||||
if (dv->findParentPage()) {
|
||||
dv->findParentPage()->removeView(dv);
|
||||
}
|
||||
getDrawPage()->addView(dv);
|
||||
//don't run ancestor's method as addView does everything we need
|
||||
return;
|
||||
}
|
||||
ViewProviderDocumentObject::dropObject(docObj);
|
||||
}
|
||||
|
||||
//! Redo the whole visual page
|
||||
void ViewProviderPage::onGuiRepaint(const TechDraw::DrawPage* dp)
|
||||
{
|
||||
|
||||
@@ -59,6 +59,12 @@ public:
|
||||
|
||||
void attach(App::DocumentObject *) override;
|
||||
void setDisplayMode(const char* ModeName) override;
|
||||
|
||||
bool canDragObjects() const override;
|
||||
bool canDragObject(App::DocumentObject* docObj) const override;
|
||||
bool canDropObject(App::DocumentObject* docObj) const override;
|
||||
void dropObject(App::DocumentObject* docObj) override;
|
||||
|
||||
bool useNewSelectionModel() const override {return false;}
|
||||
/// returns a list of all possible modes
|
||||
std::vector<std::string> getDisplayModes() const override;
|
||||
|
||||
Reference in New Issue
Block a user