Changing lens correction method triggers processing twice, fixes #4740
This commit is contained in:
parent
ab79434beb
commit
ce8ead804b
@ -139,10 +139,10 @@ LensProfilePanel::LensProfilePanel () :
|
|||||||
|
|
||||||
lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged));
|
lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged));
|
||||||
lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged));
|
lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged));
|
||||||
corrOff->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
|
corrOff->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOff));
|
||||||
corrLensfunAuto->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
|
corrLensfunAuto->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAuto));
|
||||||
corrLensfunManual->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
|
corrLensfunManual->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManual));
|
||||||
corrLcpFile->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged));
|
corrLcpFile->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFile));
|
||||||
|
|
||||||
corrUnchanged->hide();
|
corrUnchanged->hide();
|
||||||
|
|
||||||
@ -499,84 +499,88 @@ void LensProfilePanel::onLensfunLensChanged()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LensProfilePanel::onCorrModeChanged()
|
void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged)
|
||||||
{
|
{
|
||||||
Glib::ustring mode;
|
if (rbChanged->get_active()) {
|
||||||
|
// because the method gets called for the enabled AND the disabled RadioButton, we do the processing only for the enabled one
|
||||||
|
Glib::ustring mode;
|
||||||
|
|
||||||
if (corrOff->get_active()) {
|
if (rbChanged == corrOff) {
|
||||||
useLensfunChanged = true;
|
useLensfunChanged = true;
|
||||||
lensfunAutoChanged = true;
|
lensfunAutoChanged = true;
|
||||||
lcpFileChanged = true;
|
lcpFileChanged = true;
|
||||||
|
|
||||||
ckbUseDist->set_sensitive(false);
|
|
||||||
ckbUseVign->set_sensitive(false);
|
|
||||||
ckbUseCA->set_sensitive(false);
|
|
||||||
|
|
||||||
mode = M("GENERAL_NONE");
|
|
||||||
} else if (corrLensfunAuto->get_active()) {
|
|
||||||
useLensfunChanged = true;
|
|
||||||
lensfunAutoChanged = true;
|
|
||||||
lcpFileChanged = true;
|
|
||||||
useDistChanged = true;
|
|
||||||
useVignChanged = true;
|
|
||||||
|
|
||||||
ckbUseDist->set_sensitive(true);
|
ckbUseDist->set_sensitive(false);
|
||||||
ckbUseVign->set_sensitive(true);
|
ckbUseVign->set_sensitive(false);
|
||||||
ckbUseCA->set_sensitive(false);
|
ckbUseCA->set_sensitive(false);
|
||||||
|
|
||||||
if (metadata) {
|
mode = M("GENERAL_NONE");
|
||||||
bool b = disableListener();
|
} else if (rbChanged == corrLensfunAuto) {
|
||||||
const LFDatabase *db = LFDatabase::getInstance();
|
useLensfunChanged = true;
|
||||||
LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel());
|
lensfunAutoChanged = true;
|
||||||
LFLens l = db->findLens(c, metadata->getLens());
|
lcpFileChanged = true;
|
||||||
setLensfunCamera(c.getMake(), c.getModel());
|
useDistChanged = true;
|
||||||
setLensfunLens(l.getLens());
|
useVignChanged = true;
|
||||||
if (b) {
|
|
||||||
enableListener();
|
ckbUseDist->set_sensitive(true);
|
||||||
|
ckbUseVign->set_sensitive(true);
|
||||||
|
ckbUseCA->set_sensitive(false);
|
||||||
|
|
||||||
|
if (metadata) {
|
||||||
|
bool b = disableListener();
|
||||||
|
const LFDatabase *db = LFDatabase::getInstance();
|
||||||
|
LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel());
|
||||||
|
LFLens l = db->findLens(c, metadata->getLens());
|
||||||
|
setLensfunCamera(c.getMake(), c.getModel());
|
||||||
|
setLensfunLens(l.getLens());
|
||||||
|
if (b) {
|
||||||
|
enableListener();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mode = M("LENSPROFILE_CORRECTION_AUTOMATCH");
|
||||||
|
} else if (rbChanged == corrLensfunManual) {
|
||||||
|
useLensfunChanged = true;
|
||||||
|
lensfunAutoChanged = true;
|
||||||
|
lcpFileChanged = true;
|
||||||
|
useDistChanged = true;
|
||||||
|
useVignChanged = true;
|
||||||
|
|
||||||
|
ckbUseDist->set_sensitive(true);
|
||||||
|
ckbUseVign->set_sensitive(true);
|
||||||
|
ckbUseCA->set_sensitive(false);
|
||||||
|
|
||||||
|
mode = M("LENSPROFILE_CORRECTION_MANUAL");
|
||||||
|
} else if (rbChanged == corrLcpFile) {
|
||||||
|
useLensfunChanged = true;
|
||||||
|
lensfunAutoChanged = true;
|
||||||
|
lcpFileChanged = true;
|
||||||
|
useDistChanged = true;
|
||||||
|
useVignChanged = true;
|
||||||
|
|
||||||
|
updateDisabled(true);
|
||||||
|
|
||||||
|
mode = M("LENSPROFILE_CORRECTION_LCPFILE");
|
||||||
|
} else if (rbChanged == corrUnchanged) {
|
||||||
|
useLensfunChanged = false;
|
||||||
|
lensfunAutoChanged = false;
|
||||||
|
lcpFileChanged = false;
|
||||||
|
lensfunCameraChanged = false;
|
||||||
|
lensfunLensChanged = false;
|
||||||
|
|
||||||
|
ckbUseDist->set_sensitive(true);
|
||||||
|
ckbUseVign->set_sensitive(true);
|
||||||
|
ckbUseCA->set_sensitive(true);
|
||||||
|
|
||||||
|
mode = M("GENERAL_UNCHANGED");
|
||||||
}
|
}
|
||||||
|
|
||||||
mode = M("LENSPROFILE_CORRECTION_AUTOMATCH");
|
lcModeChanged = true;
|
||||||
} else if (corrLensfunManual->get_active()) {
|
updateLensfunWarning();
|
||||||
useLensfunChanged = true;
|
|
||||||
lensfunAutoChanged = true;
|
|
||||||
lcpFileChanged = true;
|
|
||||||
useDistChanged = true;
|
|
||||||
useVignChanged = true;
|
|
||||||
|
|
||||||
ckbUseDist->set_sensitive(true);
|
if (listener) {
|
||||||
ckbUseVign->set_sensitive(true);
|
listener->panelChanged(EvLensCorrMode, mode);
|
||||||
ckbUseCA->set_sensitive(false);
|
}
|
||||||
|
|
||||||
mode = M("LENSPROFILE_CORRECTION_MANUAL");
|
|
||||||
} else if (corrLcpFile->get_active()) {
|
|
||||||
useLensfunChanged = true;
|
|
||||||
lensfunAutoChanged = true;
|
|
||||||
lcpFileChanged = true;
|
|
||||||
useDistChanged = true;
|
|
||||||
useVignChanged = true;
|
|
||||||
|
|
||||||
updateDisabled(true);
|
|
||||||
|
|
||||||
mode = M("LENSPROFILE_CORRECTION_LCPFILE");
|
|
||||||
} else if (corrUnchanged->get_active()) {
|
|
||||||
useLensfunChanged = false;
|
|
||||||
lensfunAutoChanged = false;
|
|
||||||
lcpFileChanged = false;
|
|
||||||
lensfunCameraChanged = false;
|
|
||||||
lensfunLensChanged = false;
|
|
||||||
|
|
||||||
ckbUseDist->set_sensitive(true);
|
|
||||||
ckbUseVign->set_sensitive(true);
|
|
||||||
ckbUseCA->set_sensitive(true);
|
|
||||||
|
|
||||||
mode = M("GENERAL_UNCHANGED");
|
|
||||||
}
|
|
||||||
lcModeChanged = true;
|
|
||||||
updateLensfunWarning();
|
|
||||||
|
|
||||||
if (listener) {
|
|
||||||
listener->panelChanged(EvLensCorrMode, mode);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ public:
|
|||||||
|
|
||||||
void onLensfunCameraChanged();
|
void onLensfunCameraChanged();
|
||||||
void onLensfunLensChanged();
|
void onLensfunLensChanged();
|
||||||
void onCorrModeChanged();
|
void onCorrModeChanged(const Gtk::RadioButton *rbChanged);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user