Reduce number of leakes ui handles per editor instance, #3937

This commit is contained in:
heckflosse
2017-06-29 19:09:40 +02:00
parent b0fdc58a07
commit 5f97800e69
4 changed files with 28 additions and 33 deletions

View File

@@ -849,13 +849,15 @@ bool MyExpander::get_expanded()
return expBox ? expBox->get_visible() : false; return expBox ? expBox->get_visible() : false;
} }
void MyExpander::add (Gtk::Container& widget) void MyExpander::add (Gtk::Container& widget, bool setChild)
{ {
child = &widget; if(setChild) {
child = &widget;
}
expBox = Gtk::manage (new ExpanderBox (child)); expBox = Gtk::manage (new ExpanderBox (child));
expBox->add (*child); expBox->add (widget);
pack_start(*expBox, Gtk::PACK_SHRINK, 0); pack_start(*expBox, Gtk::PACK_SHRINK, 0);
child->show(); widget.show();
expBox->hideBox(); expBox->hideBox();
} }
@@ -889,11 +891,6 @@ bool MyExpander::on_toggle(GdkEventButton* event)
return false; return false;
} }
Gtk::Container* MyExpander::getChild()
{
return child;
}
// used to connect a function to the enabled_toggled signal // used to connect a function to the enabled_toggled signal
MyExpander::type_signal_enabled_toggled MyExpander::signal_enabled_toggled() MyExpander::type_signal_enabled_toggled MyExpander::signal_enabled_toggled()
{ {

View File

@@ -265,9 +265,6 @@ public:
return headerWidget ? headerWidget : label; return headerWidget ? headerWidget : label;
} }
/// Get the widget shown/hidden by the expander
Gtk::Container* getChild();
/// Set the collapsed/expanded state of the expander /// Set the collapsed/expanded state of the expander
void set_expanded( bool expanded ); void set_expanded( bool expanded );
@@ -276,7 +273,7 @@ public:
/// Add a Gtk::Container for the content of the expander /// Add a Gtk::Container for the content of the expander
/// Warning: do not manually Show/Hide the widget, because this parameter is handled by the click on the Expander's title /// Warning: do not manually Show/Hide the widget, because this parameter is handled by the click on the Expander's title
void add (Gtk::Container& widget); void add (Gtk::Container& widget, bool setChild = true);
void updateVScrollbars(bool hide); void updateVScrollbars(bool hide);
}; };

View File

