fixes #0002633 - body disappear if dragged out of Part container
This commit is contained in:
parent
c770d747ff
commit
12b0e0f999
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user