diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp index 7edfb2fadd..bb1b3ddb6a 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp @@ -22,6 +22,10 @@ #include "PreCompiled.h" +#ifndef _PreComp_ +# include +#endif + #include #include "ViewProviderFemPostFilter.h" @@ -77,6 +81,19 @@ ViewProviderFemPostDataAtPoint::ViewProviderFemPostDataAtPoint() { sPixmap = "FEM_PostFilterDataAtPoint"; } +void ViewProviderFemPostDataAtPoint::show() +{ + Gui::ViewProviderDocumentObject::show(); + m_colorStyle->style = SoDrawStyle::FILLED; +} + +void ViewProviderFemPostDataAtPoint::onSelectionChanged(const Gui::SelectionChanges &) +{ + // do not do anything here + // For DataAtPoint the color bar must not be refreshed when it is selected + // because a single point does not make sense with a color range. +} + ViewProviderFemPostDataAtPoint::~ViewProviderFemPostDataAtPoint() { } diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostFilter.h b/src/Mod/Fem/Gui/ViewProviderFemPostFilter.h index 79d3eb2374..d06180e4fc 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostFilter.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostFilter.h @@ -62,6 +62,8 @@ class FemGuiExport ViewProviderFemPostDataAtPoint: public ViewProviderFemPostObj public: /// constructor. ViewProviderFemPostDataAtPoint(); + void show() override; + void onSelectionChanged(const Gui::SelectionChanges &) override; ~ViewProviderFemPostDataAtPoint(); protected: diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp index c2fdad7d0d..210c167da9 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp @@ -699,9 +699,9 @@ void ViewProviderFemPostObject::show(void) { Gui::ViewProviderDocumentObject::show(); m_colorStyle->style = SoDrawStyle::FILLED; // we must update the color bar except for data point filters - auto nameVP = std::string(this->getObject()->getViewProviderName()); - if (nameVP.compare("FemGui::ViewProviderFemPostDataAtPoint") == 0) - return; + //auto nameVP = std::string(this->getObject()->getViewProviderName()); + //if (nameVP.compare("FemGui::ViewProviderFemPostDataAtPoint") == 0) + // return; WriteColorData(true); } @@ -750,21 +750,21 @@ bool ViewProviderFemPostObject::canDelete(App::DocumentObject* obj) const } void ViewProviderFemPostObject::selectionChanged(const Gui::SelectionChanges &sel) +{ + onSelectionChanged(sel); +} + +void ViewProviderFemPostObject::onSelectionChanged(const Gui::SelectionChanges &sel) { // If a FemPostObject is selected in the document tree we must refresh its // color bar. // But don't do this if the object is invisible because other objects with a // color bar might be visible and the color bar is then wrong. - // Also don't do this for point filters because for them a color bar is not sensible. if (sel.Type == sel.AddSelection) { Gui::SelectionObject obj(sel); if (obj.getObject() == this->getObject()) { - if (!this->getObject()->Visibility.getValue()) - return; - auto nameVP = std::string(this->getObject()->getViewProviderName()); - if (nameVP.compare("FemGui::ViewProviderFemPostDataAtPoint") == 0) - return; - WriteColorData(true); + if (this->getObject()->Visibility.getValue()) + WriteColorData(true); } } } diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h index 399fe96340..1ef1b007b7 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h @@ -147,6 +147,7 @@ protected: vtkSmartPointer m_points, m_pointsSurface; void selectionChanged(const Gui::SelectionChanges &); + virtual void onSelectionChanged(const Gui::SelectionChanges &sel); typedef boost::signals2::scoped_connection Connection; Connection connectSelection;