Re: TGTab

From: Rutger van der Eijk (r36@nikhef.nl)
Date: Wed Jun 02 1999 - 19:45:22 MEST


Hi Laurent,

I need the same feature. 2 weeks ago I tried to implement TGTab::RemoveTab
myself but failed (complicated isue and lake of time at the moment) I
think I was rather close though.

I asked Fons to solve this but it seems he's rather short on time at the
moment. In the meanwhile maybe you could try yourself. Down here my
attempt: (sorry for the Dutch)

Rutger van der Eijk

---------- Forwarded message ----------
Date: Sat, 22 May 1999 01:48:33 +0200 (MET DST)
From: Rutger van der Eijk <r36@lerad.nikhef.nl>
To: Fons Rademakers <Fons.Rademakers@cern.ch>
Subject: TGTab::RemoveTab(..)

Hi Fons,

Ik wil graag de mogelijkheid hebben om ergens een tab te verwijderen
(i.e. permanent) van een TGTab. Ofwel analoog aan
TGCompositeFrame::RemoveFrame(...), maar nu een geheele tab (ofwel
'tabtab' en container, en niet de container contents)

Ik had het volgende in gedachten:

void TGTab::RemoveTab(Int_t tabIndex) // added by RvdE
{
   // Remove container and tabtab of tab with index tabIndex.
   // Does NOT remove the container contents!

   if (tabIndex < 0) return;

   TGFrameElement *elTab, *elCont;
   Int_t  count = 0;

   TIter next(fList);
   next();           // skip first container

   while (elTab = (TGFrameElement *) next()) {
      elCont = (TGFrameElement *) next();
      if (count == tabIndex) {
//         elTab->fFrame->LowerWindow(); // is this necesarry?
         this->RemoveFrame(elTab->fFrame);
         delete elTab->fFrame;
         this->RemoveFrame(elCont->fFrame);
         delete elCont->fFrame;

         // update 'current' tab
         if (tabIndex < fCurrent) {
           fCurrent--;
         }
         else if (tabIndex == fCurrent) {
           fCurrent = -1; // needed to fool TGTab::ChangeTab
           this->SetTab(0);
         }
         break;
      }
      count++;
   }
}


Dit werkt echter niet helemaal. Als ik namelijk na het verwijderen weer
een tab toevoeg (op de 'positie' van de oude tab) dan krijg ik de oude tab
te zien en niet de nieuwe. Blijkbaar zie ik iets over het hoofd. Enig idee
wat?

groetjes,

Rutger



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:34 MET