fixes #0002633 - body disappear if dragged out of Part container

This commit is contained in:
Sergo 2016-12-03 23:16:42 -05:00 committed by wmayer
parent c770d747ff
commit 12b0e0f999
2 changed files with 28 additions and 0 deletions

View File

@ -62,6 +62,7 @@
#include "View3DInventorViewer.h"
#include "BitmapFactory.h"
#include "ViewProviderDocumentObject.h"
#include "ViewProviderDocumentObjectGroup.h"
#include "Selection.h"
#include "WaitCursor.h"
#include "Thumbnail.h"
@ -1476,5 +1477,22 @@ void Document::handleChildren3D(ViewProvider* viewProvider)
}
}
}
} else if (viewProvider && viewProvider->isDerivedFrom(ViewProviderDocumentObjectGroup::getClassTypeId())) {
ViewProviderDocumentObject* vp = static_cast<ViewProviderDocumentObject *>(viewProvider);
auto* ext = vp->getObject()->getExtensionByType<App::GroupExtension>();
std::vector<App::DocumentObject*> children = ext->getObjects();
for (auto& child : children) {
ViewProvider* ChildViewProvider = getViewProvider(child);
if (ChildViewProvider) {
for (BaseView* view : d->baseViews) {
View3DInventor *activeView = dynamic_cast<View3DInventor *>(view);
if (activeView && !activeView->getViewer()->hasViewProvider(ChildViewProvider)) {
activeView->getViewer()->addViewProvider(ChildViewProvider);
}
}
}
}
}
}

View File

@ -53,6 +53,8 @@
#include "MenuManager.h"
#include "Application.h"
#include "MainWindow.h"
#include "View3DInventor.h"
#include "View3DInventorViewer.h"
using namespace Gui;
@ -634,6 +636,14 @@ void TreeWidget::dropEvent(QDropEvent *event)
Gui::ViewProvider* vpp = static_cast<DocumentObjectItem *>(parent)->object();
vpp->dragObject(obj);
}
std::list<MDIView*> baseViews = gui->getMDIViews();
for (MDIView* view : baseViews) {
View3DInventor *activeView = dynamic_cast<View3DInventor *>(view);
if (activeView && !activeView->getViewer()->hasViewProvider(vpc)) {
activeView->getViewer()->addViewProvider(vpc);
}
}
}
gui->commitCommand();
}