diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index af6413c60..f037e46c9 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -32,6 +32,7 @@ # include # include # include +# include # include #endif @@ -476,7 +477,7 @@ void Document::slotDeletedObject(const App::DocumentObject& Obj) void Document::slotChangedObject(const App::DocumentObject& Obj, const App::Property& Prop) { - //Base::Console().Log("Document::slotChangedObject() called\n"); + //Base::Console().Log("Document::slotChangedObject() called\n"); ViewProvider* viewProvider = getViewProvider(&Obj); if (viewProvider) { try { @@ -1278,7 +1279,12 @@ Gui::MDIView* Document::getViewOfViewProvider(Gui::ViewProvider* vp) const std::list mdis = getMDIViewsOfType(View3DInventor::getClassTypeId()); for (std::list::const_iterator it = mdis.begin(); it != mdis.end(); ++it) { View3DInventor* view = static_cast(*it); - if (view->getViewer()->hasViewProvider(vp)) + SoSearchAction searchAction; + searchAction.setNode(vp->getRoot()); + searchAction.setInterest(SoSearchAction::FIRST); + searchAction.apply(view->getViewer()->getSceneGraph()); + SoPath* selectionPath = searchAction.getPath(); + if (selectionPath) return *it; }