Optimise opening of colour conversion editor slightly.
authorCarl Hetherington <cth@carlh.net>
Tue, 8 Mar 2016 22:10:52 +0000 (22:10 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 10 Mar 2016 17:44:20 +0000 (17:44 +0000)
src/wx/colour_conversion_editor.cc
src/wx/colour_conversion_editor.h

index 36ca074fa0765efae1429ee4b5ddb3e876acd18a..879b16b6f2762b9bddc4f45411c8c3fb66f07086 100644 (file)
@@ -37,6 +37,7 @@ using boost::lexical_cast;
 
 ColourConversionEditor::ColourConversionEditor (wxWindow* parent, bool yuv)
        : wxPanel (parent, wxID_ANY)
+       , _ignore_chromaticity_changed (false)
 {
        wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
        SetSizer (overall_sizer);
@@ -245,6 +246,8 @@ ColourConversionEditor::set (ColourConversion conversion)
 
        _yuv_to_rgb->SetSelection (conversion.yuv_to_rgb ());
 
+       _ignore_chromaticity_changed = true;
+
        SafeStringStream s;
        s.setf (std::ios::fixed, std::ios::floatfield);
        s.precision (6);
@@ -280,6 +283,8 @@ ColourConversionEditor::set (ColourConversion conversion)
        s << conversion.white().y;
        _white_y->SetValue (std_to_wx (s.str ()));
 
+       _ignore_chromaticity_changed = false;
+
        if (conversion.adjusted_white ()) {
                _adjust_white->SetValue (true);
                s.str ("");
@@ -294,6 +299,7 @@ ColourConversionEditor::set (ColourConversion conversion)
 
        update_rgb_to_xyz ();
        update_bradford ();
+       changed ();
 }
 
 ColourConversion
@@ -365,6 +371,10 @@ ColourConversionEditor::changed ()
 void
 ColourConversionEditor::chromaticity_changed ()
 {
+       if (_ignore_chromaticity_changed) {
+               return;
+       }
+
        update_rgb_to_xyz ();
        changed ();
 }
index 918f2a7d06804d7f500c49ac8ef3c3a3a1707e14..f1186aa2a8a2693fbec5de744c79e2cd7b1607ca 100644 (file)
@@ -49,6 +49,7 @@ private:
        void set_spin_ctrl (wxSpinCtrlDouble *, double);
 
        std::map<wxSpinCtrlDouble*, double> _last_spin_ctrl_value;
+       bool _ignore_chromaticity_changed;
 
        wxSpinCtrlDouble* _input_gamma;
        wxSpinCtrlDouble* _input_power;