diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 8a6fd06e4..fbdddf63a 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -2308,8 +2308,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) tempsym = params->colorappearance.tempout; greensym = params->colorappearance.greenout; } - if (params->colorappearance.enabled) { - acListener->wbCamChanged(tempsym, greensym); //real temp and tint. + if (params->colorappearance.enabled && acListener) { + acListener->wbCamChanged(tempsym, greensym, params->colorappearance.autotempout); //real temp and tint. } } else { diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index fdd6676e6..e76d17336 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -372,7 +372,7 @@ public : virtual void autoCamChanged(double ccam, double ccamout) = 0; virtual void adapCamChanged(double cadap) = 0; virtual void ybCamChanged(int yb) = 0; - virtual void wbCamChanged(double tem, double tin) = 0; + virtual void wbCamChanged(double tem, double tin, bool autotemp) = 0; }; diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index 0390ef869..d18cddcad 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -1880,18 +1880,36 @@ void ColorAppearance::adapCamChanged (double cadap) } -void ColorAppearance::wbCamChanged (double temp, double tin) +void ColorAppearance::wbCamChanged (double temp, double tin, bool autotemp) {//reactivate this function idle_register.add( - [this, temp, tin]() -> bool + [this, temp, tin, autotemp]() -> bool + { + if (temp != tempout->getValue()) { + disableListener(); + tempout->setValue(temp); + enableListener(); + listener->panelChanged (EvCATtempout, tempout->getTextValue()); + } + if (tin != greenout->getValue()) { + disableListener(); + greenout->setValue(tin); + enableListener(); + listener->panelChanged (EvCATgreenout, greenout->getTextValue()); + } + /* disableListener(); tempout->setValue(temp); greenout->setValue(tin); enableListener(); - listener->panelChanged (EvCATgreenout, greenout->getTextValue()); - listener->panelChanged (EvCATtempout, tempout->getTextValue()); + + if(!autotemp) { + listener->panelChanged (EvCATgreenout, "");//greenout->getTextValue()); + listener->panelChanged (EvCATtempout, "");//tempout->getTextValue()); + }*/ + return false; } ); diff --git a/rtgui/colorappearance.h b/rtgui/colorappearance.h index 714f3e557..e8f6084cd 100644 --- a/rtgui/colorappearance.h +++ b/rtgui/colorappearance.h @@ -66,7 +66,7 @@ public: void autoCamChanged (double ccam, double ccamout) override; bool autoCamComputed_ (); void adapCamChanged (double cadap) override; - void wbCamChanged(double tem, double tin) override; + void wbCamChanged(double tem, double tin, bool autotemp) override; bool adapCamComputed_ (); void ybCamChanged (int yb) override; bool ybCamComputed_ ();