X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ObjectsBrowser.cpp;h=75543ff5c9d92d572f1c6357e80a01c3429c264e;hb=eb860f799eab680975365d8ce18cec6e04a6f391;hp=0253ec56dfe0d4039312e1eda85fdb33734905ac;hpb=a9e4de1c34c1667e7fe625b24d16e682b64eb076;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.cpp b/src/XGUI/XGUI_ObjectsBrowser.cpp index 0253ec56d..75543ff5c 100644 --- a/src/XGUI/XGUI_ObjectsBrowser.cpp +++ b/src/XGUI/XGUI_ObjectsBrowser.cpp @@ -25,11 +25,13 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -226,34 +228,34 @@ void XGUI_DataTree::processHistoryChange(const QModelIndex& theIndex) update(aModel->index(i, 1, aParent)); update(aModel->index(i, 2, aParent)); } + XGUI_ObjectsBrowser* aObjBrowser = qobject_cast(parent()); + aObjBrowser->workshop()->displayer()->updateViewer(); } void XGUI_DataTree::processEyeClick(const QModelIndex& theIndex) { + XGUI_ObjectsBrowser* aObjBrowser = qobject_cast(parent()); XGUI_DataModel* aModel = dataModel(); ObjectPtr aObj = aModel->object(theIndex); if (aObj.get()) { - ResultPtr aResObj = std::dynamic_pointer_cast(aObj); - XGUI_ObjectsBrowser* aObjBrowser = qobject_cast(parent()); - if (aResObj.get()) { - std::set anObjects; - anObjects.insert(aResObj); - - bool hasHiddenState = aModel->hasHiddenState(theIndex); - if (aObjBrowser && hasHiddenState && !aObjBrowser->workshop()->prepareForDisplay(anObjects)) - return; - if (hasHiddenState) { // #issue 2335(hide all faces then show solid problem) - if (aResObj->isDisplayed()) - aResObj->setDisplayed(false); - aResObj->setDisplayed(true); - } - else - aResObj->setDisplayed(!aResObj->isDisplayed()); - Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY)); - update(theIndex); + std::set anObjects; + anObjects.insert(aObj); + + bool hasHiddenState = aModel->hasHiddenState(theIndex); + if (aObjBrowser && hasHiddenState && !aObjBrowser->workshop()->prepareForDisplay(anObjects)) + return; + if (hasHiddenState) { // #issue 2335(hide all faces then show solid problem) + if (aObj->isDisplayed()) + aObj->setDisplayed(false); + aObj->setDisplayed(true); } + else + aObj->setDisplayed(!aObj->isDisplayed()); + // Update list of selected objects because this event happens after // selection event in object browser + Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY)); + update(theIndex); if (aObjBrowser) { aObjBrowser->onSelectionChanged(); } @@ -658,10 +660,13 @@ void XGUI_ObjectsBrowser::onAfterModelReset() XGUI_DataModel* aModel = myTreeView->dataModel(); QModelIndex aIndex; foreach(ModuleBase_ITreeNode* aNode, myExpandedItems) { - aIndex = aModel->getIndex(aNode, 0); - if (aIndex.isValid() && (myTreeView->dataModel()->hasIndex(aIndex)) ) - myTreeView->setExpanded(aIndex, true); + if (aModel->hasNode(aNode)) { + aIndex = aModel->getIndex(aNode, 0); + if (aIndex.isValid() && (myTreeView->dataModel()->hasIndex(aIndex))) + myTreeView->setExpanded(aIndex, true); + } } + myExpandedItems.clear(); } std::list XGUI_ObjectsBrowser::getStateForDoc(DocumentPtr theDoc) const