I agree completely with you proposal. We wanted to do this already
for a long time (to make general "observed" containers instead of
just the two specific cases for Canvases and Browsers).
So the change will be coming.
Cheers, Fons.
>
> Hello list the current TObject dtor looks as follows:
>
>
> //______________________________________________________________________________
> TObject::~TObject()
> {
> // TObject destructor. Removes object from all canvases and object browsers
> // iff observer bit is on and remove from the global object table.
>
> // if (!TestBit(kNotDeleted))
> // Fatal("~TObject", "object deleted twice");
>
> if (gROOT) {
> if (gROOT->MustClean()) {
> if (gROOT == this) return;
> if (TestBit(kObjInCanvas)) {
> if (gROOT->GetListOfCanvases()) gROOT->GetListOfCanvases()->RecursiveRemove(this);
> if (gROOT->GetListOfBrowsers()) gROOT->GetListOfBrowsers()->RecursiveRemove(this);
> }
> }
> }
>
> fBits &= ~kNotDeleted;
>
> if (fgObjectStat && gObjectTable) gObjectTable->Remove(this);
> }
> ===============
> I think it will be useful to change things as follows:
>
> TObject::~TObject()
> {
> // TObject destructor. Removes object from all "checked" lists (containers ?)
> // if observer bit is on and remove from the global object table.
>
> if (gROOT) {
> if (gROOT->MustClean()) {
> if (gROOT == this) return;
> if (TestBit(kInCheckedList)) {
> TList *checked = gROOT->GetListOfCheckedContainers();
> if (checked) {
> TIter next(checked);
> TList *observer = 0;
> while (observer = (TList *)next())
> observer->RecursiveRemove(this)
> }
> }
> }
> }
>
> fBits &= ~kNotDeleted;
>
> if (fgObjectStat && gObjectTable) gObjectTable->Remove(this);
> }
>
>
> This allows the user code introduce their own "check in" lists to satisfy their own needs as well not only TCanvas
> and TBrowser.
>
> Valery
> =================================================================
> Dr. Valeri Faine (Fine)
> ------------------- Phone: +1 516 344 7806
> Brookhaven National Laboratory FAX : +1 516 344 4206
> Bldg. 510A /STAR mailto:fine@bnl.gov
> Upton, New York, 11973-5000 http://nicewww.cern.ch/~fine
> USA
>
> Dr. Valery Fine Telex : 911621 dubna su
> -----------
> LCTA/Joint Inst.for Nuclear Res. Phone : +7 09621 6 40 80
> 141980 Dubna, Moscow region Fax : +7 09621 6 51 45
> Russia mailto:fine@main1.jinr.dubna.su
>
-- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland Phone: +41 22 7679248 E-Mail: Fons.Rademakers@cern.ch Fax: +41 22 7677910