@@ -194,7 +194,7 @@ Retinex::Retinex () : FoldableToolPanel (this, "retinex", M ("TP_RETINEX_LABEL")
expsettings = new MyExpander (false, M ("TP_RETINEX_SETTINGS")); expsettings = Gtk::manage(new MyExpander(false, M ("TP_RETINEX_SETTINGS")));
setExpandAlignProperties (expsettings, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); setExpandAlignProperties (expsettings, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
expsettings->signal_button_release_event().connect_notify ( sigc::bind ( sigc::mem_fun (this, &Retinex::foldAllButMe), expsettings) ); expsettings->signal_button_release_event().connect_notify ( sigc::bind ( sigc::mem_fun (this, &Retinex::foldAllButMe), expsettings) );
@@ -474,7 +474,7 @@ Retinex::Retinex () : FoldableToolPanel (this, "retinex", M ("TP_RETINEX_LABEL")
//-------------------------- //--------------------------
expsettings->add (*settingsGrid); expsettings->add (*settingsGrid, false);
expsettings->setLevel (2); expsettings->setLevel (2);
pack_start (*expsettings); pack_start (*expsettings);

View File

@@ -132,15 +132,15 @@ Wavelet::Wavelet() :
wavLabels(Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER))), wavLabels(Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER))),
labmC(Gtk::manage(new Gtk::Label(M("TP_WAVELET_CTYPE") + ":"))), labmC(Gtk::manage(new Gtk::Label(M("TP_WAVELET_CTYPE") + ":"))),
labmNP(Gtk::manage(new Gtk::Label(M("TP_WAVELET_NPTYPE") + ":"))), labmNP(Gtk::manage(new Gtk::Label(M("TP_WAVELET_NPTYPE") + ":"))),
expchroma(new MyExpander(true, M("TP_WAVELET_LEVCH"))), expchroma(Gtk::manage(new MyExpander(true, M("TP_WAVELET_LEVCH")))),
expcontrast(new MyExpander(true, M("TP_WAVELET_LEVF"))), expcontrast(Gtk::manage(new MyExpander(true, M("TP_WAVELET_LEVF")))),
expedge(new MyExpander(true, M("TP_WAVELET_EDGE"))), expedge(Gtk::manage(new MyExpander(true, M("TP_WAVELET_EDGE")))),
expfinal(new MyExpander(true, M("TP_WAVELET_FINAL"))), expfinal(Gtk::manage(new MyExpander(true, M("TP_WAVELET_FINAL")))),
expgamut(new MyExpander(false, M("TP_WAVELET_CONTR"))), expgamut(Gtk::manage(new MyExpander(false, M("TP_WAVELET_CONTR")))),
expnoise(new MyExpander(true, M("TP_WAVELET_NOISE"))), expnoise(Gtk::manage(new MyExpander(true, M("TP_WAVELET_NOISE")))),
expresid(new MyExpander(true, M("TP_WAVELET_RESID"))), expresid(Gtk::manage(new MyExpander(true, M("TP_WAVELET_RESID")))),
expsettings(new MyExpander(false, M("TP_WAVELET_SETTINGS"))), expsettings(Gtk::manage(new MyExpander(false, M("TP_WAVELET_SETTINGS")))),
exptoning(new MyExpander(true, M("TP_WAVELET_TON"))), exptoning(Gtk::manage(new MyExpander(true, M("TP_WAVELET_TON")))),
neutrHBox(Gtk::manage(new Gtk::HBox())) neutrHBox(Gtk::manage(new Gtk::HBox()))
{ {
CurveListener::setMulti(true); CurveListener::setMulti(true);
@@ -838,39 +838,39 @@ Wavelet::Wavelet() :
//----------------------------- //-----------------------------
expsettings->add(*settingsBox); expsettings->add(*settingsBox, false);
expsettings->setLevel(2); expsettings->setLevel(2);
pack_start (*expsettings); pack_start (*expsettings);
expcontrast->add(*levBox); expcontrast->add(*levBox, false);
expcontrast->setLevel(2); expcontrast->setLevel(2);
pack_start (*expcontrast); pack_start (*expcontrast);
expchroma->add(*chBox); expchroma->add(*chBox, false);
expchroma->setLevel(2); expchroma->setLevel(2);
pack_start (*expchroma); pack_start (*expchroma);
exptoning->add(*tonBox); exptoning->add(*tonBox, false);
exptoning->setLevel(2); exptoning->setLevel(2);
pack_start (*exptoning); pack_start (*exptoning);
expnoise->add(*noiseBox); expnoise->add(*noiseBox, false);
expnoise->setLevel(2); expnoise->setLevel(2);
pack_start (*expnoise); pack_start (*expnoise);
expedge->add(*edgBox); expedge->add(*edgBox, false);
expedge->setLevel(2); expedge->setLevel(2);
pack_start (*expedge); pack_start (*expedge);
expgamut->add(*conBox); expgamut->add(*conBox, false);
expgamut->setLevel(2); expgamut->setLevel(2);
pack_start (*expgamut); pack_start (*expgamut);
expresid->add(*resBox); expresid->add(*resBox, false);
expresid->setLevel(2); expresid->setLevel(2);
pack_start(*expresid); pack_start(*expresid);
expfinal->add(*finalBox); expfinal->add(*finalBox, false);
expfinal->setLevel(2); expfinal->setLevel(2);
pack_start(*expfinal); pack_start(*expfinal);
} }
@@ -887,6 +887,7 @@ Wavelet::~Wavelet ()
delete curveEditorG; delete curveEditorG;
delete opacityCurveEditorW; delete opacityCurveEditorW;
delete opacityCurveEditorWL; delete opacityCurveEditorWL;
} }
void Wavelet::wavChanged (double nlevel) void Wavelet::wavChanged (double nlevel)