[FEM] PostObject: improve color bar refreshing

- for data point filters the color bar must not be updated
This commit is contained in:
Uwe
2022-07-26 04:00:02 +02:00
parent c4b8983a27
commit 67e836b7e9

View File

@@ -698,11 +698,13 @@ void ViewProviderFemPostObject::hide(void) {
void ViewProviderFemPostObject::show(void) {
Gui::ViewProviderDocumentObject::show();
m_colorStyle->style = SoDrawStyle::FILLED;
// we must update the color bar
// 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;
WriteColorData(true);
}
void ViewProviderFemPostObject::OnChange(Base::Subject< int >& /*rCaller*/, int /*rcReason*/) {
bool ResetColorBarRange = false;
WriteColorData(ResetColorBarRange);
@@ -750,16 +752,19 @@ bool ViewProviderFemPostObject::canDelete(App::DocumentObject* obj) const
void ViewProviderFemPostObject::selectionChanged(const Gui::SelectionChanges &sel)
{
// If a FemPostObject is selected in the document tree we must refresh its
// Field property to update the color bar.
// But don't do this if the object is invisible because otherobjects with a
// 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);
}
}
}