TechDraw: Fix child not moving when drag and dropping a view between pages.

This commit is contained in:
PaddleStroke
2024-04-17 17:07:13 +02:00
committed by WandererFan
parent beda33d9e6
commit ffb34ebe54
3 changed files with 24 additions and 6 deletions

View File

@@ -154,10 +154,27 @@ void ViewProviderPageExtension::dropObject(App::DocumentObject* obj)
if (obj->isDerivedFrom<TechDraw::DrawView>()) {
auto dv = static_cast<TechDraw::DrawView*>(obj);
if (dv->findParentPage()) {
dv->findParentPage()->removeView(dv);
std::vector<App::DocumentObject*> deps;
for (auto* dep : dv->getInList()) {
if (dep && dep->isDerivedFrom<TechDraw::DrawView>()) {
deps.push_back(dep);
}
}
getViewProviderPage()->getDrawPage()->addView(dv);
auto* parentPage = dv->findParentPage();
if (parentPage) {
for (auto* dep : deps) {
parentPage->removeView(dep);
}
parentPage->removeView(dv);
}
getViewProviderPage()->getDrawPage()->addView(dv, false);
for (auto* dep : deps) {
getViewProviderPage()->getDrawPage()->addView(dep, false);
}
//don't run ancestor's method as addView does everything we need
return;
}