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

View File

@@ -265,9 +265,6 @@ public:
return headerWidget ? headerWidget : label;
}
/// Get the widget shown/hidden by the expander
Gtk::Container* getChild();
/// Set the collapsed/expanded state of the expander
void set_expanded( bool expanded );
@@ -276,7 +273,7 @@ public:
/// 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
void add (Gtk::Container& widget);
void add (Gtk::Container& widget, bool setChild = true);
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);
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);
pack_start (*expsettings);

View File

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