ROOT logo
// @(#)root/gui:$Id: TGListTree.cxx 41909 2011-11-11 14:46:39Z pcanal $
// Author: Fons Rademakers   25/02/98

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/
/**************************************************************************

    This source is based on Xclass95, a Win95-looking GUI toolkit.
    Copyright (C) 1996, 1997 David Barth, Ricky Ralston, Hector Peraza.

    Xclass95 is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

**************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGListTree and TGListTreeItem                                        //
//                                                                      //
// A list tree is a widget that can contain a number of items           //
// arranged in a tree structure. The items are represented by small     //
// folder icons that can be either open or closed.                      //
//                                                                      //
// The TGListTree is user callable. The TGListTreeItem is a service     //
// class of the list tree.                                              //
//                                                                      //
// A list tree can generate the following events:                       //
// kC_LISTTREE, kCT_ITEMCLICK, which button, location (y<<16|x).        //
// kC_LISTTREE, kCT_ITEMDBLCLICK, which button, location (y<<16|x).     //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include <stdlib.h>

#include "TROOT.h"
#include "TGListTree.h"
#include "TGPicture.h"
#include "TGCanvas.h"
#include "TGScrollBar.h"
#include "TGToolTip.h"
#include "KeySymbols.h"
#include "TGTextEditDialogs.h"
#include "TGResourcePool.h"
#include "TGMsgBox.h"
#include "TError.h"
#include "TColor.h"
#include "TSystem.h"
#include "TString.h"
#include "TObjString.h"
#include "TGDNDManager.h"
#include "TBufferFile.h"
#include "Riostream.h"

Pixel_t          TGListTree::fgGrayPixel = 0;
const TGFont    *TGListTree::fgDefaultFont = 0;
TGGC            *TGListTree::fgActiveGC = 0;
TGGC            *TGListTree::fgDrawGC = 0;
TGGC            *TGListTree::fgLineGC = 0;
TGGC            *TGListTree::fgHighlightGC = 0;
TGGC            *TGListTree::fgColorGC = 0;
const TGPicture *TGListTree::fgOpenPic = 0;
const TGPicture *TGListTree::fgClosedPic = 0;
const TGPicture *TGListTree::fgCheckedPic = 0;
const TGPicture *TGListTree::fgUncheckedPic = 0;


ClassImp(TGListTreeItem)
ClassImp(TGListTreeItemStd)
ClassImp(TGListTree)

/******************************************************************************/
/******************************************************************************/
// TGListTreeItem
/******************************************************************************/

//______________________________________________________________________________
TGListTreeItem::TGListTreeItem(TGClient *client) :
   fClient(client),
   fParent    (0), fFirstchild(0), fLastchild (0), fPrevsibling(0), 
   fNextsibling(0),fOpen (kFALSE), fDNDState  (0),
   fY         (0), fXtext     (0), fYtext(0), fHeight(0)
{
   // Constructor.
}

//______________________________________________________________________________
UInt_t TGListTreeItem::GetPicWidth() const
{
   // Return width of item's icon.

   const TGPicture *pic = GetPicture();
   return (pic) ? pic->GetWidth() : 0;
}

/******************************************************************************/
/******************************************************************************/
// TGListTreeItemStd
/******************************************************************************/

//______________________________________________________________________________
TGListTreeItemStd::TGListTreeItemStd(TGClient *client, const char *name,
                                     const TGPicture *opened,
                                     const TGPicture *closed,
                                     Bool_t checkbox) :
   TGListTreeItem(client)
{
   // Create list tree item.

   fText = name;
   fCheckBox = checkbox;
   fChecked = kTRUE;

   if (!opened)
      opened = TGListTree::GetOpenPic();
   else
      ((TGPicture *)opened)->AddReference();

   if (!closed)
      closed = TGListTree::GetClosedPic();
   else
      ((TGPicture *)closed)->AddReference();

   fOpenPic   = opened;
   fClosedPic = closed;

   fCheckedPic   = TGListTree::GetCheckedPic();
   fUncheckedPic = TGListTree::GetUncheckedPic();

   fActive = kFALSE;

   fOwnsData = kFALSE;
   fUserData = 0;

   fHasColor = kFALSE;
   fColor = 0;
   fDNDState = 0;
}

//______________________________________________________________________________
TGListTreeItemStd::~TGListTreeItemStd()
{
   // Delete list tree item.

   if (fOwnsData && fUserData) {
      TObject *obj = static_cast<TObject *>(fUserData);
      delete dynamic_cast<TObject *>(obj);
   }
   fClient->FreePicture(fOpenPic);
   fClient->FreePicture(fClosedPic);
   fClient->FreePicture(fCheckedPic);
   fClient->FreePicture(fUncheckedPic);
}

//______________________________________________________________________________
Pixel_t TGListTreeItemStd::GetActiveColor() const
{
   // Return color for marking items that are active or selected.

   return TGFrame::GetDefaultSelectedBackground();
}

//______________________________________________________________________________
Bool_t TGListTreeItemStd::HasCheckedChild(Bool_t first)
{
   // Add all child items of 'item' into the list 'checked'.

   TGListTreeItem *item = this;

   while (item) {
      if (item->IsChecked()) {
         return kTRUE;
      }
      if (item->GetFirstChild()) {
         if (item->GetFirstChild()->HasCheckedChild())
            return kTRUE;
      }
      if (!first)
         item = item->GetNextSibling();
      else
         break;
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TGListTreeItemStd::HasUnCheckedChild(Bool_t first)
{
   // Add all child items of 'item' into the list 'checked'.

   TGListTreeItem *item = this;

   while (item) {
      if (!item->IsChecked()) {
         return kTRUE;
      }
      if (item->GetFirstChild()) {
         if (item->GetFirstChild()->HasUnCheckedChild())
            return kTRUE;
      }
      if (!first)
         item = item->GetNextSibling();
      else
         break;
   }
   return kFALSE;
}

//______________________________________________________________________________
void TGListTreeItemStd::UpdateState()
{
   // Update the state of the node 'item' according to the children states.

   if ((!fChecked && HasCheckedChild(kTRUE)) ||
       (fChecked && HasUnCheckedChild(kTRUE))) {
      SetCheckBoxPictures(gClient->GetPicture("checked_dis_t.xpm"),
                          gClient->GetPicture("unchecked_dis_t.xpm"));
   }
   else {
      SetCheckBoxPictures(gClient->GetPicture("checked_t.xpm"),
                          gClient->GetPicture("unchecked_t.xpm"));
   }
}

//______________________________________________________________________________
void TGListTreeItemStd::CheckAllChildren(Bool_t state)
{
   // Set all child items of this one checked if state=kTRUE,
   // unchecked if state=kFALSE.
   
   if (state) {
      if (!IsChecked())
         CheckItem();
   } else {
      if (IsChecked())
         Toggle();
   }
   CheckChildren(GetFirstChild(), state);
   UpdateState();   
}

//______________________________________________________________________________
void TGListTreeItemStd::CheckChildren(TGListTreeItem *item, Bool_t state)
{
   // Set all child items of 'item' checked if state=kTRUE;
   // unchecked if state=kFALSE.

   if (!item) return;

   while (item) {
      if (state){
         if (!item->IsChecked())
            item->CheckItem();
      } else {
         if (item->IsChecked())
            item->Toggle();
      }
      if (item->GetFirstChild()) {
         CheckChildren(item->GetFirstChild(), state);
      }
      item->UpdateState();   
      item = item->GetNextSibling();
   }
}

//______________________________________________________________________________
void TGListTreeItemStd::SetCheckBox(Bool_t on)
{
   // Set a check box on the tree node.

   fCheckBox = on;
}

//___________________________________________________________________________
void TGListTreeItemStd::SetCheckBoxPictures(const TGPicture *checked,
                                         const TGPicture *unchecked)
{
   // Change list tree check item icons.

   fClient->FreePicture(fCheckedPic);
   fClient->FreePicture(fUncheckedPic);

   if (!checked) {
         ::Warning("TGListTreeItem::SetCheckBoxPictures", "checked picture not specified, defaulting to checked_t");
         checked = fClient->GetPicture("checked_t.xpm");
   } else
      ((TGPicture *)checked)->AddReference();

   if (!unchecked) {
         ::Warning("TGListTreeItem::SetCheckBoxPictures", "unchecked picture not specified, defaulting to unchecked_t");
         unchecked = fClient->GetPicture("unchecked_t.xpm");
   } else
      ((TGPicture *)unchecked)->AddReference();

   fCheckedPic   = checked;
   fUncheckedPic = unchecked;
}

//___________________________________________________________________________
void TGListTreeItemStd::SetPictures(const TGPicture *opened, const TGPicture *closed)
{
   // Change list tree item icons.

   fClient->FreePicture(fOpenPic);
   fClient->FreePicture(fClosedPic);

   if (!opened) {
      ::Warning("TGListTreeItem::SetPictures", "opened picture not specified, defaulting to ofolder_t");
      opened = fClient->GetPicture("ofolder_t.xpm");
   } else
      ((TGPicture *)opened)->AddReference();

   if (!closed) {
      ::Warning("TGListTreeItem::SetPictures", "closed picture not specified, defaulting to folder_t");
      closed = fClient->GetPicture("folder_t.xpm");
   } else
      ((TGPicture *)closed)->AddReference();

   fOpenPic   = opened;
   fClosedPic = closed;
}


/******************************************************************************/
/******************************************************************************/
// TGListTree
/******************************************************************************/

//______________________________________________________________________________
TGListTree::TGListTree(TGWindow *p, UInt_t w, UInt_t h, UInt_t options,
                       ULong_t back) :
   TGContainer(p, w, h, options, back)
{
   // Create a list tree widget.

   fMsgWindow   = p;
   fCanvas      = 0;
   fTip         = 0;
   fTipItem     = 0;
   fAutoTips    = kFALSE;
   fAutoCheckBoxPic = kTRUE;
   fDisableOpen = kFALSE;
   fBdown       = kFALSE;
   fUserControlled = kFALSE;
   fEventHandled   = kFALSE;

   fGrayPixel   = GetGrayPixel();
   fFont        = GetDefaultFontStruct();

   fActiveGC    = GetActiveGC()();
   fDrawGC      = GetDrawGC()();
   fLineGC      = GetLineGC()();
   fHighlightGC = GetHighlightGC()();
   fColorGC     = GetColorGC()();

   fFirst = fLast = fSelected = fCurrent = fBelowMouse = 0;
   fDefw = fDefh = 1;

   fHspacing = 2;
   fVspacing = 2;  // 0;
   fIndent   = 3;  // 0;
   fMargin   = 2;

   fXDND = fYDND = 0;
   fDNDData.fData = 0;
   fDNDData.fDataLength = 0;
   fDNDData.fDataType = 0;
   fBuf = 0;

   fColorMode = kDefault;
   fCheckMode = kSimple;
   if (fCanvas) fCanvas->GetVScrollbar()->SetSmallIncrement(20);

   gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
                         kButtonPressMask | kButtonReleaseMask,
                         kNone, kNone);

   AddInput(kPointerMotionMask | kEnterWindowMask |
            kLeaveWindowMask | kKeyPressMask);
   SetWindowName();

   fDNDTypeList = new Atom_t[3];
   fDNDTypeList[0] = gVirtualX->InternAtom("application/root", kFALSE);
   fDNDTypeList[1] = gVirtualX->InternAtom("text/uri-list", kFALSE);
   fDNDTypeList[2] = 0;
   gVirtualX->SetDNDAware(fId, fDNDTypeList);
   SetDNDTarget(kTRUE);
   fEditDisabled = kEditDisable | kEditDisableGrab | kEditDisableBtnEnable;
}

//______________________________________________________________________________
TGListTree::TGListTree(TGCanvas *p,UInt_t options,ULong_t back) :
   TGContainer(p, options, back)
{
   // Create a list tree widget.

   fMsgWindow   = p;
   fTip         = 0;
   fTipItem     = 0;
   fAutoTips    = kFALSE;
   fAutoCheckBoxPic = kTRUE;
   fDisableOpen = kFALSE;
   fBdown       = kFALSE;
   fUserControlled = kFALSE;
   fEventHandled   = kFALSE;

   fGrayPixel   = GetGrayPixel();
   fFont        = GetDefaultFontStruct();

   fActiveGC    = GetActiveGC()();
   fDrawGC      = GetDrawGC()();
   fLineGC      = GetLineGC()();
   fHighlightGC = GetHighlightGC()();
   fColorGC     = GetColorGC()();

   fFirst = fLast = fSelected = fCurrent = fBelowMouse = 0;
   fDefw = fDefh = 1;

   fHspacing = 2;
   fVspacing = 2;  // 0;
   fIndent   = 3;  // 0;
   fMargin   = 2;

   fXDND = fYDND = 0;
   fDNDData.fData = 0;
   fDNDData.fDataLength = 0;
   fDNDData.fDataType = 0;
   fBuf = 0;

   fColorMode = kDefault;
   fCheckMode = kSimple;
   if (fCanvas) fCanvas->GetVScrollbar()->SetSmallIncrement(20);

   gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
                         kButtonPressMask | kButtonReleaseMask,
                         kNone, kNone);

   AddInput(kPointerMotionMask | kEnterWindowMask |
            kLeaveWindowMask | kKeyPressMask);
   SetWindowName();

   fDNDTypeList = new Atom_t[3];
   fDNDTypeList[0] = gVirtualX->InternAtom("application/root", kFALSE);
   fDNDTypeList[1] = gVirtualX->InternAtom("text/uri-list", kFALSE);
   fDNDTypeList[2] = 0;
   gVirtualX->SetDNDAware(fId, fDNDTypeList);
   SetDNDTarget(kTRUE);
   fEditDisabled = kEditDisable | kEditDisableGrab | kEditDisableBtnEnable;
}

//______________________________________________________________________________
TGListTree::~TGListTree()
{
   // Delete list tree widget.

   TGListTreeItem *item, *sibling;

   delete [] fDNDTypeList;
   delete fTip;

   item = fFirst;
   while (item) {
      PDeleteChildren(item);
      sibling = item->fNextsibling;
      delete item;
      item = sibling;
   }
}

//--- text utility functions

//______________________________________________________________________________
Int_t TGListTree::FontHeight()
{
   // Returns height of currently used font.

   if (!fgDefaultFont)
      fgDefaultFont = gClient->GetResourcePool()->GetIconFont();
   return fgDefaultFont->TextHeight();
}

//______________________________________________________________________________
Int_t TGListTree::FontAscent()
{
   // Returns ascent of currently used font.

   FontMetrics_t m;
   if (!fgDefaultFont)
      fgDefaultFont = gClient->GetResourcePool()->GetIconFont();
   fgDefaultFont->GetFontMetrics(&m);
   return m.fAscent;
}

//______________________________________________________________________________
Int_t TGListTree::TextWidth(const char *c)
{
   // Returns text width relative to currently used font.

   if (!fgDefaultFont)
      fgDefaultFont = gClient->GetResourcePool()->GetIconFont();
   return fgDefaultFont->TextWidth(c);
}

//---- highlighting utilities

//______________________________________________________________________________
void TGListTree::HighlightItem(TGListTreeItem *item, Bool_t state, Bool_t draw)
{
   // Highlight tree item.

   if (item) {
      if ((item == fSelected) && !state) {
         fSelected = 0;
         if (draw) DrawItemName(fId, item);
      } else if (state != item->IsActive()) { // !!!! leave active alone ...
         item->SetActive(state);
         if (draw) DrawItemName(fId, item);
      }
   }
}

//______________________________________________________________________________
void TGListTree::HighlightChildren(TGListTreeItem *item, Bool_t state, Bool_t draw)
{
   // Higlight item children.

   while (item) {
      HighlightItem(item, state, draw);
      if (item->fFirstchild)
         HighlightChildren(item->fFirstchild, state, (item->IsOpen()) ? draw : kFALSE);
      item = item->fNextsibling;
   }
}

//______________________________________________________________________________
void TGListTree::UnselectAll(Bool_t draw)
{
   // Unselect all items.

   ClearViewPort();
   HighlightChildren(fFirst, kFALSE, draw);
}

//______________________________________________________________________________
Bool_t TGListTree::HandleButton(Event_t *event)
{
   // Handle button events in the list tree.

   TGListTreeItem *item;

   if (fTip) fTip->Hide();

   Int_t page = 0;
   if (event->fCode == kButton4 || event->fCode == kButton5) {
      if (!fCanvas) return kTRUE;
      if (fCanvas->GetContainer()->GetHeight()) {
//         page = Int_t(Float_t(fCanvas->GetViewPort()->GetHeight() *
//                              fCanvas->GetViewPort()->GetHeight()) /
//                              fCanvas->GetContainer()->GetHeight());
         // choose page size either 1/5 of viewport or 5 lines (90)
         Int_t r = fCanvas->GetViewPort()->GetHeight() / 5;
         page = TMath::Min(r, 90);
      }
   }

   if (event->fCode == kButton4) {
      //scroll up
      Int_t newpos = fCanvas->GetVsbPosition() - page;
      if (newpos < 0) newpos = 0;
      fCanvas->SetVsbPosition(newpos);
      return kTRUE;
   }
   if (event->fCode == kButton5) {
      // scroll down
      Int_t newpos = fCanvas->GetVsbPosition() + page;
      fCanvas->SetVsbPosition(newpos);
      return kTRUE;
   }

   if (event->fType == kButtonPress) {
      if ((item = FindItem(event->fY)) != 0) {
         if (event->fCode == kButton1) {
            Int_t minx, maxx;
            Int_t minxchk = 0, maxxchk = 0;
            if (item->HasCheckBox() && item->GetCheckBoxPicture()) {
               minxchk = (item->fXtext - item->GetCheckBoxPicture()->GetWidth());
               maxxchk = (item->fXtext - 4);
               maxx = maxxchk - Int_t(item->GetPicWidth()) - 8;
               minx = minxchk - Int_t(item->GetPicWidth()) - 16;
            }
            else {
               maxx = (item->fXtext - Int_t(item->GetPicWidth())) - 8;
               minx = (item->fXtext - Int_t(item->GetPicWidth())) - 16;
            }
            if ((item->HasCheckBox()) && (event->fX < maxxchk) &&
               (event->fX > minxchk))
            {
               ToggleItem(item);
               if (fCheckMode == kRecursive) {
                  CheckAllChildren(item, item->IsChecked());
               }
               UpdateChecked(item, kTRUE);
               Checked((TObject *)item->GetUserData(), item->IsChecked());
               return kTRUE;
            }
            if ((event->fX < maxx) && (event->fX > minx)) {
               item->SetOpen(!item->IsOpen());
               ClearViewPort();
               return kTRUE;
            }
         }
         // DND specific
         if (event->fCode == kButton1) {
            fXDND = event->fX;
            fYDND = event->fY;
            fBdown = kTRUE;
         }
         if (!fUserControlled) {
            if (fSelected) fSelected->SetActive(kFALSE);
            UnselectAll(kTRUE);
            //item->fActive = kTRUE; // this is done below w/redraw
            fCurrent = fSelected = item;
            HighlightItem(item, kTRUE, kTRUE);
            SendMessage(fMsgWindow, MK_MSG(kC_LISTTREE, kCT_ITEMCLICK),
                        event->fCode, (event->fYRoot << 16) | event->fXRoot);
         }
         else {
            fCurrent = fSelected = item;
            ClearViewPort();
         }
         Clicked(item, event->fCode);
         Clicked(item, event->fCode, event->fXRoot, event->fYRoot);
         Clicked(item, event->fCode, event->fState, event->fXRoot, event->fYRoot);
      }
   }
   if (event->fType == kButtonRelease) {
      fBdown = kFALSE;
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGListTree::HandleDoubleClick(Event_t *event)
{
   // Handle double click event in the list tree (only for kButton1).

   TGListTreeItem *item = 0;

   if (event->fCode == kButton4 || event->fCode == kButton5) {
      return kFALSE;
   }
   // If fDisableOpen is set, only send message and emit signals.
   // It allows user to customize handling of double click events.
   if (fDisableOpen && event->fCode == kButton1 && (item = FindItem(event->fY)) != 0) {
      SendMessage(fMsgWindow, MK_MSG(kC_LISTTREE, kCT_ITEMDBLCLICK),
                  event->fCode, (event->fYRoot << 16) | event->fXRoot);
      DoubleClicked(item, event->fCode);
      DoubleClicked(item, event->fCode, event->fXRoot, event->fYRoot);
      return kTRUE;
   }
   item = FindItem(event->fY);

   // Otherwise, just use default behaviour (open item).
   if (event->fCode == kButton1 && item) {
      ClearViewPort();
      item->SetOpen(!item->IsOpen());
      if (!fUserControlled) {
         if (item != fSelected) { // huh?!
            if (fSelected) fSelected->SetActive(kFALSE); // !!!!
            UnselectAll(kTRUE);
            HighlightItem(item, kTRUE, kTRUE);
         }
      }
      SendMessage(fMsgWindow, MK_MSG(kC_LISTTREE, kCT_ITEMDBLCLICK),
                  event->fCode, (event->fYRoot << 16) | event->fXRoot);
      DoubleClicked(item, event->fCode);
      DoubleClicked(item, event->fCode, event->fXRoot, event->fYRoot);
   }
   if (!fUserControlled)
      fSelected = item;
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGListTree::HandleCrossing(Event_t *event)
{
   // Handle mouse crossing event.

   if (event->fType == kLeaveNotify) {
      if (fTip) {
         fTip->Hide();
         fTipItem = 0;
      }
      if (!fUserControlled) {
         if (fCurrent)
            DrawOutline(fId, fCurrent, 0xffffff, kTRUE);
         if (fBelowMouse)
            DrawOutline(fId, fBelowMouse, 0xffffff, kTRUE);
         fCurrent = 0;
      }
      if (fBelowMouse) {
         fBelowMouse = 0;
         MouseOver(0);
         MouseOver(0, event->fState);
      }
   }
   ClearViewPort();
   return kTRUE;
}

//______________________________________________________________________________
Atom_t TGListTree::HandleDNDPosition(Int_t /*x*/, Int_t y, Atom_t action,
                                      Int_t /*xroot*/, Int_t /*yroot*/)
{
   // Handle dragging position events.

   static TGListTreeItem *olditem = 0;
   TGListTreeItem *item;
   if ((item = FindItem(y)) != 0) {
      if (item->IsDNDTarget()) {
         fDropItem = item;
         if (olditem)
            HighlightItem(olditem, kFALSE, kTRUE);
         HighlightItem(item, kTRUE, kTRUE);
         olditem = item;
         return action;
      }
   }
   fDropItem = 0;
   if (olditem) {
      HighlightItem(olditem, kFALSE, kTRUE);
      olditem = 0;
   }
   return kNone;
}

//______________________________________________________________________________
Atom_t TGListTree::HandleDNDEnter(Atom_t *typelist)
{
   // Handle drag enter events.

   Atom_t ret = kNone;
   for (int i = 0; typelist[i] != kNone; ++i) {
      if (typelist[i] == fDNDTypeList[0])
         ret = fDNDTypeList[0];
      if (typelist[i] == fDNDTypeList[1])
         ret = fDNDTypeList[1];
   }
   return ret;
}

//______________________________________________________________________________
Bool_t TGListTree::HandleDNDLeave()
{
   // Handle drag leave events.

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGListTree::HandleDNDDrop(TDNDData *data)
{
   // Handle drop events.

   DataDropped(fDropItem, data);
   HighlightItem(fDropItem, kFALSE, kTRUE);
   //ClearHighlighted();
   return kTRUE;
}

//______________________________________________________________________________
void TGListTree::DataDropped(TGListTreeItem *item, TDNDData *data)
{
   // Emit DataDropped() signal.

   Long_t args[2];

   args[0] = (Long_t)item;
   args[1] = (Long_t)data;

   Emit("DataDropped(TGListTreeItem*,TDNDData*)", args);
}

//______________________________________________________________________________
Bool_t TGListTree::HandleMotion(Event_t *event)
{
   // Handle mouse motion event. Used to set tool tip, to emit
   // MouseOver() signal and for DND handling.

   TGListTreeItem *item;
   TGPosition pos = GetPagePosition();

   if (gDNDManager->IsDragging()) {
      gDNDManager->Drag(event->fXRoot, event->fYRoot,
                        TGDNDManager::GetDNDActionCopy(), event->fTime);
   } else if ((item = FindItem(event->fY)) != 0) {
      if (!fUserControlled) {
         if (fCurrent)
            DrawOutline(fId, fCurrent, 0xffffff, kTRUE);
         if (fBelowMouse)
            DrawOutline(fId, fBelowMouse, 0xffffff, kTRUE);
         DrawOutline(fId, item);
         fCurrent = item;
      }
      if (item != fBelowMouse) {
         fBelowMouse = item;
         MouseOver(fBelowMouse);
         MouseOver(fBelowMouse, event->fState);
      }

      if (item->HasCheckBox() && item->GetCheckBoxPicture()) {
         if ((event->fX < (item->fXtext - 4) &&
             (event->fX > (item->fXtext - (Int_t)item->GetCheckBoxPicture()->GetWidth()))))
         {
            gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kPointer));
            return kTRUE;
         }
         else {
            gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kHand));
         }
      }
      if (!gDNDManager->IsDragging()) {
         if (fBdown && ((abs(event->fX - fXDND) > 2) || (abs(event->fY - fYDND) > 2))) {
            if (gDNDManager && item->IsDNDSource()) {
               if (!fBuf) fBuf = new TBufferFile(TBuffer::kWrite);
               fBuf->Reset();
               // !!!!! Here check virtual Bool_t HandlesDragAndDrop()
               // and let the item handle this.
               if (item->GetUserData()) {
                  TObject *obj = static_cast<TObject *>(item->GetUserData());
                  if (dynamic_cast<TObject *>(obj)) {
                     TObjString *ostr = dynamic_cast<TObjString *>(obj);
                     if (ostr) {
                        TString& str = ostr->String();
                        if (str.BeginsWith("file://")) {
                           fDNDData.fDataType = fDNDTypeList[1];
                           fDNDData.fData = (void *)strdup(str.Data());
                           fDNDData.fDataLength = str.Length()+1;
                        }
                     }
                     else {
                        fDNDData.fDataType = fDNDTypeList[0];
                        fBuf->WriteObject((TObject *)item->GetUserData());
                        fDNDData.fData = fBuf->Buffer();
                        fDNDData.fDataLength = fBuf->Length();
                     }
                  }
               }
               else {
                  fDNDData.fDataType = fDNDTypeList[1];
                  TString str = TString::Format("file://%s/%s\r\n",
                                gSystem->UnixPathName(gSystem->WorkingDirectory()),
                                item->GetText());
                  fDNDData.fData = (void *)strdup(str.Data());
                  fDNDData.fDataLength = str.Length()+1;
               }
               if (item->GetPicture()) {
                  TString xmpname = item->GetPicture()->GetName();
                  if (xmpname.EndsWith("_t.xpm"))
                     xmpname.ReplaceAll("_t.xpm", "_s.xpm");
                  if (xmpname.EndsWith("_t.xpm__16x16"))
                     xmpname.ReplaceAll("_t.xpm__16x16", "_s.xpm");
                  const TGPicture *pic = fClient->GetPicture(xmpname.Data());
                  if (!pic) pic = item->GetPicture();
                  if (pic) SetDragPixmap(pic);
               }
               gDNDManager->StartDrag(this, event->fXRoot, event->fYRoot);
            }
         }
      }
      if (gDNDManager->IsDragging()) {
         gDNDManager->Drag(event->fXRoot, event->fYRoot,
                           TGDNDManager::GetDNDActionCopy(), event->fTime);
      } else {
         if (fTipItem == item) return kTRUE;
         if (!fUserControlled) { // !!!! what is this? It was called above once?
            MouseOver(item);
            MouseOver(item, event->fState);
         }
         gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kHand));
      }

      if (fTip)
         fTip->Hide();

      if (item->GetTipTextLength() > 0) {

         SetToolTipText(item->GetTipText(), item->fXtext,
                        item->fY - pos.fY + item->fHeight, 1000);

      } else if (fAutoTips && item->GetUserData()) {
         // must derive from TObject (in principle user can put pointer
         // to anything in user data field). Add check.
         TObject *obj = (TObject *)item->GetUserData();
         if (obj && obj->InheritsFrom(TObject::Class())) {
            SetToolTipText(obj->GetTitle(), item->fXtext,
                           item->fY - pos.fY + item->fHeight, 1000);
         }
      }
      fTipItem = item;
   } else {
      if (fBelowMouse) {
         fBelowMouse = 0;
         MouseOver(fBelowMouse);
         MouseOver(fBelowMouse, event->fState);
      }
      gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kPointer));
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGListTree::HandleKey(Event_t *event)
{
   // The key press event handler converts a key press to some line editor
   // action.

   char   input[10];
   UInt_t keysym;
   TGListTreeItem *item = 0;

   fLastEventState = event->fState;
   if (fTip) fTip->Hide();

   if (event->fType == kGKeyPress) {
      gVirtualX->LookupString(event, input, sizeof(input), keysym);

      if (!event->fState && (EKeySym)keysym == kKey_Escape) {
         if (gDNDManager->IsDragging()) gDNDManager->EndDrag();
      }

      item = fCurrent;
      if (!item) return kFALSE;

      fEventHandled = kFALSE;
      KeyPressed(item, keysym, event->fState);

      if (fUserControlled && fEventHandled)
         return kTRUE;
      
      switch ((EKeySym)keysym) {
         case kKey_Enter:
         case kKey_Return:
            event->fType = kButtonPress;
            event->fCode = kButton1;

            if (fSelected == item) {
               // treat 'Enter' and 'Return' as a double click
               ClearViewPort();
               item->SetOpen(!item->IsOpen());
               DoubleClicked(item, 1);
            } else {
               // treat 'Enter' and 'Return' as a click
               if (fSelected) fSelected->SetActive(kFALSE);
               UnselectAll(kTRUE);
               ClearViewPort();
               fSelected = item;
               fSelected->SetActive(kTRUE);
               HighlightItem(item, kTRUE, kTRUE);
               Clicked(item, 1);
               Clicked(item, 1, event->fXRoot, event->fYRoot);
               Clicked(item, 1, event->fState, event->fXRoot, event->fYRoot);
            }
            break;
         case kKey_Space:
            if (item->HasCheckBox()) {
               ToggleItem(item);
               if (fCheckMode == kRecursive) {
                  CheckAllChildren(item, item->IsChecked());
               }
               UpdateChecked(item, kTRUE);
               Checked((TObject *)item->GetUserData(), item->IsChecked());
            }
            break;
         case kKey_F3:
            Search(kFALSE);
            break;
         case kKey_F5:
            Layout();
            break;
         case kKey_F7:
            Search();
            break;
         case kKey_Left:
            ClearViewPort();
            item->SetOpen(kFALSE);
            break;
         case kKey_Right:
            ClearViewPort();
            item->SetOpen(kTRUE);
            break;
         case kKey_Up:
            LineUp(event->fState & kKeyShiftMask);
            break;
         case kKey_Down:
            LineDown(event->fState & kKeyShiftMask);
            break;
         case kKey_PageUp:
            PageUp(event->fState & kKeyShiftMask);
            break;
         case kKey_PageDown:
            PageDown(event->fState & kKeyShiftMask);
            break;
         case kKey_Home:
            Home(event->fState & kKeyShiftMask);
            break;
         case kKey_End:
            End(event->fState & kKeyShiftMask);
            break;
         default:
            break;
      }
      if (event->fState & kKeyControlMask) { // Ctrl key modifier pressed
         switch((EKeySym)keysym & ~0x20) {   // treat upper and lower the same
            case kKey_F:
               Search();
               break;
            case kKey_G:
               Search(kFALSE);
               break;
            default:
               return kTRUE;
         }
      }

   }
   return kTRUE;
}

//______________________________________________________________________________
void TGListTree::MouseOver(TGListTreeItem *entry)
{
   // Signal emitted when pointer is over entry.

   Emit("MouseOver(TGListTreeItem*)", (Long_t)entry);
}

//______________________________________________________________________________
void TGListTree::MouseOver(TGListTreeItem *entry, UInt_t mask)
{
   // Signal emitted when pointer is over entry.

   Long_t args[2];
   args[0] = (Long_t)entry;
   args[1] = mask;
   Emit("MouseOver(TGListTreeItem*,UInt_t)", args);
}

//______________________________________________________________________________
void TGListTree::KeyPressed(TGListTreeItem *entry, UInt_t keysym, UInt_t mask)
{
   // Signal emitted when keyboard key pressed
   //
   // entry - selected item
   // keysym - defined in "KeySymbols.h"
   // mask - modifier key mask, defined in "GuiTypes.h"
   //
   // const Mask_t kKeyShiftMask   = BIT(0);
   // const Mask_t kKeyLockMask    = BIT(1);
   // const Mask_t kKeyControlMask = BIT(2);
   // const Mask_t kKeyMod1Mask    = BIT(3);   // typically the Alt key
   // const Mask_t kButton1Mask    = BIT(8);
   // const Mask_t kButton2Mask    = BIT(9);
   // const Mask_t kButton3Mask    = BIT(10);
   // const Mask_t kButton4Mask    = BIT(11);
   // const Mask_t kButton5Mask    = BIT(12);
   // const Mask_t kAnyModifier    = BIT(15);

   Long_t args[3];
   args[0] = (Long_t)entry;
   args[1] = (Long_t)keysym;
   args[2] = (Long_t)mask;
   Emit("KeyPressed(TGListTreeItem*,ULong_t,ULong_t)", args);
   SendMessage(fMsgWindow, MK_MSG(kC_LISTTREE, kCT_KEY), keysym, mask);
}

//______________________________________________________________________________
void TGListTree::ReturnPressed(TGListTreeItem *entry)
{
   // Emit ReturnPressed() signal.

   Emit("ReturnPressed(TGListTreeItem*)", (Long_t)entry);
}

//______________________________________________________________________________
void TGListTree::Checked(TObject *entry, Bool_t on)
{
   // Emit Checked() signal.

   Long_t args[2];

   args[0] = (Long_t)entry;
   args[1] = on;

   Emit("Checked(TObject*,Bool_t)", args);
}

//______________________________________________________________________________
void TGListTree::Clicked(TGListTreeItem *entry, Int_t btn)
{
   // Emit Clicked() signal.

   Long_t args[2];

   args[0] = (Long_t)entry;
   args[1] = btn;

   Emit("Clicked(TGListTreeItem*,Int_t)", args);
}

//______________________________________________________________________________
void TGListTree::Clicked(TGListTreeItem *entry, Int_t btn, Int_t x, Int_t y)
{
   // Emit Clicked() signal.

   Long_t args[4];

   args[0] = (Long_t)entry;
   args[1] = btn;
   args[2] = x;
   args[3] = y;

   Emit("Clicked(TGListTreeItem*,Int_t,Int_t,Int_t)", args);
}

//______________________________________________________________________________
void TGListTree::Clicked(TGListTreeItem *entry, Int_t btn, UInt_t mask, Int_t x, Int_t y)
{
   // Emit Clicked() signal.

   Long_t args[5];

   args[0] = (Long_t)entry;
   args[1] = btn;
   args[2] = mask;
   args[3] = x;
   args[4] = y;

   Emit("Clicked(TGListTreeItem*,Int_t,UInt_t,Int_t,Int_t)", args);
}

//______________________________________________________________________________
void TGListTree::DoubleClicked(TGListTreeItem *entry, Int_t btn)
{
   // Emit DoubleClicked() signal.

   Long_t args[2];

   args[0] = (Long_t)entry;
   args[1] = btn;

   Emit("DoubleClicked(TGListTreeItem*,Int_t)", args);
}

//______________________________________________________________________________
void TGListTree::DoubleClicked(TGListTreeItem *entry, Int_t btn, Int_t x, Int_t y)
{
   // Emit DoubleClicked() signal.

   Long_t args[4];

   args[0] = (Long_t)entry;
   args[1] = btn;
   args[2] = x;
   args[3] = y;

   Emit("DoubleClicked(TGListTreeItem*,Int_t,Int_t,Int_t)", args);
}

//______________________________________________________________________________
void TGListTree::Home(Bool_t /*select*/)
{
   // Move content to the top.

   if (fCanvas) fCanvas->SetVsbPosition(0);
}

//______________________________________________________________________________
void TGListTree::End(Bool_t /*select*/)
{
   // Move content to the bottom.

   if (fCanvas) fCanvas->SetVsbPosition((Int_t)fHeight);
}

//______________________________________________________________________________
void TGListTree::PageUp(Bool_t /*select*/)
{
   // Move content one page up.

   if (!fCanvas) return;

   TGDimension dim = GetPageDimension();

   Int_t newpos = fCanvas->GetVsbPosition() - dim.fHeight;
   if (newpos<0) newpos = 0;

   fCanvas->SetVsbPosition(newpos);
}

//______________________________________________________________________________
void TGListTree::PageDown(Bool_t /*select*/)
{
   // Move content one page down.

   if (!fCanvas) return;

   TGDimension dim = GetPageDimension();

   Int_t newpos = fCanvas->GetVsbPosition() + dim.fHeight;

   fCanvas->SetVsbPosition(newpos);
}

//______________________________________________________________________________
void TGListTree::LineUp(Bool_t /*select*/)
{
   // Move content one item-size up.

   Int_t height = 0;
   if (!fCurrent) return;
   
   TGDimension dim = GetPageDimension();
   TGPosition pos = GetPagePosition();
   const TGPicture *pic1 = fCurrent->GetPicture();
   if (pic1) height = pic1->GetHeight() + fVspacing;
   else height = fVspacing + 16;
   Int_t findy = (fCurrent->fY - height) + (fMargin - pos.fY);
   TGListTreeItem *next = FindItem(findy);
   if (next && (next != fCurrent)) {
      DrawOutline(fId, fCurrent, 0xffffff, kTRUE);
      if (findy <= 2*height) {
         Int_t newpos = fCanvas->GetVsbPosition() - height;
         if (newpos<0) newpos = 0;
         fCanvas->SetVsbPosition(newpos);
      }
      DrawOutline(fId, next);
      fCurrent = next;
   }
}

//______________________________________________________________________________
void TGListTree::LineDown(Bool_t /*select*/)
{
   // Move content one item-size down.

   Int_t height;
   if (!fCurrent) return;
   
   TGDimension dim = GetPageDimension();
   TGPosition pos = GetPagePosition();
   const TGPicture *pic1 = fCurrent->GetPicture();
   if (pic1) height = pic1->GetHeight() + fVspacing;
   else height = fVspacing + 16;
   Int_t findy = (fCurrent->fY + height) + (fMargin - pos.fY);
   TGListTreeItem *next = FindItem(findy);
   if (next && (next != fCurrent)) {
      DrawOutline(fId, fCurrent, 0xffffff, kTRUE);
      if (findy >= ((Int_t)dim.fHeight - 2*height)) {
         Int_t newpos = fCanvas->GetVsbPosition() + height;
         if (newpos<0) newpos = 0;
         fCanvas->SetVsbPosition(newpos);
      }
      DrawOutline(fId, next);
      fCurrent = next;
   }
}

//______________________________________________________________________________
void TGListTree::AdjustPosition(TGListTreeItem *item)
{
   // Move content to position of item. If item is 0, move to position
   // of currently selected item.

   TGListTreeItem *it = item;

   if (!it) it = fSelected;
   if (!it) {
      HighlightItem(fFirst); // recursive call of this function
      return;
   }

   Int_t y = 0;
   Int_t yparent = 0;
   Int_t vh = 0;
   Int_t v = 0;

   if (it) {
      y = it->fY;
      if (it->GetParent()) yparent = it->GetParent()->fY;
   }

   if (y==0) y = yparent; // item->fY not initiated yet

   if (fCanvas->GetVScrollbar()->IsMapped()) {
      vh = fCanvas->GetVScrollbar()->GetPosition()+(Int_t)fViewPort->GetHeight();

      if (y<fCanvas->GetVScrollbar()->GetPosition()) {
         v = TMath::Max(0,y-(Int_t)fViewPort->GetHeight()/2);
         fCanvas->SetVsbPosition(v);
      } else if (y+(Int_t)it->fHeight>vh) {
         v = TMath::Min((Int_t)GetHeight()-(Int_t)fViewPort->GetHeight(),
                        y+(Int_t)it->fHeight-(Int_t)fViewPort->GetHeight()/2);
         if (v<0) v = 0;
         fCanvas->SetVsbPosition(v);
      }
   }
}

//______________________________________________________________________________
void TGListTree::Search(Bool_t close)
{
   // Invokes search dialog. Looks for item with the entered name.

   Int_t ret = 0;
   char msg[256];
   static TString buf;

   TGSearchType *srch = new TGSearchType;
   srch->fBuffer = (char *)StrDup(buf.Data());

   TGListTreeItem *item;
   if (close || buf.IsNull())
      new TGSearchDialog(fClient->GetDefaultRoot(), fCanvas, 400, 150, srch, &ret);
   else if (!buf.IsNull()) ret = 1;

   if (ret) {
      item = FindItemByPathname(srch->fBuffer);
      if (!item) {
         snprintf(msg, 255, "Couldn't find \"%s\"", srch->fBuffer);
         gVirtualX->Bell(20);
         new TGMsgBox(fClient->GetDefaultRoot(), fCanvas, "Container", msg,
                      kMBIconExclamation, kMBOk, 0);
      } else {
         ClearHighlighted();
         HighlightItem(item);
      }
   }
   buf = srch->fBuffer;
   delete srch;
}

//---- drawing functions

//______________________________________________________________________________
void TGListTree::DrawRegion(Int_t /*x*/, Int_t y, UInt_t /*w*/, UInt_t h)
{
   // Redraw list tree.

   static GContext_t gcBg = 0;

   // sanity checks
   if (y > (Int_t)fViewPort->GetHeight()) {
      return;
   }

   y = y < 0 ? 0 : y;
   UInt_t w = fViewPort->GetWidth();

   // more sanity checks
   if (((Int_t)w < 1) || (w > 32768) || ((Int_t)h < 1)) {
      return;
   }

   Pixmap_t pixmap = gVirtualX->CreatePixmap(fId, w, fViewPort->GetHeight());

   if (!gcBg) {
      GCValues_t gcValues;
      gcValues.fForeground = fBackground;
      gcValues.fForeground = fBackground;
      gcValues.fGraphicsExposures = kTRUE;
      gcValues.fMask = kGCForeground | kGCBackground | kGCGraphicsExposures;
      gcBg = gVirtualX->CreateGC(fId, &gcValues);
   }

   gVirtualX->SetForeground(gcBg, fBackground);
   gVirtualX->FillRectangle(pixmap, gcBg, 0, 0, w, fViewPort->GetHeight());

   Draw(pixmap, 0, fViewPort->GetHeight());

   gVirtualX->CopyArea(pixmap, fId, gcBg, 0, y, w, fViewPort->GetHeight(), 0, y);

   gVirtualX->DeletePixmap(pixmap);
   gVirtualX->Update(kFALSE);
}

//______________________________________________________________________________
void TGListTree::Draw(Handle_t id, Int_t yevent, Int_t hevent)
{
   // Draw list tree widget.

   TGListTreeItem *item;
   Int_t  x, y, xbranch;
   UInt_t width, height, old_width, old_height;

   // Overestimate the expose region to be sure to draw an item that gets
   // cut by the region
   fExposeTop = yevent - FontHeight();
   fExposeBottom = yevent + hevent + FontHeight();
   old_width  = fDefw;
   old_height = fDefh;
   fDefw = fDefh = 1;

   TGPosition pos = GetPagePosition();
   x = 2-pos.fX;
   y = fMargin;
   item = fFirst;

   while (item) {
      xbranch = -1;

      DrawItem(id, item, x, y, &xbranch, &width, &height);

      width += pos.fX + x + fHspacing + fMargin;

      if (width > fDefw) fDefw = width;

      y += height + fVspacing;
      if (item->fFirstchild && item->IsOpen()) {
         y = DrawChildren(id, item->fFirstchild, x, y, xbranch);
      }

      item = item->fNextsibling;
   }

   fDefh = y + fMargin;

   if ((old_width != fDefw) || (old_height != fDefh)) {
      fCanvas->Layout();
   }
}

//______________________________________________________________________________
Int_t TGListTree::DrawChildren(Handle_t id, TGListTreeItem *item,
                               Int_t x, Int_t y, Int_t xroot)
{
   // Draw children of item in list tree.

   UInt_t width, height;
   Int_t  xbranch;
   TGPosition pos = GetPagePosition();

   x += fIndent + (Int_t)item->fParent->GetPicWidth();
   while (item) {
      xbranch = xroot;

      DrawItem(id, item, x, y, &xbranch, &width, &height);

      width += pos.fX + x + fHspacing + fMargin;
      if (width > fDefw) fDefw = width;

      y += height + fVspacing;
      if ((item->fFirstchild) && (item->IsOpen())) {
         y = DrawChildren(id, item->fFirstchild, x, y, xbranch);
      }

      item = item->fNextsibling;
   }
   return y;
}

//______________________________________________________________________________
void TGListTree::DrawItem(Handle_t id, TGListTreeItem *item, Int_t x, Int_t y,
                          Int_t *xroot, UInt_t *retwidth, UInt_t *retheight)
{
   // Draw list tree item.

   Int_t  xpic1, ypic1, xbranch, ybranch, xtext, ytext, xline, yline, xc;
   Int_t  xpic2 = 0;
   UInt_t height;
   const TGPicture *pic1 = item->GetPicture();
   const TGPicture *pic2 = item->GetCheckBoxPicture();

   // Compute the height of this line
   height = FontHeight();
   xline = 0;
   xpic1 = x;
   xtext = x + fHspacing + (Int_t)item->GetPicWidth();
   if (pic2) {
      if (pic2->GetHeight() > height) {
         ytext = y + (Int_t)((pic2->GetHeight() - height) >> 1);
         height = pic2->GetHeight();
      } else {
         ytext = y;
      }
      if (pic1) xpic2 = xpic1 + pic1->GetWidth() + 1;
      else xpic2 = xpic1 + 1;
      xtext += pic2->GetWidth();
   } else {
      ypic1 = y;
      xline = 0;
   }
   if (pic1) {
      if (pic1->GetHeight() > height) {
         ytext = y + (Int_t)((pic1->GetHeight() - height) >> 1);
         height = pic1->GetHeight();
         ypic1 = y;
      } else {
         ytext = y;
         ypic1 = y + (Int_t)((height - pic1->GetHeight()) >> 1);
      }
      xbranch = xpic1 + (Int_t)(pic1->GetWidth() >> 1);
      ybranch = ypic1 + (Int_t)pic1->GetHeight();
      yline = ypic1 + (Int_t)(pic1->GetHeight() >> 1);
      if (xline == 0) xline = xpic1;
   } else {
      if (xline == 0) xline = xpic1;
      ypic1 = ytext = y;
      xbranch = xpic1 + (Int_t)(item->GetPicWidth() >> 1);
      yline = ybranch = ypic1 + (Int_t)(height >> 1);
      yline = ypic1 + (Int_t)(height >> 1);
   }

   // height must be even, otherwise our dashed line wont appear properly
   //++height; height &= ~1;

   // Save the basic graphics info for use by other functions
   item->fY      = y;
   item->fXtext  = xtext;
   item->fYtext  = ytext;
   item->fHeight = height;

   // projected coordinates
   TGPosition  pos = GetPagePosition();
   TGDimension dim = GetPageDimension();
   Int_t yp        = y       - pos.fY;
   Int_t ylinep    = yline   - pos.fY;
   Int_t ybranchp  = ybranch - pos.fY;
   Int_t ypicp     = ypic1   - pos.fY;

   if ((yp >= fExposeTop) && (yp <= (Int_t)dim.fHeight))
   {
      DrawItemName(id, item);
      if (*xroot >= 0) {
         xc = *xroot;

         if (item->fNextsibling) {
            gVirtualX->DrawLine(id, fLineGC, xc, yp, xc, yp+height);
         } else {
            gVirtualX->DrawLine(id, fLineGC, xc, yp, xc, ylinep);
         }

         TGListTreeItem *p = item->fParent;
         while (p) {
            xc -= (fIndent + (Int_t)item->GetPicWidth());
            if (p->fNextsibling) {
               gVirtualX->DrawLine(id, fLineGC, xc, yp, xc, yp+height);
            }
            p = p->fParent;
         }
         gVirtualX->DrawLine(id, fLineGC, *xroot, ylinep, xpic1, ylinep);
         DrawNode(id, item, *xroot, yline);
      }
      if (item->IsOpen() && item->fFirstchild) {
         gVirtualX->DrawLine(id, fLineGC, xbranch, ybranchp, xbranch, 
                             yp+height);
      }
      if (pic1)
         pic1->Draw(id, fDrawGC, xpic1, ypicp);
      if (pic2)
         pic2->Draw(id, fDrawGC, xpic2, ypicp);
   }

   *xroot = xbranch;
   *retwidth  = TextWidth(item->GetText()) + item->GetPicWidth();
   *retheight = height;
}

//______________________________________________________________________________
void TGListTree::DrawOutline(Handle_t id, TGListTreeItem *item, Pixel_t col, 
                             Bool_t clear)
{
   // Draw a outline of color 'col' around an item.

   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();

   if (clear) {
      gVirtualX->SetForeground(fDrawGC, fCanvas->GetContainer()->GetBackground());
      //ClearViewPort();  // time consuming!!!
   }
   else
      gVirtualX->SetForeground(fDrawGC, col);
   gVirtualX->DrawRectangle(id, fDrawGC, 1, item->fYtext-pos.fY-2, 
                            dim.fWidth-3, FontHeight()+4);
   gVirtualX->SetForeground(fDrawGC, fgBlackPixel);
}

//______________________________________________________________________________
void TGListTree::DrawActive(Handle_t id, TGListTreeItem *item)
{
   // Draw active item with its active color.

   UInt_t width;
   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();

   width = dim.fWidth-2;
   gVirtualX->SetForeground(fDrawGC, item->GetActiveColor());
   gVirtualX->FillRectangle(id, fDrawGC, 1, item->fYtext-pos.fY-1, width, 
                            FontHeight()+3);
   gVirtualX->SetForeground(fDrawGC, fgBlackPixel);
   gVirtualX->DrawString(id, fActiveGC, item->fXtext, 
                         item->fYtext - pos.fY + FontAscent(),
                         item->GetText(), item->GetTextLength());
}

//______________________________________________________________________________
void TGListTree::DrawItemName(Handle_t id, TGListTreeItem *item)
{
   // Draw name of list tree item.

   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();

   if (item->IsActive()) {
      DrawActive(id, item);
   }
   else { // if (!item->IsActive() && (item != fSelected)) {
      gVirtualX->FillRectangle(id, fHighlightGC, item->fXtext, 
                       item->fYtext-pos.fY, dim.fWidth-item->fXtext-2,
                       FontHeight()+1);
      gVirtualX->DrawString(id, fDrawGC,
                       item->fXtext, item->fYtext-pos.fY + FontAscent(),
                       item->GetText(), item->GetTextLength());
   }
   if (item == fCurrent) {
      DrawOutline(id, item);
   }

   if (fColorMode != 0 && item->HasColor()) {
      UInt_t width = TextWidth(item->GetText());
      gVirtualX->SetForeground(fColorGC, TColor::Number2Pixel(item->GetColor()));
      if (fColorMode & kColorUnderline) {
         Int_t y = item->fYtext-pos.fY + FontAscent() + 2;
         gVirtualX->DrawLine(id, fColorGC, item->fXtext, y, 
                             item->fXtext + width, y);
      }
      if (fColorMode & kColorBox) {
         Int_t x = item->fXtext + width + 4;
         Int_t y = item->fYtext - pos.fY  + 3;
         Int_t h = FontAscent()    - 4;
         gVirtualX->FillRectangle(id, fColorGC, x, y, h, h);
         gVirtualX->DrawRectangle(id, fDrawGC,  x, y, h, h);
      }
   }
}

//______________________________________________________________________________
void TGListTree::DrawNode(Handle_t id, TGListTreeItem *item, Int_t x, Int_t y)
{
   // Draw node (little + in box).

   TGPosition pos = GetPagePosition();
   Int_t yp = y - pos.fY;

   if (item->fFirstchild) {
      gVirtualX->DrawLine(id, fHighlightGC, x, yp-2, x, yp+2);
      gVirtualX->SetForeground(fHighlightGC, fgBlackPixel);
      gVirtualX->DrawLine(id, fHighlightGC, x-2, yp, x+2, yp);
      if (!item->IsOpen())
         gVirtualX->DrawLine(id, fHighlightGC, x, yp-2, x, yp+2);
      gVirtualX->SetForeground(fHighlightGC, fGrayPixel);
      gVirtualX->DrawLine(id, fHighlightGC, x-4, yp-4, x+4, yp-4);
      gVirtualX->DrawLine(id, fHighlightGC, x+4, yp-4, x+4, yp+4);
      gVirtualX->DrawLine(id, fHighlightGC, x-4, yp+4, x+4, yp+4);
      gVirtualX->DrawLine(id, fHighlightGC, x-4, yp-4, x-4, yp+4);
      gVirtualX->SetForeground(fHighlightGC, fgWhitePixel);
   }
}

//______________________________________________________________________________
void TGListTree::SetToolTipText(const char *text, Int_t x, Int_t y, Long_t delayms)
{
   // Set tool tip text associated with this item. The delay is in
   // milliseconds (minimum 250). To remove tool tip call method with
   // delayms = 0. To change delayms you first have to call this method
   // with delayms=0.

   if (delayms == 0) {
      delete fTip;
      fTip = 0;
      return;
   }

   if (text && strlen(text)) {
      if (!fTip)
         fTip = new TGToolTip(fClient->GetDefaultRoot(), this, text, delayms);
      else
         fTip->SetText(text);
      fTip->SetPosition(x, y);
      fTip->Reset();
   }
}

//______________________________________________________________________________
void TGListTree::RemoveReference(TGListTreeItem *item)
{
   // This function removes the specified item from the linked list.
   // It does not do anything with the data contained in the item, though.

   ClearViewPort();

   // Disentangle from front (previous-sibling, parent's first child)
   if (item->fPrevsibling) {
      item->fPrevsibling->fNextsibling = item->fNextsibling;
   } else {
      if (item->fParent)
         item->fParent->fFirstchild = item->fNextsibling;
      else
         fFirst = item->fNextsibling;
   }
   // Disentangle from end (next-sibling, parent's last child)
   if (item->fNextsibling) {
      item->fNextsibling->fPrevsibling = item->fPrevsibling;
   } else {
      if (item->fParent)
         item->fParent->fLastchild = item->fPrevsibling;
      else
         fLast = item->fPrevsibling;
   }
}

//______________________________________________________________________________
void TGListTree::PDeleteItem(TGListTreeItem *item)
{
   // Delete given item. Takes care of list-tree state members
   // fSelected, fCurrent and fBelowMouse.

   if (fSelected == item) {
      fSelected = 0;
   }
   if (fCurrent == item) {
      DrawOutline(fId, fCurrent, 0xffffff, kTRUE);
      fCurrent = item->GetPrevSibling();
      if (! fCurrent) {
         fCurrent = item->GetNextSibling();
         if (! fCurrent)
            fCurrent = item->GetParent();
      }
   }
   if (fBelowMouse == item) {
      DrawOutline(fId, fBelowMouse, 0xffffff, kTRUE);
      fBelowMouse = 0;
      MouseOver(0);
      MouseOver(0,fLastEventState);
   }

   delete item; 
}

//______________________________________________________________________________
void TGListTree::PDeleteChildren(TGListTreeItem *item)
{
   // Recursively delete all children of an item.

   TGListTreeItem *child = item->fFirstchild;

   while (child) {
      TGListTreeItem *next = child->fNextsibling;
      PDeleteChildren(child);
      PDeleteItem(child);
      child = next;
   }

   item->fFirstchild = item->fLastchild = 0;
}

//______________________________________________________________________________
void TGListTree::InsertChild(TGListTreeItem *parent, TGListTreeItem *item)
{
   // Insert child in list.

   TGListTreeItem *i;

   item->fParent = parent;
   item->fNextsibling = item->fPrevsibling = 0;

   if (parent) {

      if (parent->fFirstchild) {
         if (parent->fLastchild) {
            i = parent->fLastchild;
         }
         else {
            i = parent->fFirstchild;
            while (i->fNextsibling) i = i->fNextsibling;
         }
         i->fNextsibling = item;
         item->fPrevsibling = i;
      } else {
         parent->fFirstchild = item;
      }
      parent->fLastchild = item;

   } else {  // if parent == 0, this is a top level entry

      if (fFirst) {
         if (fLast) {
            i = fLast;
         }
         else {
            i = fFirst;
            while (i->fNextsibling) i = i->fNextsibling;
         }
         i->fNextsibling = item;
         item->fPrevsibling = i;
      } else {
         fFirst = item;
      }
      fLast = item;
   }
   if (item->HasCheckBox())
      UpdateChecked(item);
}

//______________________________________________________________________________
void TGListTree::InsertChildren(TGListTreeItem *parent, TGListTreeItem *item)
{
   // Insert a list of ALREADY LINKED children into another list

   TGListTreeItem *next, *newnext;

   //while (item) {
   //   next = item->fNextsibling;
   //   InsertChild(parent, item);
   //   item = next;
   //}
   //return;

   // Save the reference for the next item in the new list
   next = item->fNextsibling;

   // Insert the first item in the new list into the existing list
   InsertChild(parent, item);

   // The first item is inserted, with its prev and next siblings updated
   // to fit into the existing list. So, save the existing list reference
   newnext = item->fNextsibling;

   // Now, mark the first item's next sibling to point back to the new list
   item->fNextsibling = next;

   // Mark the parents of the new list to the new parent. The order of the
   // rest of the new list should be OK, and the second item should still
   // point to the first, even though the first was reparented.
   while (item->fNextsibling) {
      item->fParent = parent;
      item = item->fNextsibling;
   }

   // Fit the end of the new list back into the existing list
   item->fNextsibling = newnext;
   if (newnext)
      newnext->fPrevsibling = item;
}

//______________________________________________________________________________
Int_t TGListTree::SearchChildren(TGListTreeItem *item, Int_t y, Int_t findy,
                                 TGListTreeItem **finditem)
{
   // Search child item.

   UInt_t height;
   const TGPicture *pic;

   while (item) {
      // Select the pixmap to use
      pic = item->GetPicture();

      // Compute the height of this line
      height = FontHeight();
      if (pic && pic->GetHeight() > height)
         height = pic->GetHeight();

      if ((findy >= y) && (findy <= y + (Int_t)height)) {
         *finditem = item;
         return -1;
      }

      y += (Int_t)height + fVspacing;
      if (item->fFirstchild && item->IsOpen()) {
         y = SearchChildren(item->fFirstchild, y, findy, finditem);
         if (*finditem) return -1;
      }

      item = item->fNextsibling;
   }

   return y;
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::FindItem(Int_t findy)
{
   // Find item at postion findy.

   Int_t  y;
   UInt_t height;
   TGListTreeItem *item, *finditem;
   const TGPicture *pic;
   TGPosition pos = GetPagePosition();

   y = fMargin - pos.fY;
   item = fFirst;
   finditem = 0;
   while (item && !finditem) {
      // Select the pixmap to use
      pic = item->GetPicture();

      // Compute the height of this line
      height = FontHeight();
      if (pic && (pic->GetHeight() > height))
         height = pic->GetHeight();

      if ((findy >= y) && (findy <= y + (Int_t)height))
         return item;

      y += (Int_t)height + fVspacing;
      if ((item->fFirstchild) && (item->IsOpen())) {
         y = SearchChildren(item->fFirstchild, y, findy, &finditem);
         //if (finditem) return finditem;
      }
      item = item->fNextsibling;
   }

   return finditem;
}

//----- Public Functions

//______________________________________________________________________________
void TGListTree::AddItem(TGListTreeItem *parent, TGListTreeItem *item)
{
   // Add given item to list tree.

   InsertChild(parent, item);

   if ((parent == 0) || (parent && parent->IsOpen()))
      ClearViewPort();
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::AddItem(TGListTreeItem *parent, const char *string,
                                    const TGPicture *open, const TGPicture *closed,
                                    Bool_t checkbox)
{
   // Add item to list tree. Returns new item.

   TGListTreeItem *item;

   item = new TGListTreeItemStd(fClient, string, open, closed, checkbox);
   InsertChild(parent, item);

   if ((parent == 0) || (parent && parent->IsOpen()))
      ClearViewPort();
   return item;
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::AddItem(TGListTreeItem *parent, const char *string,
                                    void *userData, const TGPicture *open,
                                    const TGPicture *closed,
                                    Bool_t checkbox)
{
   // Add item to list tree. If item with same userData already exists
   // don't add it. Returns new item.

   TGListTreeItem *item = FindChildByData(parent, userData);
   if (!item) {
      item = AddItem(parent, string, open, closed, checkbox);
      if (item) item->SetUserData(userData);
   }

   return item;
}

//______________________________________________________________________________
void TGListTree::RenameItem(TGListTreeItem *item, const char *string)
{
   // Rename item in list tree.

   if (item) {
      item->Rename(string);
   }

   DoRedraw();
}

//______________________________________________________________________________
Int_t TGListTree::DeleteItem(TGListTreeItem *item)
{
   // Delete item from list tree.

   if (!fUserControlled)
      fCurrent = fBelowMouse = 0;

   PDeleteChildren(item);
   RemoveReference(item);
   PDeleteItem(item);

   fClient->NeedRedraw(this);

   return 1;
}

//______________________________________________________________________________
void TGListTree::OpenItem(TGListTreeItem *item)
{
   // Open item in list tree (i.e. show child items).

   if (item) {
      item->SetOpen(kTRUE);
      DoRedraw(); // force layout
      AdjustPosition(item);
   }
}

//______________________________________________________________________________
void TGListTree::CloseItem(TGListTreeItem *item)
{
   // Close item in list tree (i.e. hide child items).

   if (item) {
      item->SetOpen(kFALSE);
      DoRedraw(); // force layout
      AdjustPosition(item);
   }
}

//______________________________________________________________________________
Int_t TGListTree::RecursiveDeleteItem(TGListTreeItem *item, void *ptr)
{
   // Delete item with fUserData == ptr. Search tree downwards starting
   // at item.

   if (item && ptr) {
      if (item->GetUserData() == ptr) {
         DeleteItem(item);
      } else {
         if (item->IsOpen() && item->fFirstchild) {
            RecursiveDeleteItem(item->fFirstchild,  ptr);
         }
         RecursiveDeleteItem(item->fNextsibling, ptr);
      }
   }
   return 1;
}

//______________________________________________________________________________
void TGListTree::SetToolTipItem(TGListTreeItem *item, const char *string)
{
   // Set tooltip text for this item. By default an item for which the
   // userData is a pointer to an TObject the TObject::GetTitle() will
   // be used to get the tip text.

   if (item) {
      item->SetTipText(string);
   }
}

//______________________________________________________________________________
Int_t TGListTree::DeleteChildren(TGListTreeItem *item)
{
   // Delete children of item from list.

   if (!fUserControlled)
      fCurrent = fBelowMouse = 0;

   PDeleteChildren(item);

   DoRedraw();

   return 1;
}

//______________________________________________________________________________
Int_t TGListTree::Reparent(TGListTreeItem *item, TGListTreeItem *newparent)
{
   // Make newparent the new parent of item.

   // Remove the item from its old location.
   RemoveReference(item);

   // The item is now unattached. Reparent it.
   InsertChild(newparent, item);

   DoRedraw();

   return 1;
}

//______________________________________________________________________________
Int_t TGListTree::ReparentChildren(TGListTreeItem *item,
                                 TGListTreeItem *newparent)
{
   // Make newparent the new parent of the children of item.

   TGListTreeItem *first;

   if (item->fFirstchild) {
      first = item->fFirstchild;
      item->fFirstchild = 0;

      InsertChildren(newparent, first);

      DoRedraw();
      return 1;
   }
   return 0;
}

//______________________________________________________________________________
extern "C"
Int_t Compare(const void *item1, const void *item2)
{
   return strcmp((*((TGListTreeItem **) item1))->GetText(),
                 (*((TGListTreeItem **) item2))->GetText());
}

//______________________________________________________________________________
Int_t TGListTree::Sort(TGListTreeItem *item)
{
   // Sort items starting with item.

   TGListTreeItem *first, *parent, **list;
   size_t i, count;

   // Get first child in list;
   while (item->fPrevsibling) item = item->fPrevsibling;

   first = item;
   parent = first->fParent;

   // Count the children
   count = 1;
   while (item->fNextsibling) item = item->fNextsibling, count++;
   if (count <= 1) return 1;

   list = new TGListTreeItem* [count];
   list[0] = first;
   count = 1;
   while (first->fNextsibling) {
      list[count] = first->fNextsibling;
      count++;
      first = first->fNextsibling;
   }

   ::qsort(list, count, sizeof(TGListTreeItem*), ::Compare);

   list[0]->fPrevsibling = 0;
   for (i = 0; i < count; i++) {
      if (i < count - 1)
         list[i]->fNextsibling = list[i + 1];
      if (i > 0)
         list[i]->fPrevsibling = list[i - 1];
   }
   list[count - 1]->fNextsibling = 0;
   if (parent) {
      parent->fFirstchild = list[0];
      parent->fLastchild  = list[count-1];
   }
   else {
      fFirst = list[0];
      fLast  = list[count-1];
   }

   delete [] list;

   DoRedraw();

   return 1;
}

//______________________________________________________________________________
Int_t TGListTree::SortSiblings(TGListTreeItem *item)
{
   // Sort siblings of item.

   return Sort(item);
}

//______________________________________________________________________________
Int_t TGListTree::SortChildren(TGListTreeItem *item)
{
   // Sort children of item.

   TGListTreeItem *first;

   if (item) {
      first = item->fFirstchild;
      if (first) {
         SortSiblings(first);
      }
   } else {
      if (fFirst) {
         first = fFirst->fFirstchild;
         if (first) {
            SortSiblings(first);
         }
      }
   }
   DoRedraw();
   return 1;
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::FindSiblingByName(TGListTreeItem *item, const char *name)
{
   // Find sibling of item by name.

   // Get first child in list
   if (item) {
      while (item->fPrevsibling) {
         item = item->fPrevsibling;
      }

      while (item) {
         if (strcmp(item->GetText(), name) == 0) {
            return item;
         }
         item = item->fNextsibling;
      }
      return item;
   }
   return 0;
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::FindSiblingByData(TGListTreeItem *item, void *userData)
{
   // Find sibling of item by userData.

   // Get first child in list
   if (item) {
      while (item->fPrevsibling) {
         item = item->fPrevsibling;
      }

      while (item) {
         if (item->GetUserData() == userData) {
            return item;
         }
         item = item->fNextsibling;
      }
      return item;
   }
   return 0;
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::FindChildByName(TGListTreeItem *item, const char *name)
{
   // Find child of item by name.

   // Get first child in list
   if (item && item->fFirstchild) {
      item = item->fFirstchild;
   } else if (!item && fFirst) {
      item = fFirst;
   } else {
      item = 0;
   }

   while (item) {
      if (strcmp(item->GetText(), name) == 0) {
         return item;
      }
      item = item->fNextsibling;
   }
   return 0;
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::FindChildByData(TGListTreeItem *item, void *userData)
{
   // Find child of item by userData.

   // Get first child in list
   if (item && item->fFirstchild) {
      item = item->fFirstchild;
   } else if (!item && fFirst) {
      item = fFirst;
   } else {
      item = 0;
   }

   while (item) {
      if (item->GetUserData() == userData) {
         return item;
      }
      item = item->fNextsibling;
   }
   return 0;
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::FindItemByPathname(const char *path)
{
   // Find item by pathname. Pathname is in the form of /xx/yy/zz. If zz
   // in path /xx/yy is found it returns item, 0 otherwise.

   if (!path || !*path) return 0;

   const char *p = path, *s;
   char dirname[1024];
   TGListTreeItem *item = 0;
   item = FindChildByName(item, "/");
   if (!gVirtualX->InheritsFrom("TGX11")) {
      // on Windows, use the current drive instead of root (/)
      TList *curvol  = gSystem->GetVolumes("cur");
      if (curvol) {
         TNamed *drive = (TNamed *)curvol->At(0);
         item = FindChildByName(0, TString::Format("%s\\", drive->GetName()));
      }
   }
   TGListTreeItem *diritem = 0;
   TString fulldir;

start:
   while (1) {
      while (*p && *p == '/') p++;
      if (!*p) break;

      s = strchr(p, '/');

      if (!s) {
         strlcpy(dirname, p, 1024);
      } else {
         strlcpy(dirname, p, (s-p)+1);
      }

      item = FindChildByName(item, dirname);

      if (!diritem && dirname[0]) {
         fulldir += "/";
         fulldir += dirname;

         if ((diritem=FindChildByName(0, fulldir.Data()))) {
            if (!s || !strlen(s)) return diritem;
            p = ++s;
            item = diritem;
            goto start;
         }
      }

      if (!s || !strlen(s)) return item;
      p = ++s;
   }
   return 0;
}

//______________________________________________________________________________
void TGListTree::HighlightItem(TGListTreeItem *item)
{
   // Highlight item.

   UnselectAll(kFALSE);
   HighlightItem(item, kTRUE, kFALSE);
   AdjustPosition(item);
}

//______________________________________________________________________________
void TGListTree::ClearHighlighted()
{
   // Un highlight items.

   UnselectAll(kFALSE);
}

//______________________________________________________________________________
void TGListTree::GetPathnameFromItem(TGListTreeItem *item, char *path, Int_t depth)
{
   // Get pathname from item. Use depth to limit path name to last
   // depth levels. By default depth is not limited.

   char tmppath[1024];

   *path = '\0';
   while (item) {
      snprintf(tmppath, 1023, "/%s%s", item->GetText(), path);
      strlcpy(path, tmppath, 1024);
      item = item->fParent;
      if (--depth == 0 && item) {
         snprintf(tmppath, 1023, "...%s", path);
         strlcpy(path, tmppath, 1024);
         return;
      }
   }
}

//______________________________________________________________________________
Pixel_t TGListTree::GetGrayPixel()
{
   // Return gray draw color in use.

   static Bool_t init = kFALSE;
   if (!init) {
      if (!gClient->GetColorByName("#808080", fgGrayPixel))
         fgGrayPixel = fgBlackPixel;
      init = kTRUE;
   }
   return fgGrayPixel;
}

//______________________________________________________________________________
FontStruct_t TGListTree::GetDefaultFontStruct()
{
   // Return default font structure in use.

   if (!fgDefaultFont)
      fgDefaultFont = gClient->GetResourcePool()->GetIconFont();
   return fgDefaultFont->GetFontStruct();
}

//______________________________________________________________________________
const TGGC &TGListTree::GetActiveGC()
{
   // Return default graphics context in use.

   if (!fgActiveGC) {
      GCValues_t gcv;

      gcv.fMask = kGCLineStyle  | kGCLineWidth  | kGCFillStyle |
                  kGCForeground | kGCBackground | kGCFont;
      gcv.fLineStyle  = kLineSolid;
      gcv.fLineWidth  = 0;
      gcv.fFillStyle  = kFillSolid;
      gcv.fFont       = fgDefaultFont->GetFontHandle();
      gcv.fBackground = fgDefaultSelectedBackground;
      const TGGC *selgc = gClient->GetResourcePool()->GetSelectedGC();
      if (selgc)
         gcv.fForeground = selgc->GetForeground();
      else 
         gcv.fForeground = fgWhitePixel;
      fgActiveGC = gClient->GetGC(&gcv, kTRUE);
   }
   return *fgActiveGC;
}

//______________________________________________________________________________
const TGGC &TGListTree::GetDrawGC()
{
   // Return default graphics context in use.

   if (!fgDrawGC) {
      GCValues_t gcv;

      gcv.fMask = kGCLineStyle  | kGCLineWidth  | kGCFillStyle |
                  kGCForeground | kGCBackground | kGCFont;
      gcv.fLineStyle  = kLineSolid;
      gcv.fLineWidth  = 0;
      gcv.fFillStyle  = kFillSolid;
      gcv.fFont       = fgDefaultFont->GetFontHandle();
      gcv.fBackground = fgWhitePixel;
      gcv.fForeground = fgBlackPixel;

      fgDrawGC = gClient->GetGC(&gcv, kTRUE);
   }
   return *fgDrawGC;
}

//______________________________________________________________________________
const TGGC &TGListTree::GetLineGC()
{
   // Return graphics context in use for line drawing.

   if (!fgLineGC) {
      GCValues_t gcv;

      gcv.fMask = kGCLineStyle  | kGCLineWidth  | kGCFillStyle |
                  kGCForeground | kGCBackground | kGCFont;
      gcv.fLineStyle  = kLineOnOffDash;
      gcv.fLineWidth  = 0;
      gcv.fFillStyle  = kFillSolid;
      gcv.fFont       = fgDefaultFont->GetFontHandle();
      gcv.fBackground = fgWhitePixel;
      gcv.fForeground = GetGrayPixel();

      fgLineGC = gClient->GetGC(&gcv, kTRUE);
      fgLineGC->SetDashOffset(0);
      fgLineGC->SetDashList("\x1\x1", 2);
   }
   return *fgLineGC;
}

//______________________________________________________________________________
const TGGC &TGListTree::GetHighlightGC()
{
   // Return graphics context for highlighted frame background.

   if (!fgHighlightGC) {
      GCValues_t gcv;

      gcv.fMask = kGCLineStyle  | kGCLineWidth  | kGCFillStyle |
                  kGCForeground | kGCBackground | kGCFont;
      gcv.fLineStyle  = kLineSolid;
      gcv.fLineWidth  = 0;
      gcv.fFillStyle  = kFillSolid;
      gcv.fFont       = fgDefaultFont->GetFontHandle();
      gcv.fBackground = fgDefaultSelectedBackground;
      gcv.fForeground = fgWhitePixel;

      fgHighlightGC = gClient->GetGC(&gcv, kTRUE);
   }
   return *fgHighlightGC;
}

//______________________________________________________________________________
const TGGC &TGListTree::GetColorGC()
{
   // Return graphics context for highlighted frame background.

   if (!fgColorGC) {
      GCValues_t gcv;

      gcv.fMask = kGCLineStyle  | kGCLineWidth  | kGCFillStyle |
                  kGCForeground | kGCBackground;
      gcv.fLineStyle  = kLineSolid;
      gcv.fLineWidth  = 1;
      gcv.fFillStyle  = kFillSolid;
      gcv.fBackground = fgDefaultSelectedBackground;
      gcv.fForeground = fgWhitePixel;

      fgColorGC = gClient->GetGC(&gcv, kTRUE);
   }
   return *fgColorGC;
}

//______________________________________________________________________________
const TGPicture *TGListTree::GetOpenPic()
{
   // Returns the icon used by items in open state.

   if (!fgOpenPic)
      fgOpenPic = gClient->GetPicture("ofolder_t.xpm");
   ((TGPicture *)fgOpenPic)->AddReference();
   return fgOpenPic;
}

//______________________________________________________________________________
const TGPicture *TGListTree::GetClosedPic()
{
   // Returns the icon used by items in closed state.

   if (!fgClosedPic)
      fgClosedPic = gClient->GetPicture("folder_t.xpm");
   ((TGPicture *)fgClosedPic)->AddReference();
   return fgClosedPic;
}

//______________________________________________________________________________
const TGPicture *TGListTree::GetCheckedPic()
{
   // Returns the icon used for checked checkbox.

   if (!fgCheckedPic)
      fgCheckedPic = gClient->GetPicture("checked_t.xpm");
   ((TGPicture *)fgCheckedPic)->AddReference();
   return fgCheckedPic;
}

//______________________________________________________________________________
const TGPicture *TGListTree::GetUncheckedPic()
{
   // Returns the icon used for unchecked checkbox.

   if (!fgUncheckedPic)
      fgUncheckedPic = gClient->GetPicture("unchecked_t.xpm");
   ((TGPicture *)fgUncheckedPic)->AddReference();
   return fgUncheckedPic;
}

//______________________________________________________________________________
void TGListTree::SavePrimitive(ostream &out, Option_t *option /*= ""*/)
{
   // Save a list tree widget as a C++ statements on output stream out.

   if (fBackground != GetWhitePixel()) SaveUserColor(out, option);

   out << endl << "   // list tree" << endl;
   out << "   TGListTree *";

   if ((fParent->GetParent())->InheritsFrom(TGCanvas::Class())) {
      out << GetName() << " = new TGListTree(" << GetCanvas()->GetName();
   } else {
      out << GetName() << " = new TGListTree(" << fParent->GetName();
      out << "," << GetWidth() << "," << GetHeight();
   }

   if (fBackground == GetWhitePixel()) {
      if (GetOptions() == kSunkenFrame) {
         out <<");" << endl;
      } else {
         out << "," << GetOptionString() <<");" << endl;
      }
   } else {
      out << "," << GetOptionString() << ",ucolor);" << endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << endl;

   out << endl;

   static Int_t n = 0;

   TGListTreeItem *current;
   current = GetFirstItem();

   out << "   const TGPicture *popen;       //used for list tree items" << endl;
   out << "   const TGPicture *pclose;      //used for list tree items" << endl;
   out << endl;

   while (current) {
      out << "   TGListTreeItem *item" << n << " = " << GetName() << "->AddItem(";
      current->SavePrimitive(out, TString::Format("%d",n), n);
      if (current->IsOpen())
         out << "   " << GetName() << "->OpenItem(item" << n << ");" << endl;
      else
         out << "   " << GetName() << "->CloseItem(item" << n << ");" << endl;

      if (current == fSelected)
         out << "   " << GetName() << "->SetSelected(item" << n << ");" << endl;

      n++;
      if (current->fFirstchild) {
         SaveChildren(out, current->fFirstchild, n);
      }
      current = current->fNextsibling;
   }

   out << endl;
}

//______________________________________________________________________________
void TGListTree::SaveChildren(ostream &out, TGListTreeItem *item, Int_t &n)
{
   // Save child items as a C++ statements on output stream out.

   Int_t p = n-1;
   while (item) {
      out << "   TGListTreeItem *item" << n << " = " << GetName() << "->AddItem(";
      item->SavePrimitive(out, TString::Format("%d",p),n);
      n++;
      if (item->fFirstchild) {
         SaveChildren(out, item->fFirstchild, n);
      }
      item = item->fNextsibling;
   }
}

//______________________________________________________________________________
void TGListTreeItemStd::SavePrimitive(ostream &out, Option_t *option, Int_t n)
{
   // Save a list tree item attributes as a C++ statements on output stream.

   static const TGPicture *oldopen=0;
   static const TGPicture *oldclose=0;
   static const TGPicture *oldcheck=0;
   static const TGPicture *olduncheck=0;
   static Bool_t makecheck = kTRUE;
   static Bool_t makeuncheck = kTRUE;
   static Color_t oldcolor = -1;

   char quote = '"';
   TString s = TString::Format("%d", n);

   if (!fParent)
      out << "NULL,";
   else
      out << "item" << option << ",";
   TString text = GetText();
   text.ReplaceAll('\\', "\\\\");
   text.ReplaceAll("\"", "\\\"");
   out << quote << text << quote;
   out << ");" << endl;

   if (oldopen != fOpenPic) {
      oldopen = fOpenPic;
      out << "   popen = gClient->GetPicture(" << quote
          << gSystem->ExpandPathName(gSystem->UnixPathName(fOpenPic->GetName()))
          << quote << ");" << endl;
   }
   if (oldclose != fClosedPic) {
      oldclose = fClosedPic;
      out << "   pclose = gClient->GetPicture(" << quote
          << gSystem->ExpandPathName(gSystem->UnixPathName(fClosedPic->GetName()))
          << quote << ");" << endl;
   }
   out << "   item" << s.Data() << "->SetPictures(popen, pclose);" << endl;
   if (HasCheckBox()) {
      if (fCheckedPic && makecheck) {
         out << "   const TGPicture *pcheck;        //used for checked items" << endl;
         makecheck = kFALSE;
      }
      if (fUncheckedPic && makeuncheck) {
         out << "   const TGPicture *puncheck;      //used for unchecked items" << endl;
         makeuncheck = kFALSE;
      }
      out << "   item" << s.Data() << "->CheckItem();" << endl;
      if (fCheckedPic && oldcheck != fCheckedPic) {
         oldcheck = fCheckedPic;
         out << "   pcheck = gClient->GetPicture(" << quote
             << gSystem->ExpandPathName(gSystem->UnixPathName(fCheckedPic->GetName()))
             << quote << ");" << endl;
      }
      if (fUncheckedPic && olduncheck != fUncheckedPic) {
         olduncheck = fUncheckedPic;
         out << "   puncheck = gClient->GetPicture(" << quote
             << gSystem->ExpandPathName(gSystem->UnixPathName(fUncheckedPic->GetName()))
             << quote << ");" << endl;
      }
      out << "   item" << s.Data() << "->SetCheckBoxPictures(pcheck, puncheck);" << endl;
      out << "   item" << s.Data() << "->SetCheckBox(kTRUE);" << endl;
   }
   if (fHasColor) {
      if (oldcolor != fColor) {
         oldcolor = fColor;
         out << "   item" << s.Data() << "->SetColor(" << fColor << ");" << endl;
      }
   }
   if (fTipText.Length() > 0) {
      TString tiptext = GetTipText();
      tiptext.ReplaceAll('\\', "\\\\");
      tiptext.ReplaceAll("\n", "\\n");
      tiptext.ReplaceAll("\"", "\\\"");
      out << "   item" << s.Data() << "->SetTipText(" << quote
          << tiptext << quote << ");" << endl;
   }

}

//______________________________________________________________________________
void TGListTree::CheckItem(TGListTreeItem *item, Bool_t check)
{
   // Set check button state for the node 'item'.

   item->CheckItem(check);
}

//______________________________________________________________________________
void TGListTree::SetCheckBox(TGListTreeItem *item, Bool_t on)
{
   // Set check button state for the node 'item'.

   item->SetCheckBox(on);
}

//______________________________________________________________________________
void TGListTree::ToggleItem(TGListTreeItem *item)
{
   // Toggle check button state of the node 'item'.

   item->Toggle();
}

//______________________________________________________________________________
void TGListTree::UpdateChecked(TGListTreeItem *item, Bool_t redraw)
{
   // Update the state of the node 'item' according to the children states.

   if (fAutoCheckBoxPic == kFALSE) return;

   TGListTreeItem *parent;
   TGListTreeItem *current;
   current = item->GetFirstChild();
   parent  = current ? current : item;
   // recursively check parent/children status
   while (parent && parent->HasCheckBox()) {
      if ((!parent->IsChecked() && parent->HasCheckedChild(kTRUE)) ||
          (parent->IsChecked() && parent->HasUnCheckedChild(kTRUE))) {
         parent->SetCheckBoxPictures(fClient->GetPicture("checked_dis_t.xpm"),
                                     fClient->GetPicture("unchecked_dis_t.xpm"));
      }
      else {
         parent->SetCheckBoxPictures(fClient->GetPicture("checked_t.xpm"),
                                     fClient->GetPicture("unchecked_t.xpm"));
      }
      parent = parent->GetParent();
      if (parent && fCheckMode == kRecursive) {
         if (!parent->IsChecked() && parent->GetFirstChild() && 
             !parent->GetFirstChild()->HasUnCheckedChild()) {
            parent->SetCheckBoxPictures(fClient->GetPicture("checked_t.xpm"),
                                        fClient->GetPicture("unchecked_t.xpm"));
            parent->CheckItem(kTRUE);
         }
         else if (parent->IsChecked() && parent->GetFirstChild() && 
                  !parent->GetFirstChild()->HasCheckedChild()) {
            parent->SetCheckBoxPictures(fClient->GetPicture("checked_t.xpm"),
                                        fClient->GetPicture("unchecked_t.xpm"));
            parent->CheckItem(kFALSE);
         }
      }
   }
   if (redraw) {
      ClearViewPort();
   }
}

//______________________________________________________________________________
TGListTreeItem *TGListTree::FindItemByObj(TGListTreeItem *item, void *ptr)
{
   // Find item with fUserData == ptr. Search tree downwards starting
   // at item.

   TGListTreeItem *fitem;
   if (item && ptr) {
      if (item->GetUserData() == ptr)
         return item;
      else {
         if (item->fFirstchild) {
            fitem = FindItemByObj(item->fFirstchild,  ptr);
            if (fitem) return fitem;
         }
         return FindItemByObj(item->fNextsibling, ptr);
      }
   }
   return 0;
}

//______________________________________________________________________________
void TGListTree::GetChecked(TList *checked)
{
   // Add all checked list tree items of this list tree into 
   // the list 'checked'. This list is not adopted and must
   // be deleted by the user later.
   
   if (!checked || !fFirst) return;
   TGListTreeItem *current = fFirst;
   if (current->IsChecked()) {
      checked->Add(new TObjString(current->GetText()));
   }
   while(current) {
      if (current->GetFirstChild())
         GetCheckedChildren(checked, current->GetFirstChild());
      current = current->GetNextSibling();
   }
}

//______________________________________________________________________________
void TGListTree::GetCheckedChildren(TList *checked, TGListTreeItem *item)
{
   // Add all child items of 'item' into the list 'checked'.

   if (!checked || !item) return;

   while (item) {
      if (item->IsChecked()) {
         checked->Add(new TObjString(item->GetText()));
      }
      if (item->GetFirstChild()) {
         GetCheckedChildren(checked, item->GetFirstChild());
      }
      item = item->GetNextSibling();
   }
}

//______________________________________________________________________________
void TGListTree::CheckAllChildren(TGListTreeItem *item, Bool_t state)
{
   // Check all child items of 'item' and 'item' itself according
   // to the state value: kTRUE means check all, kFALSE - uncheck all.
   
   if (item) 
      item->CheckAllChildren(state);
}

 TGListTree.cxx:1
 TGListTree.cxx:2
 TGListTree.cxx:3
 TGListTree.cxx:4
 TGListTree.cxx:5
 TGListTree.cxx:6
 TGListTree.cxx:7
 TGListTree.cxx:8
 TGListTree.cxx:9
 TGListTree.cxx:10
 TGListTree.cxx:11
 TGListTree.cxx:12
 TGListTree.cxx:13
 TGListTree.cxx:14
 TGListTree.cxx:15
 TGListTree.cxx:16
 TGListTree.cxx:17
 TGListTree.cxx:18
 TGListTree.cxx:19
 TGListTree.cxx:20
 TGListTree.cxx:21
 TGListTree.cxx:22
 TGListTree.cxx:23
 TGListTree.cxx:24
 TGListTree.cxx:25
 TGListTree.cxx:26
 TGListTree.cxx:27
 TGListTree.cxx:28
 TGListTree.cxx:29
 TGListTree.cxx:30
 TGListTree.cxx:31
 TGListTree.cxx:32
 TGListTree.cxx:33
 TGListTree.cxx:34
 TGListTree.cxx:35
 TGListTree.cxx:36
 TGListTree.cxx:37
 TGListTree.cxx:38
 TGListTree.cxx:39
 TGListTree.cxx:40
 TGListTree.cxx:41
 TGListTree.cxx:42
 TGListTree.cxx:43
 TGListTree.cxx:44
 TGListTree.cxx:45
 TGListTree.cxx:46
 TGListTree.cxx:47
 TGListTree.cxx:48
 TGListTree.cxx:49
 TGListTree.cxx:50
 TGListTree.cxx:51
 TGListTree.cxx:52
 TGListTree.cxx:53
 TGListTree.cxx:54
 TGListTree.cxx:55
 TGListTree.cxx:56
 TGListTree.cxx:57
 TGListTree.cxx:58
 TGListTree.cxx:59
 TGListTree.cxx:60
 TGListTree.cxx:61
 TGListTree.cxx:62
 TGListTree.cxx:63
 TGListTree.cxx:64
 TGListTree.cxx:65
 TGListTree.cxx:66
 TGListTree.cxx:67
 TGListTree.cxx:68
 TGListTree.cxx:69
 TGListTree.cxx:70
 TGListTree.cxx:71
 TGListTree.cxx:72
 TGListTree.cxx:73
 TGListTree.cxx:74
 TGListTree.cxx:75
 TGListTree.cxx:76
 TGListTree.cxx:77
 TGListTree.cxx:78
 TGListTree.cxx:79
 TGListTree.cxx:80
 TGListTree.cxx:81
 TGListTree.cxx:82
 TGListTree.cxx:83
 TGListTree.cxx:84
 TGListTree.cxx:85
 TGListTree.cxx:86
 TGListTree.cxx:87
 TGListTree.cxx:88
 TGListTree.cxx:89
 TGListTree.cxx:90
 TGListTree.cxx:91
 TGListTree.cxx:92
 TGListTree.cxx:93
 TGListTree.cxx:94
 TGListTree.cxx:95
 TGListTree.cxx:96
 TGListTree.cxx:97
 TGListTree.cxx:98
 TGListTree.cxx:99
 TGListTree.cxx:100
 TGListTree.cxx:101
 TGListTree.cxx:102
 TGListTree.cxx:103
 TGListTree.cxx:104
 TGListTree.cxx:105
 TGListTree.cxx:106
 TGListTree.cxx:107
 TGListTree.cxx:108
 TGListTree.cxx:109
 TGListTree.cxx:110
 TGListTree.cxx:111
 TGListTree.cxx:112
 TGListTree.cxx:113
 TGListTree.cxx:114
 TGListTree.cxx:115
 TGListTree.cxx:116
 TGListTree.cxx:117
 TGListTree.cxx:118
 TGListTree.cxx:119
 TGListTree.cxx:120
 TGListTree.cxx:121
 TGListTree.cxx:122
 TGListTree.cxx:123
 TGListTree.cxx:124
 TGListTree.cxx:125
 TGListTree.cxx:126
 TGListTree.cxx:127
 TGListTree.cxx:128
 TGListTree.cxx:129
 TGListTree.cxx:130
 TGListTree.cxx:131
 TGListTree.cxx:132
 TGListTree.cxx:133
 TGListTree.cxx:134
 TGListTree.cxx:135
 TGListTree.cxx:136
 TGListTree.cxx:137
 TGListTree.cxx:138
 TGListTree.cxx:139
 TGListTree.cxx:140
 TGListTree.cxx:141
 TGListTree.cxx:142
 TGListTree.cxx:143
 TGListTree.cxx:144
 TGListTree.cxx:145
 TGListTree.cxx:146
 TGListTree.cxx:147
 TGListTree.cxx:148
 TGListTree.cxx:149
 TGListTree.cxx:150
 TGListTree.cxx:151
 TGListTree.cxx:152
 TGListTree.cxx:153
 TGListTree.cxx:154
 TGListTree.cxx:155
 TGListTree.cxx:156
 TGListTree.cxx:157
 TGListTree.cxx:158
 TGListTree.cxx:159
 TGListTree.cxx:160
 TGListTree.cxx:161
 TGListTree.cxx:162
 TGListTree.cxx:163
 TGListTree.cxx:164
 TGListTree.cxx:165
 TGListTree.cxx:166
 TGListTree.cxx:167
 TGListTree.cxx:168
 TGListTree.cxx:169
 TGListTree.cxx:170
 TGListTree.cxx:171
 TGListTree.cxx:172
 TGListTree.cxx:173
 TGListTree.cxx:174
 TGListTree.cxx:175
 TGListTree.cxx:176
 TGListTree.cxx:177
 TGListTree.cxx:178
 TGListTree.cxx:179
 TGListTree.cxx:180
 TGListTree.cxx:181
 TGListTree.cxx:182
 TGListTree.cxx:183
 TGListTree.cxx:184
 TGListTree.cxx:185
 TGListTree.cxx:186
 TGListTree.cxx:187
 TGListTree.cxx:188
 TGListTree.cxx:189
 TGListTree.cxx:190
 TGListTree.cxx:191
 TGListTree.cxx:192
 TGListTree.cxx:193
 TGListTree.cxx:194
 TGListTree.cxx:195
 TGListTree.cxx:196
 TGListTree.cxx:197
 TGListTree.cxx:198
 TGListTree.cxx:199
 TGListTree.cxx:200
 TGListTree.cxx:201
 TGListTree.cxx:202
 TGListTree.cxx:203
 TGListTree.cxx:204
 TGListTree.cxx:205
 TGListTree.cxx:206
 TGListTree.cxx:207
 TGListTree.cxx:208
 TGListTree.cxx:209
 TGListTree.cxx:210
 TGListTree.cxx:211
 TGListTree.cxx:212
 TGListTree.cxx:213
 TGListTree.cxx:214
 TGListTree.cxx:215
 TGListTree.cxx:216
 TGListTree.cxx:217
 TGListTree.cxx:218
 TGListTree.cxx:219
 TGListTree.cxx:220
 TGListTree.cxx:221
 TGListTree.cxx:222
 TGListTree.cxx:223
 TGListTree.cxx:224
 TGListTree.cxx:225
 TGListTree.cxx:226
 TGListTree.cxx:227
 TGListTree.cxx:228
 TGListTree.cxx:229
 TGListTree.cxx:230
 TGListTree.cxx:231
 TGListTree.cxx:232
 TGListTree.cxx:233
 TGListTree.cxx:234
 TGListTree.cxx:235
 TGListTree.cxx:236
 TGListTree.cxx:237
 TGListTree.cxx:238
 TGListTree.cxx:239
 TGListTree.cxx:240
 TGListTree.cxx:241
 TGListTree.cxx:242
 TGListTree.cxx:243
 TGListTree.cxx:244
 TGListTree.cxx:245
 TGListTree.cxx:246
 TGListTree.cxx:247
 TGListTree.cxx:248
 TGListTree.cxx:249
 TGListTree.cxx:250
 TGListTree.cxx:251
 TGListTree.cxx:252
 TGListTree.cxx:253
 TGListTree.cxx:254
 TGListTree.cxx:255
 TGListTree.cxx:256
 TGListTree.cxx:257
 TGListTree.cxx:258
 TGListTree.cxx:259
 TGListTree.cxx:260
 TGListTree.cxx:261
 TGListTree.cxx:262
 TGListTree.cxx:263
 TGListTree.cxx:264
 TGListTree.cxx:265
 TGListTree.cxx:266
 TGListTree.cxx:267
 TGListTree.cxx:268
 TGListTree.cxx:269
 TGListTree.cxx:270
 TGListTree.cxx:271
 TGListTree.cxx:272
 TGListTree.cxx:273
 TGListTree.cxx:274
 TGListTree.cxx:275
 TGListTree.cxx:276
 TGListTree.cxx:277
 TGListTree.cxx:278
 TGListTree.cxx:279
 TGListTree.cxx:280
 TGListTree.cxx:281
 TGListTree.cxx:282
 TGListTree.cxx:283
 TGListTree.cxx:284
 TGListTree.cxx:285
 TGListTree.cxx:286
 TGListTree.cxx:287
 TGListTree.cxx:288
 TGListTree.cxx:289
 TGListTree.cxx:290
 TGListTree.cxx:291
 TGListTree.cxx:292
 TGListTree.cxx:293
 TGListTree.cxx:294
 TGListTree.cxx:295
 TGListTree.cxx:296
 TGListTree.cxx:297
 TGListTree.cxx:298
 TGListTree.cxx:299
 TGListTree.cxx:300
 TGListTree.cxx:301
 TGListTree.cxx:302
 TGListTree.cxx:303
 TGListTree.cxx:304
 TGListTree.cxx:305
 TGListTree.cxx:306
 TGListTree.cxx:307
 TGListTree.cxx:308
 TGListTree.cxx:309
 TGListTree.cxx:310
 TGListTree.cxx:311
 TGListTree.cxx:312
 TGListTree.cxx:313
 TGListTree.cxx:314
 TGListTree.cxx:315
 TGListTree.cxx:316
 TGListTree.cxx:317
 TGListTree.cxx:318
 TGListTree.cxx:319
 TGListTree.cxx:320
 TGListTree.cxx:321
 TGListTree.cxx:322
 TGListTree.cxx:323
 TGListTree.cxx:324
 TGListTree.cxx:325
 TGListTree.cxx:326
 TGListTree.cxx:327
 TGListTree.cxx:328
 TGListTree.cxx:329
 TGListTree.cxx:330
 TGListTree.cxx:331
 TGListTree.cxx:332
 TGListTree.cxx:333
 TGListTree.cxx:334
 TGListTree.cxx:335
 TGListTree.cxx:336
 TGListTree.cxx:337
 TGListTree.cxx:338
 TGListTree.cxx:339
 TGListTree.cxx:340
 TGListTree.cxx:341
 TGListTree.cxx:342
 TGListTree.cxx:343
 TGListTree.cxx:344
 TGListTree.cxx:345
 TGListTree.cxx:346
 TGListTree.cxx:347
 TGListTree.cxx:348
 TGListTree.cxx:349
 TGListTree.cxx:350
 TGListTree.cxx:351
 TGListTree.cxx:352
 TGListTree.cxx:353
 TGListTree.cxx:354
 TGListTree.cxx:355
 TGListTree.cxx:356
 TGListTree.cxx:357
 TGListTree.cxx:358
 TGListTree.cxx:359
 TGListTree.cxx:360
 TGListTree.cxx:361
 TGListTree.cxx:362
 TGListTree.cxx:363
 TGListTree.cxx:364
 TGListTree.cxx:365
 TGListTree.cxx:366
 TGListTree.cxx:367
 TGListTree.cxx:368
 TGListTree.cxx:369
 TGListTree.cxx:370
 TGListTree.cxx:371
 TGListTree.cxx:372
 TGListTree.cxx:373
 TGListTree.cxx:374
 TGListTree.cxx:375
 TGListTree.cxx:376
 TGListTree.cxx:377
 TGListTree.cxx:378
 TGListTree.cxx:379
 TGListTree.cxx:380
 TGListTree.cxx:381
 TGListTree.cxx:382
 TGListTree.cxx:383
 TGListTree.cxx:384
 TGListTree.cxx:385
 TGListTree.cxx:386
 TGListTree.cxx:387
 TGListTree.cxx:388
 TGListTree.cxx:389
 TGListTree.cxx:390
 TGListTree.cxx:391
 TGListTree.cxx:392
 TGListTree.cxx:393
 TGListTree.cxx:394
 TGListTree.cxx:395
 TGListTree.cxx:396
 TGListTree.cxx:397
 TGListTree.cxx:398
 TGListTree.cxx:399
 TGListTree.cxx:400
 TGListTree.cxx:401
 TGListTree.cxx:402
 TGListTree.cxx:403
 TGListTree.cxx:404
 TGListTree.cxx:405
 TGListTree.cxx:406
 TGListTree.cxx:407
 TGListTree.cxx:408
 TGListTree.cxx:409
 TGListTree.cxx:410
 TGListTree.cxx:411
 TGListTree.cxx:412
 TGListTree.cxx:413
 TGListTree.cxx:414
 TGListTree.cxx:415
 TGListTree.cxx:416
 TGListTree.cxx:417
 TGListTree.cxx:418
 TGListTree.cxx:419
 TGListTree.cxx:420
 TGListTree.cxx:421
 TGListTree.cxx:422
 TGListTree.cxx:423
 TGListTree.cxx:424
 TGListTree.cxx:425
 TGListTree.cxx:426
 TGListTree.cxx:427
 TGListTree.cxx:428
 TGListTree.cxx:429
 TGListTree.cxx:430
 TGListTree.cxx:431
 TGListTree.cxx:432
 TGListTree.cxx:433
 TGListTree.cxx:434
 TGListTree.cxx:435
 TGListTree.cxx:436
 TGListTree.cxx:437
 TGListTree.cxx:438
 TGListTree.cxx:439
 TGListTree.cxx:440
 TGListTree.cxx:441
 TGListTree.cxx:442
 TGListTree.cxx:443
 TGListTree.cxx:444
 TGListTree.cxx:445
 TGListTree.cxx:446
 TGListTree.cxx:447
 TGListTree.cxx:448
 TGListTree.cxx:449
 TGListTree.cxx:450
 TGListTree.cxx:451
 TGListTree.cxx:452
 TGListTree.cxx:453
 TGListTree.cxx:454
 TGListTree.cxx:455
 TGListTree.cxx:456
 TGListTree.cxx:457
 TGListTree.cxx:458
 TGListTree.cxx:459
 TGListTree.cxx:460
 TGListTree.cxx:461
 TGListTree.cxx:462
 TGListTree.cxx:463
 TGListTree.cxx:464
 TGListTree.cxx:465
 TGListTree.cxx:466
 TGListTree.cxx:467
 TGListTree.cxx:468
 TGListTree.cxx:469
 TGListTree.cxx:470
 TGListTree.cxx:471
 TGListTree.cxx:472
 TGListTree.cxx:473
 TGListTree.cxx:474
 TGListTree.cxx:475
 TGListTree.cxx:476
 TGListTree.cxx:477
 TGListTree.cxx:478
 TGListTree.cxx:479
 TGListTree.cxx:480
 TGListTree.cxx:481
 TGListTree.cxx:482
 TGListTree.cxx:483
 TGListTree.cxx:484
 TGListTree.cxx:485
 TGListTree.cxx:486
 TGListTree.cxx:487
 TGListTree.cxx:488
 TGListTree.cxx:489
 TGListTree.cxx:490
 TGListTree.cxx:491
 TGListTree.cxx:492
 TGListTree.cxx:493
 TGListTree.cxx:494
 TGListTree.cxx:495
 TGListTree.cxx:496
 TGListTree.cxx:497
 TGListTree.cxx:498
 TGListTree.cxx:499
 TGListTree.cxx:500
 TGListTree.cxx:501
 TGListTree.cxx:502
 TGListTree.cxx:503
 TGListTree.cxx:504
 TGListTree.cxx:505
 TGListTree.cxx:506
 TGListTree.cxx:507
 TGListTree.cxx:508
 TGListTree.cxx:509
 TGListTree.cxx:510
 TGListTree.cxx:511
 TGListTree.cxx:512
 TGListTree.cxx:513
 TGListTree.cxx:514
 TGListTree.cxx:515
 TGListTree.cxx:516
 TGListTree.cxx:517
 TGListTree.cxx:518
 TGListTree.cxx:519
 TGListTree.cxx:520
 TGListTree.cxx:521
 TGListTree.cxx:522
 TGListTree.cxx:523
 TGListTree.cxx:524
 TGListTree.cxx:525
 TGListTree.cxx:526
 TGListTree.cxx:527
 TGListTree.cxx:528
 TGListTree.cxx:529
 TGListTree.cxx:530
 TGListTree.cxx:531
 TGListTree.cxx:532
 TGListTree.cxx:533
 TGListTree.cxx:534
 TGListTree.cxx:535
 TGListTree.cxx:536
 TGListTree.cxx:537
 TGListTree.cxx:538
 TGListTree.cxx:539
 TGListTree.cxx:540
 TGListTree.cxx:541
 TGListTree.cxx:542
 TGListTree.cxx:543
 TGListTree.cxx:544
 TGListTree.cxx:545
 TGListTree.cxx:546
 TGListTree.cxx:547
 TGListTree.cxx:548
 TGListTree.cxx:549
 TGListTree.cxx:550
 TGListTree.cxx:551
 TGListTree.cxx:552
 TGListTree.cxx:553
 TGListTree.cxx:554
 TGListTree.cxx:555
 TGListTree.cxx:556
 TGListTree.cxx:557
 TGListTree.cxx:558
 TGListTree.cxx:559
 TGListTree.cxx:560
 TGListTree.cxx:561
 TGListTree.cxx:562
 TGListTree.cxx:563
 TGListTree.cxx:564
 TGListTree.cxx:565
 TGListTree.cxx:566
 TGListTree.cxx:567
 TGListTree.cxx:568
 TGListTree.cxx:569
 TGListTree.cxx:570
 TGListTree.cxx:571
 TGListTree.cxx:572
 TGListTree.cxx:573
 TGListTree.cxx:574
 TGListTree.cxx:575
 TGListTree.cxx:576
 TGListTree.cxx:577
 TGListTree.cxx:578
 TGListTree.cxx:579
 TGListTree.cxx:580
 TGListTree.cxx:581
 TGListTree.cxx:582
 TGListTree.cxx:583
 TGListTree.cxx:584
 TGListTree.cxx:585
 TGListTree.cxx:586
 TGListTree.cxx:587
 TGListTree.cxx:588
 TGListTree.cxx:589
 TGListTree.cxx:590
 TGListTree.cxx:591
 TGListTree.cxx:592
 TGListTree.cxx:593
 TGListTree.cxx:594
 TGListTree.cxx:595
 TGListTree.cxx:596
 TGListTree.cxx:597
 TGListTree.cxx:598
 TGListTree.cxx:599
 TGListTree.cxx:600
 TGListTree.cxx:601
 TGListTree.cxx:602
 TGListTree.cxx:603
 TGListTree.cxx:604
 TGListTree.cxx:605
 TGListTree.cxx:606
 TGListTree.cxx:607
 TGListTree.cxx:608
 TGListTree.cxx:609
 TGListTree.cxx:610
 TGListTree.cxx:611
 TGListTree.cxx:612
 TGListTree.cxx:613
 TGListTree.cxx:614
 TGListTree.cxx:615
 TGListTree.cxx:616
 TGListTree.cxx:617
 TGListTree.cxx:618
 TGListTree.cxx:619
 TGListTree.cxx:620
 TGListTree.cxx:621
 TGListTree.cxx:622
 TGListTree.cxx:623
 TGListTree.cxx:624
 TGListTree.cxx:625
 TGListTree.cxx:626
 TGListTree.cxx:627
 TGListTree.cxx:628
 TGListTree.cxx:629
 TGListTree.cxx:630
 TGListTree.cxx:631
 TGListTree.cxx:632
 TGListTree.cxx:633
 TGListTree.cxx:634
 TGListTree.cxx:635
 TGListTree.cxx:636
 TGListTree.cxx:637
 TGListTree.cxx:638
 TGListTree.cxx:639
 TGListTree.cxx:640
 TGListTree.cxx:641
 TGListTree.cxx:642
 TGListTree.cxx:643
 TGListTree.cxx:644
 TGListTree.cxx:645
 TGListTree.cxx:646
 TGListTree.cxx:647
 TGListTree.cxx:648
 TGListTree.cxx:649
 TGListTree.cxx:650
 TGListTree.cxx:651
 TGListTree.cxx:652
 TGListTree.cxx:653
 TGListTree.cxx:654
 TGListTree.cxx:655
 TGListTree.cxx:656
 TGListTree.cxx:657
 TGListTree.cxx:658
 TGListTree.cxx:659
 TGListTree.cxx:660
 TGListTree.cxx:661
 TGListTree.cxx:662
 TGListTree.cxx:663
 TGListTree.cxx:664
 TGListTree.cxx:665
 TGListTree.cxx:666
 TGListTree.cxx:667
 TGListTree.cxx:668
 TGListTree.cxx:669
 TGListTree.cxx:670
 TGListTree.cxx:671
 TGListTree.cxx:672
 TGListTree.cxx:673
 TGListTree.cxx:674
 TGListTree.cxx:675
 TGListTree.cxx:676
 TGListTree.cxx:677
 TGListTree.cxx:678
 TGListTree.cxx:679
 TGListTree.cxx:680
 TGListTree.cxx:681
 TGListTree.cxx:682
 TGListTree.cxx:683
 TGListTree.cxx:684
 TGListTree.cxx:685
 TGListTree.cxx:686
 TGListTree.cxx:687
 TGListTree.cxx:688
 TGListTree.cxx:689
 TGListTree.cxx:690
 TGListTree.cxx:691
 TGListTree.cxx:692
 TGListTree.cxx:693
 TGListTree.cxx:694
 TGListTree.cxx:695
 TGListTree.cxx:696
 TGListTree.cxx:697
 TGListTree.cxx:698
 TGListTree.cxx:699
 TGListTree.cxx:700
 TGListTree.cxx:701
 TGListTree.cxx:702
 TGListTree.cxx:703
 TGListTree.cxx:704
 TGListTree.cxx:705
 TGListTree.cxx:706
 TGListTree.cxx:707
 TGListTree.cxx:708
 TGListTree.cxx:709
 TGListTree.cxx:710
 TGListTree.cxx:711
 TGListTree.cxx:712
 TGListTree.cxx:713
 TGListTree.cxx:714
 TGListTree.cxx:715
 TGListTree.cxx:716
 TGListTree.cxx:717
 TGListTree.cxx:718
 TGListTree.cxx:719
 TGListTree.cxx:720
 TGListTree.cxx:721
 TGListTree.cxx:722
 TGListTree.cxx:723
 TGListTree.cxx:724
 TGListTree.cxx:725
 TGListTree.cxx:726
 TGListTree.cxx:727
 TGListTree.cxx:728
 TGListTree.cxx:729
 TGListTree.cxx:730
 TGListTree.cxx:731
 TGListTree.cxx:732
 TGListTree.cxx:733
 TGListTree.cxx:734
 TGListTree.cxx:735
 TGListTree.cxx:736
 TGListTree.cxx:737
 TGListTree.cxx:738
 TGListTree.cxx:739
 TGListTree.cxx:740
 TGListTree.cxx:741
 TGListTree.cxx:742
 TGListTree.cxx:743
 TGListTree.cxx:744
 TGListTree.cxx:745
 TGListTree.cxx:746
 TGListTree.cxx:747
 TGListTree.cxx:748
 TGListTree.cxx:749
 TGListTree.cxx:750
 TGListTree.cxx:751
 TGListTree.cxx:752
 TGListTree.cxx:753
 TGListTree.cxx:754
 TGListTree.cxx:755
 TGListTree.cxx:756
 TGListTree.cxx:757
 TGListTree.cxx:758
 TGListTree.cxx:759
 TGListTree.cxx:760
 TGListTree.cxx:761
 TGListTree.cxx:762
 TGListTree.cxx:763
 TGListTree.cxx:764
 TGListTree.cxx:765
 TGListTree.cxx:766
 TGListTree.cxx:767
 TGListTree.cxx:768
 TGListTree.cxx:769
 TGListTree.cxx:770
 TGListTree.cxx:771
 TGListTree.cxx:772
 TGListTree.cxx:773
 TGListTree.cxx:774
 TGListTree.cxx:775
 TGListTree.cxx:776
 TGListTree.cxx:777
 TGListTree.cxx:778
 TGListTree.cxx:779
 TGListTree.cxx:780
 TGListTree.cxx:781
 TGListTree.cxx:782
 TGListTree.cxx:783
 TGListTree.cxx:784
 TGListTree.cxx:785
 TGListTree.cxx:786
 TGListTree.cxx:787
 TGListTree.cxx:788
 TGListTree.cxx:789
 TGListTree.cxx:790
 TGListTree.cxx:791
 TGListTree.cxx:792
 TGListTree.cxx:793
 TGListTree.cxx:794
 TGListTree.cxx:795
 TGListTree.cxx:796
 TGListTree.cxx:797
 TGListTree.cxx:798
 TGListTree.cxx:799
 TGListTree.cxx:800
 TGListTree.cxx:801
 TGListTree.cxx:802
 TGListTree.cxx:803
 TGListTree.cxx:804
 TGListTree.cxx:805
 TGListTree.cxx:806
 TGListTree.cxx:807
 TGListTree.cxx:808
 TGListTree.cxx:809
 TGListTree.cxx:810
 TGListTree.cxx:811
 TGListTree.cxx:812
 TGListTree.cxx:813
 TGListTree.cxx:814
 TGListTree.cxx:815
 TGListTree.cxx:816
 TGListTree.cxx:817
 TGListTree.cxx:818
 TGListTree.cxx:819
 TGListTree.cxx:820
 TGListTree.cxx:821
 TGListTree.cxx:822
 TGListTree.cxx:823
 TGListTree.cxx:824
 TGListTree.cxx:825
 TGListTree.cxx:826
 TGListTree.cxx:827
 TGListTree.cxx:828
 TGListTree.cxx:829
 TGListTree.cxx:830
 TGListTree.cxx:831
 TGListTree.cxx:832
 TGListTree.cxx:833
 TGListTree.cxx:834
 TGListTree.cxx:835
 TGListTree.cxx:836
 TGListTree.cxx:837
 TGListTree.cxx:838
 TGListTree.cxx:839
 TGListTree.cxx:840
 TGListTree.cxx:841
 TGListTree.cxx:842
 TGListTree.cxx:843
 TGListTree.cxx:844
 TGListTree.cxx:845
 TGListTree.cxx:846
 TGListTree.cxx:847
 TGListTree.cxx:848
 TGListTree.cxx:849
 TGListTree.cxx:850
 TGListTree.cxx:851
 TGListTree.cxx:852
 TGListTree.cxx:853
 TGListTree.cxx:854
 TGListTree.cxx:855
 TGListTree.cxx:856
 TGListTree.cxx:857
 TGListTree.cxx:858
 TGListTree.cxx:859
 TGListTree.cxx:860
 TGListTree.cxx:861
 TGListTree.cxx:862
 TGListTree.cxx:863
 TGListTree.cxx:864
 TGListTree.cxx:865
 TGListTree.cxx:866
 TGListTree.cxx:867
 TGListTree.cxx:868
 TGListTree.cxx:869
 TGListTree.cxx:870
 TGListTree.cxx:871
 TGListTree.cxx:872
 TGListTree.cxx:873
 TGListTree.cxx:874
 TGListTree.cxx:875
 TGListTree.cxx:876
 TGListTree.cxx:877
 TGListTree.cxx:878
 TGListTree.cxx:879
 TGListTree.cxx:880
 TGListTree.cxx:881
 TGListTree.cxx:882
 TGListTree.cxx:883
 TGListTree.cxx:884
 TGListTree.cxx:885
 TGListTree.cxx:886
 TGListTree.cxx:887
 TGListTree.cxx:888
 TGListTree.cxx:889
 TGListTree.cxx:890
 TGListTree.cxx:891
 TGListTree.cxx:892
 TGListTree.cxx:893
 TGListTree.cxx:894
 TGListTree.cxx:895
 TGListTree.cxx:896
 TGListTree.cxx:897
 TGListTree.cxx:898
 TGListTree.cxx:899
 TGListTree.cxx:900
 TGListTree.cxx:901
 TGListTree.cxx:902
 TGListTree.cxx:903
 TGListTree.cxx:904
 TGListTree.cxx:905
 TGListTree.cxx:906
 TGListTree.cxx:907
 TGListTree.cxx:908
 TGListTree.cxx:909
 TGListTree.cxx:910
 TGListTree.cxx:911
 TGListTree.cxx:912
 TGListTree.cxx:913
 TGListTree.cxx:914
 TGListTree.cxx:915
 TGListTree.cxx:916
 TGListTree.cxx:917
 TGListTree.cxx:918
 TGListTree.cxx:919
 TGListTree.cxx:920
 TGListTree.cxx:921
 TGListTree.cxx:922
 TGListTree.cxx:923
 TGListTree.cxx:924
 TGListTree.cxx:925
 TGListTree.cxx:926
 TGListTree.cxx:927
 TGListTree.cxx:928
 TGListTree.cxx:929
 TGListTree.cxx:930
 TGListTree.cxx:931
 TGListTree.cxx:932
 TGListTree.cxx:933
 TGListTree.cxx:934
 TGListTree.cxx:935
 TGListTree.cxx:936
 TGListTree.cxx:937
 TGListTree.cxx:938
 TGListTree.cxx:939
 TGListTree.cxx:940
 TGListTree.cxx:941
 TGListTree.cxx:942
 TGListTree.cxx:943
 TGListTree.cxx:944
 TGListTree.cxx:945
 TGListTree.cxx:946
 TGListTree.cxx:947
 TGListTree.cxx:948
 TGListTree.cxx:949
 TGListTree.cxx:950
 TGListTree.cxx:951
 TGListTree.cxx:952
 TGListTree.cxx:953
 TGListTree.cxx:954
 TGListTree.cxx:955
 TGListTree.cxx:956
 TGListTree.cxx:957
 TGListTree.cxx:958
 TGListTree.cxx:959
 TGListTree.cxx:960
 TGListTree.cxx:961
 TGListTree.cxx:962
 TGListTree.cxx:963
 TGListTree.cxx:964
 TGListTree.cxx:965
 TGListTree.cxx:966
 TGListTree.cxx:967
 TGListTree.cxx:968
 TGListTree.cxx:969
 TGListTree.cxx:970
 TGListTree.cxx:971
 TGListTree.cxx:972
 TGListTree.cxx:973
 TGListTree.cxx:974
 TGListTree.cxx:975
 TGListTree.cxx:976
 TGListTree.cxx:977
 TGListTree.cxx:978
 TGListTree.cxx:979
 TGListTree.cxx:980
 TGListTree.cxx:981
 TGListTree.cxx:982
 TGListTree.cxx:983
 TGListTree.cxx:984
 TGListTree.cxx:985
 TGListTree.cxx:986
 TGListTree.cxx:987
 TGListTree.cxx:988
 TGListTree.cxx:989
 TGListTree.cxx:990
 TGListTree.cxx:991
 TGListTree.cxx:992
 TGListTree.cxx:993
 TGListTree.cxx:994
 TGListTree.cxx:995
 TGListTree.cxx:996
 TGListTree.cxx:997
 TGListTree.cxx:998
 TGListTree.cxx:999
 TGListTree.cxx:1000
 TGListTree.cxx:1001
 TGListTree.cxx:1002
 TGListTree.cxx:1003
 TGListTree.cxx:1004
 TGListTree.cxx:1005
 TGListTree.cxx:1006
 TGListTree.cxx:1007
 TGListTree.cxx:1008
 TGListTree.cxx:1009
 TGListTree.cxx:1010
 TGListTree.cxx:1011
 TGListTree.cxx:1012
 TGListTree.cxx:1013
 TGListTree.cxx:1014
 TGListTree.cxx:1015
 TGListTree.cxx:1016
 TGListTree.cxx:1017
 TGListTree.cxx:1018
 TGListTree.cxx:1019
 TGListTree.cxx:1020
 TGListTree.cxx:1021
 TGListTree.cxx:1022
 TGListTree.cxx:1023
 TGListTree.cxx:1024
 TGListTree.cxx:1025
 TGListTree.cxx:1026
 TGListTree.cxx:1027
 TGListTree.cxx:1028
 TGListTree.cxx:1029
 TGListTree.cxx:1030
 TGListTree.cxx:1031
 TGListTree.cxx:1032
 TGListTree.cxx:1033
 TGListTree.cxx:1034
 TGListTree.cxx:1035
 TGListTree.cxx:1036
 TGListTree.cxx:1037
 TGListTree.cxx:1038
 TGListTree.cxx:1039
 TGListTree.cxx:1040
 TGListTree.cxx:1041
 TGListTree.cxx:1042
 TGListTree.cxx:1043
 TGListTree.cxx:1044
 TGListTree.cxx:1045
 TGListTree.cxx:1046
 TGListTree.cxx:1047
 TGListTree.cxx:1048
 TGListTree.cxx:1049
 TGListTree.cxx:1050
 TGListTree.cxx:1051
 TGListTree.cxx:1052
 TGListTree.cxx:1053
 TGListTree.cxx:1054
 TGListTree.cxx:1055
 TGListTree.cxx:1056
 TGListTree.cxx:1057
 TGListTree.cxx:1058
 TGListTree.cxx:1059
 TGListTree.cxx:1060
 TGListTree.cxx:1061
 TGListTree.cxx:1062
 TGListTree.cxx:1063
 TGListTree.cxx:1064
 TGListTree.cxx:1065
 TGListTree.cxx:1066
 TGListTree.cxx:1067
 TGListTree.cxx:1068
 TGListTree.cxx:1069
 TGListTree.cxx:1070
 TGListTree.cxx:1071
 TGListTree.cxx:1072
 TGListTree.cxx:1073
 TGListTree.cxx:1074
 TGListTree.cxx:1075
 TGListTree.cxx:1076
 TGListTree.cxx:1077
 TGListTree.cxx:1078
 TGListTree.cxx:1079
 TGListTree.cxx:1080
 TGListTree.cxx:1081
 TGListTree.cxx:1082
 TGListTree.cxx:1083
 TGListTree.cxx:1084
 TGListTree.cxx:1085
 TGListTree.cxx:1086
 TGListTree.cxx:1087
 TGListTree.cxx:1088
 TGListTree.cxx:1089
 TGListTree.cxx:1090
 TGListTree.cxx:1091
 TGListTree.cxx:1092
 TGListTree.cxx:1093
 TGListTree.cxx:1094
 TGListTree.cxx:1095
 TGListTree.cxx:1096
 TGListTree.cxx:1097
 TGListTree.cxx:1098
 TGListTree.cxx:1099
 TGListTree.cxx:1100
 TGListTree.cxx:1101
 TGListTree.cxx:1102
 TGListTree.cxx:1103
 TGListTree.cxx:1104
 TGListTree.cxx:1105
 TGListTree.cxx:1106
 TGListTree.cxx:1107
 TGListTree.cxx:1108
 TGListTree.cxx:1109
 TGListTree.cxx:1110
 TGListTree.cxx:1111
 TGListTree.cxx:1112
 TGListTree.cxx:1113
 TGListTree.cxx:1114
 TGListTree.cxx:1115
 TGListTree.cxx:1116
 TGListTree.cxx:1117
 TGListTree.cxx:1118
 TGListTree.cxx:1119
 TGListTree.cxx:1120
 TGListTree.cxx:1121
 TGListTree.cxx:1122
 TGListTree.cxx:1123
 TGListTree.cxx:1124
 TGListTree.cxx:1125
 TGListTree.cxx:1126
 TGListTree.cxx:1127
 TGListTree.cxx:1128
 TGListTree.cxx:1129
 TGListTree.cxx:1130
 TGListTree.cxx:1131
 TGListTree.cxx:1132
 TGListTree.cxx:1133
 TGListTree.cxx:1134
 TGListTree.cxx:1135
 TGListTree.cxx:1136
 TGListTree.cxx:1137
 TGListTree.cxx:1138
 TGListTree.cxx:1139
 TGListTree.cxx:1140
 TGListTree.cxx:1141
 TGListTree.cxx:1142
 TGListTree.cxx:1143
 TGListTree.cxx:1144
 TGListTree.cxx:1145
 TGListTree.cxx:1146
 TGListTree.cxx:1147
 TGListTree.cxx:1148
 TGListTree.cxx:1149
 TGListTree.cxx:1150
 TGListTree.cxx:1151
 TGListTree.cxx:1152
 TGListTree.cxx:1153
 TGListTree.cxx:1154
 TGListTree.cxx:1155
 TGListTree.cxx:1156
 TGListTree.cxx:1157
 TGListTree.cxx:1158
 TGListTree.cxx:1159
 TGListTree.cxx:1160
 TGListTree.cxx:1161
 TGListTree.cxx:1162
 TGListTree.cxx:1163
 TGListTree.cxx:1164
 TGListTree.cxx:1165
 TGListTree.cxx:1166
 TGListTree.cxx:1167
 TGListTree.cxx:1168
 TGListTree.cxx:1169
 TGListTree.cxx:1170
 TGListTree.cxx:1171
 TGListTree.cxx:1172
 TGListTree.cxx:1173
 TGListTree.cxx:1174
 TGListTree.cxx:1175
 TGListTree.cxx:1176
 TGListTree.cxx:1177
 TGListTree.cxx:1178
 TGListTree.cxx:1179
 TGListTree.cxx:1180
 TGListTree.cxx:1181
 TGListTree.cxx:1182
 TGListTree.cxx:1183
 TGListTree.cxx:1184
 TGListTree.cxx:1185
 TGListTree.cxx:1186
 TGListTree.cxx:1187
 TGListTree.cxx:1188
 TGListTree.cxx:1189
 TGListTree.cxx:1190
 TGListTree.cxx:1191
 TGListTree.cxx:1192
 TGListTree.cxx:1193
 TGListTree.cxx:1194
 TGListTree.cxx:1195
 TGListTree.cxx:1196
 TGListTree.cxx:1197
 TGListTree.cxx:1198
 TGListTree.cxx:1199
 TGListTree.cxx:1200
 TGListTree.cxx:1201
 TGListTree.cxx:1202
 TGListTree.cxx:1203
 TGListTree.cxx:1204
 TGListTree.cxx:1205
 TGListTree.cxx:1206
 TGListTree.cxx:1207
 TGListTree.cxx:1208
 TGListTree.cxx:1209
 TGListTree.cxx:1210
 TGListTree.cxx:1211
 TGListTree.cxx:1212
 TGListTree.cxx:1213
 TGListTree.cxx:1214
 TGListTree.cxx:1215
 TGListTree.cxx:1216
 TGListTree.cxx:1217
 TGListTree.cxx:1218
 TGListTree.cxx:1219
 TGListTree.cxx:1220
 TGListTree.cxx:1221
 TGListTree.cxx:1222
 TGListTree.cxx:1223
 TGListTree.cxx:1224
 TGListTree.cxx:1225
 TGListTree.cxx:1226
 TGListTree.cxx:1227
 TGListTree.cxx:1228
 TGListTree.cxx:1229
 TGListTree.cxx:1230
 TGListTree.cxx:1231
 TGListTree.cxx:1232
 TGListTree.cxx:1233
 TGListTree.cxx:1234
 TGListTree.cxx:1235
 TGListTree.cxx:1236
 TGListTree.cxx:1237
 TGListTree.cxx:1238
 TGListTree.cxx:1239
 TGListTree.cxx:1240
 TGListTree.cxx:1241
 TGListTree.cxx:1242
 TGListTree.cxx:1243
 TGListTree.cxx:1244
 TGListTree.cxx:1245
 TGListTree.cxx:1246
 TGListTree.cxx:1247
 TGListTree.cxx:1248
 TGListTree.cxx:1249
 TGListTree.cxx:1250
 TGListTree.cxx:1251
 TGListTree.cxx:1252
 TGListTree.cxx:1253
 TGListTree.cxx:1254
 TGListTree.cxx:1255
 TGListTree.cxx:1256
 TGListTree.cxx:1257
 TGListTree.cxx:1258
 TGListTree.cxx:1259
 TGListTree.cxx:1260
 TGListTree.cxx:1261
 TGListTree.cxx:1262
 TGListTree.cxx:1263
 TGListTree.cxx:1264
 TGListTree.cxx:1265
 TGListTree.cxx:1266
 TGListTree.cxx:1267
 TGListTree.cxx:1268
 TGListTree.cxx:1269
 TGListTree.cxx:1270
 TGListTree.cxx:1271
 TGListTree.cxx:1272
 TGListTree.cxx:1273
 TGListTree.cxx:1274
 TGListTree.cxx:1275
 TGListTree.cxx:1276
 TGListTree.cxx:1277
 TGListTree.cxx:1278
 TGListTree.cxx:1279
 TGListTree.cxx:1280
 TGListTree.cxx:1281
 TGListTree.cxx:1282
 TGListTree.cxx:1283
 TGListTree.cxx:1284
 TGListTree.cxx:1285
 TGListTree.cxx:1286
 TGListTree.cxx:1287
 TGListTree.cxx:1288
 TGListTree.cxx:1289
 TGListTree.cxx:1290
 TGListTree.cxx:1291
 TGListTree.cxx:1292
 TGListTree.cxx:1293
 TGListTree.cxx:1294
 TGListTree.cxx:1295
 TGListTree.cxx:1296
 TGListTree.cxx:1297
 TGListTree.cxx:1298
 TGListTree.cxx:1299
 TGListTree.cxx:1300
 TGListTree.cxx:1301
 TGListTree.cxx:1302
 TGListTree.cxx:1303
 TGListTree.cxx:1304
 TGListTree.cxx:1305
 TGListTree.cxx:1306
 TGListTree.cxx:1307
 TGListTree.cxx:1308
 TGListTree.cxx:1309
 TGListTree.cxx:1310
 TGListTree.cxx:1311
 TGListTree.cxx:1312
 TGListTree.cxx:1313
 TGListTree.cxx:1314
 TGListTree.cxx:1315
 TGListTree.cxx:1316
 TGListTree.cxx:1317
 TGListTree.cxx:1318
 TGListTree.cxx:1319
 TGListTree.cxx:1320
 TGListTree.cxx:1321
 TGListTree.cxx:1322
 TGListTree.cxx:1323
 TGListTree.cxx:1324
 TGListTree.cxx:1325
 TGListTree.cxx:1326
 TGListTree.cxx:1327
 TGListTree.cxx:1328
 TGListTree.cxx:1329
 TGListTree.cxx:1330
 TGListTree.cxx:1331
 TGListTree.cxx:1332
 TGListTree.cxx:1333
 TGListTree.cxx:1334
 TGListTree.cxx:1335
 TGListTree.cxx:1336
 TGListTree.cxx:1337
 TGListTree.cxx:1338
 TGListTree.cxx:1339
 TGListTree.cxx:1340
 TGListTree.cxx:1341
 TGListTree.cxx:1342
 TGListTree.cxx:1343
 TGListTree.cxx:1344
 TGListTree.cxx:1345
 TGListTree.cxx:1346
 TGListTree.cxx:1347
 TGListTree.cxx:1348
 TGListTree.cxx:1349
 TGListTree.cxx:1350
 TGListTree.cxx:1351
 TGListTree.cxx:1352
 TGListTree.cxx:1353
 TGListTree.cxx:1354
 TGListTree.cxx:1355
 TGListTree.cxx:1356
 TGListTree.cxx:1357
 TGListTree.cxx:1358
 TGListTree.cxx:1359
 TGListTree.cxx:1360
 TGListTree.cxx:1361
 TGListTree.cxx:1362
 TGListTree.cxx:1363
 TGListTree.cxx:1364
 TGListTree.cxx:1365
 TGListTree.cxx:1366
 TGListTree.cxx:1367
 TGListTree.cxx:1368
 TGListTree.cxx:1369
 TGListTree.cxx:1370
 TGListTree.cxx:1371
 TGListTree.cxx:1372
 TGListTree.cxx:1373
 TGListTree.cxx:1374
 TGListTree.cxx:1375
 TGListTree.cxx:1376
 TGListTree.cxx:1377
 TGListTree.cxx:1378
 TGListTree.cxx:1379
 TGListTree.cxx:1380
 TGListTree.cxx:1381
 TGListTree.cxx:1382
 TGListTree.cxx:1383
 TGListTree.cxx:1384
 TGListTree.cxx:1385
 TGListTree.cxx:1386
 TGListTree.cxx:1387
 TGListTree.cxx:1388
 TGListTree.cxx:1389
 TGListTree.cxx:1390
 TGListTree.cxx:1391
 TGListTree.cxx:1392
 TGListTree.cxx:1393
 TGListTree.cxx:1394
 TGListTree.cxx:1395
 TGListTree.cxx:1396
 TGListTree.cxx:1397
 TGListTree.cxx:1398
 TGListTree.cxx:1399
 TGListTree.cxx:1400
 TGListTree.cxx:1401
 TGListTree.cxx:1402
 TGListTree.cxx:1403
 TGListTree.cxx:1404
 TGListTree.cxx:1405
 TGListTree.cxx:1406
 TGListTree.cxx:1407
 TGListTree.cxx:1408
 TGListTree.cxx:1409
 TGListTree.cxx:1410
 TGListTree.cxx:1411
 TGListTree.cxx:1412
 TGListTree.cxx:1413
 TGListTree.cxx:1414
 TGListTree.cxx:1415
 TGListTree.cxx:1416
 TGListTree.cxx:1417
 TGListTree.cxx:1418
 TGListTree.cxx:1419
 TGListTree.cxx:1420
 TGListTree.cxx:1421
 TGListTree.cxx:1422
 TGListTree.cxx:1423
 TGListTree.cxx:1424
 TGListTree.cxx:1425
 TGListTree.cxx:1426
 TGListTree.cxx:1427
 TGListTree.cxx:1428
 TGListTree.cxx:1429
 TGListTree.cxx:1430
 TGListTree.cxx:1431
 TGListTree.cxx:1432
 TGListTree.cxx:1433
 TGListTree.cxx:1434
 TGListTree.cxx:1435
 TGListTree.cxx:1436
 TGListTree.cxx:1437
 TGListTree.cxx:1438
 TGListTree.cxx:1439
 TGListTree.cxx:1440
 TGListTree.cxx:1441
 TGListTree.cxx:1442
 TGListTree.cxx:1443
 TGListTree.cxx:1444
 TGListTree.cxx:1445
 TGListTree.cxx:1446
 TGListTree.cxx:1447
 TGListTree.cxx:1448
 TGListTree.cxx:1449
 TGListTree.cxx:1450
 TGListTree.cxx:1451
 TGListTree.cxx:1452
 TGListTree.cxx:1453
 TGListTree.cxx:1454
 TGListTree.cxx:1455
 TGListTree.cxx:1456
 TGListTree.cxx:1457
 TGListTree.cxx:1458
 TGListTree.cxx:1459
 TGListTree.cxx:1460
 TGListTree.cxx:1461
 TGListTree.cxx:1462
 TGListTree.cxx:1463
 TGListTree.cxx:1464
 TGListTree.cxx:1465
 TGListTree.cxx:1466
 TGListTree.cxx:1467
 TGListTree.cxx:1468
 TGListTree.cxx:1469
 TGListTree.cxx:1470
 TGListTree.cxx:1471
 TGListTree.cxx:1472
 TGListTree.cxx:1473
 TGListTree.cxx:1474
 TGListTree.cxx:1475
 TGListTree.cxx:1476
 TGListTree.cxx:1477
 TGListTree.cxx:1478
 TGListTree.cxx:1479
 TGListTree.cxx:1480
 TGListTree.cxx:1481
 TGListTree.cxx:1482
 TGListTree.cxx:1483
 TGListTree.cxx:1484
 TGListTree.cxx:1485
 TGListTree.cxx:1486
 TGListTree.cxx:1487
 TGListTree.cxx:1488
 TGListTree.cxx:1489
 TGListTree.cxx:1490
 TGListTree.cxx:1491
 TGListTree.cxx:1492
 TGListTree.cxx:1493
 TGListTree.cxx:1494
 TGListTree.cxx:1495
 TGListTree.cxx:1496
 TGListTree.cxx:1497
 TGListTree.cxx:1498
 TGListTree.cxx:1499
 TGListTree.cxx:1500
 TGListTree.cxx:1501
 TGListTree.cxx:1502
 TGListTree.cxx:1503
 TGListTree.cxx:1504
 TGListTree.cxx:1505
 TGListTree.cxx:1506
 TGListTree.cxx:1507
 TGListTree.cxx:1508
 TGListTree.cxx:1509
 TGListTree.cxx:1510
 TGListTree.cxx:1511
 TGListTree.cxx:1512
 TGListTree.cxx:1513
 TGListTree.cxx:1514
 TGListTree.cxx:1515
 TGListTree.cxx:1516
 TGListTree.cxx:1517
 TGListTree.cxx:1518
 TGListTree.cxx:1519
 TGListTree.cxx:1520
 TGListTree.cxx:1521
 TGListTree.cxx:1522
 TGListTree.cxx:1523
 TGListTree.cxx:1524
 TGListTree.cxx:1525
 TGListTree.cxx:1526
 TGListTree.cxx:1527
 TGListTree.cxx:1528
 TGListTree.cxx:1529
 TGListTree.cxx:1530
 TGListTree.cxx:1531
 TGListTree.cxx:1532
 TGListTree.cxx:1533
 TGListTree.cxx:1534
 TGListTree.cxx:1535
 TGListTree.cxx:1536
 TGListTree.cxx:1537
 TGListTree.cxx:1538
 TGListTree.cxx:1539
 TGListTree.cxx:1540
 TGListTree.cxx:1541
 TGListTree.cxx:1542
 TGListTree.cxx:1543
 TGListTree.cxx:1544
 TGListTree.cxx:1545
 TGListTree.cxx:1546
 TGListTree.cxx:1547
 TGListTree.cxx:1548
 TGListTree.cxx:1549
 TGListTree.cxx:1550
 TGListTree.cxx:1551
 TGListTree.cxx:1552
 TGListTree.cxx:1553
 TGListTree.cxx:1554
 TGListTree.cxx:1555
 TGListTree.cxx:1556
 TGListTree.cxx:1557
 TGListTree.cxx:1558
 TGListTree.cxx:1559
 TGListTree.cxx:1560
 TGListTree.cxx:1561
 TGListTree.cxx:1562
 TGListTree.cxx:1563
 TGListTree.cxx:1564
 TGListTree.cxx:1565
 TGListTree.cxx:1566
 TGListTree.cxx:1567
 TGListTree.cxx:1568
 TGListTree.cxx:1569
 TGListTree.cxx:1570
 TGListTree.cxx:1571
 TGListTree.cxx:1572
 TGListTree.cxx:1573
 TGListTree.cxx:1574
 TGListTree.cxx:1575
 TGListTree.cxx:1576
 TGListTree.cxx:1577
 TGListTree.cxx:1578
 TGListTree.cxx:1579
 TGListTree.cxx:1580
 TGListTree.cxx:1581
 TGListTree.cxx:1582
 TGListTree.cxx:1583
 TGListTree.cxx:1584
 TGListTree.cxx:1585
 TGListTree.cxx:1586
 TGListTree.cxx:1587
 TGListTree.cxx:1588
 TGListTree.cxx:1589
 TGListTree.cxx:1590
 TGListTree.cxx:1591
 TGListTree.cxx:1592
 TGListTree.cxx:1593
 TGListTree.cxx:1594
 TGListTree.cxx:1595
 TGListTree.cxx:1596
 TGListTree.cxx:1597
 TGListTree.cxx:1598
 TGListTree.cxx:1599
 TGListTree.cxx:1600
 TGListTree.cxx:1601
 TGListTree.cxx:1602
 TGListTree.cxx:1603
 TGListTree.cxx:1604
 TGListTree.cxx:1605
 TGListTree.cxx:1606
 TGListTree.cxx:1607
 TGListTree.cxx:1608
 TGListTree.cxx:1609
 TGListTree.cxx:1610
 TGListTree.cxx:1611
 TGListTree.cxx:1612
 TGListTree.cxx:1613
 TGListTree.cxx:1614
 TGListTree.cxx:1615
 TGListTree.cxx:1616
 TGListTree.cxx:1617
 TGListTree.cxx:1618
 TGListTree.cxx:1619
 TGListTree.cxx:1620
 TGListTree.cxx:1621
 TGListTree.cxx:1622
 TGListTree.cxx:1623
 TGListTree.cxx:1624
 TGListTree.cxx:1625
 TGListTree.cxx:1626
 TGListTree.cxx:1627
 TGListTree.cxx:1628
 TGListTree.cxx:1629
 TGListTree.cxx:1630
 TGListTree.cxx:1631
 TGListTree.cxx:1632
 TGListTree.cxx:1633
 TGListTree.cxx:1634
 TGListTree.cxx:1635
 TGListTree.cxx:1636
 TGListTree.cxx:1637
 TGListTree.cxx:1638
 TGListTree.cxx:1639
 TGListTree.cxx:1640
 TGListTree.cxx:1641
 TGListTree.cxx:1642
 TGListTree.cxx:1643
 TGListTree.cxx:1644
 TGListTree.cxx:1645
 TGListTree.cxx:1646
 TGListTree.cxx:1647
 TGListTree.cxx:1648
 TGListTree.cxx:1649
 TGListTree.cxx:1650
 TGListTree.cxx:1651
 TGListTree.cxx:1652
 TGListTree.cxx:1653
 TGListTree.cxx:1654
 TGListTree.cxx:1655
 TGListTree.cxx:1656
 TGListTree.cxx:1657
 TGListTree.cxx:1658
 TGListTree.cxx:1659
 TGListTree.cxx:1660
 TGListTree.cxx:1661
 TGListTree.cxx:1662
 TGListTree.cxx:1663
 TGListTree.cxx:1664
 TGListTree.cxx:1665
 TGListTree.cxx:1666
 TGListTree.cxx:1667
 TGListTree.cxx:1668
 TGListTree.cxx:1669
 TGListTree.cxx:1670
 TGListTree.cxx:1671
 TGListTree.cxx:1672
 TGListTree.cxx:1673
 TGListTree.cxx:1674
 TGListTree.cxx:1675
 TGListTree.cxx:1676
 TGListTree.cxx:1677
 TGListTree.cxx:1678
 TGListTree.cxx:1679
 TGListTree.cxx:1680
 TGListTree.cxx:1681
 TGListTree.cxx:1682
 TGListTree.cxx:1683
 TGListTree.cxx:1684
 TGListTree.cxx:1685
 TGListTree.cxx:1686
 TGListTree.cxx:1687
 TGListTree.cxx:1688
 TGListTree.cxx:1689
 TGListTree.cxx:1690
 TGListTree.cxx:1691
 TGListTree.cxx:1692
 TGListTree.cxx:1693
 TGListTree.cxx:1694
 TGListTree.cxx:1695
 TGListTree.cxx:1696
 TGListTree.cxx:1697
 TGListTree.cxx:1698
 TGListTree.cxx:1699
 TGListTree.cxx:1700
 TGListTree.cxx:1701
 TGListTree.cxx:1702
 TGListTree.cxx:1703
 TGListTree.cxx:1704
 TGListTree.cxx:1705
 TGListTree.cxx:1706
 TGListTree.cxx:1707
 TGListTree.cxx:1708
 TGListTree.cxx:1709
 TGListTree.cxx:1710
 TGListTree.cxx:1711
 TGListTree.cxx:1712
 TGListTree.cxx:1713
 TGListTree.cxx:1714
 TGListTree.cxx:1715
 TGListTree.cxx:1716
 TGListTree.cxx:1717
 TGListTree.cxx:1718
 TGListTree.cxx:1719
 TGListTree.cxx:1720
 TGListTree.cxx:1721
 TGListTree.cxx:1722
 TGListTree.cxx:1723
 TGListTree.cxx:1724
 TGListTree.cxx:1725
 TGListTree.cxx:1726
 TGListTree.cxx:1727
 TGListTree.cxx:1728
 TGListTree.cxx:1729
 TGListTree.cxx:1730
 TGListTree.cxx:1731
 TGListTree.cxx:1732
 TGListTree.cxx:1733
 TGListTree.cxx:1734
 TGListTree.cxx:1735
 TGListTree.cxx:1736
 TGListTree.cxx:1737
 TGListTree.cxx:1738
 TGListTree.cxx:1739
 TGListTree.cxx:1740
 TGListTree.cxx:1741
 TGListTree.cxx:1742
 TGListTree.cxx:1743
 TGListTree.cxx:1744
 TGListTree.cxx:1745
 TGListTree.cxx:1746
 TGListTree.cxx:1747
 TGListTree.cxx:1748
 TGListTree.cxx:1749
 TGListTree.cxx:1750
 TGListTree.cxx:1751
 TGListTree.cxx:1752
 TGListTree.cxx:1753
 TGListTree.cxx:1754
 TGListTree.cxx:1755
 TGListTree.cxx:1756
 TGListTree.cxx:1757
 TGListTree.cxx:1758
 TGListTree.cxx:1759
 TGListTree.cxx:1760
 TGListTree.cxx:1761
 TGListTree.cxx:1762
 TGListTree.cxx:1763
 TGListTree.cxx:1764
 TGListTree.cxx:1765
 TGListTree.cxx:1766
 TGListTree.cxx:1767
 TGListTree.cxx:1768
 TGListTree.cxx:1769
 TGListTree.cxx:1770
 TGListTree.cxx:1771
 TGListTree.cxx:1772
 TGListTree.cxx:1773
 TGListTree.cxx:1774
 TGListTree.cxx:1775
 TGListTree.cxx:1776
 TGListTree.cxx:1777
 TGListTree.cxx:1778
 TGListTree.cxx:1779
 TGListTree.cxx:1780
 TGListTree.cxx:1781
 TGListTree.cxx:1782
 TGListTree.cxx:1783
 TGListTree.cxx:1784
 TGListTree.cxx:1785
 TGListTree.cxx:1786
 TGListTree.cxx:1787
 TGListTree.cxx:1788
 TGListTree.cxx:1789
 TGListTree.cxx:1790
 TGListTree.cxx:1791
 TGListTree.cxx:1792
 TGListTree.cxx:1793
 TGListTree.cxx:1794
 TGListTree.cxx:1795
 TGListTree.cxx:1796
 TGListTree.cxx:1797
 TGListTree.cxx:1798
 TGListTree.cxx:1799
 TGListTree.cxx:1800
 TGListTree.cxx:1801
 TGListTree.cxx:1802
 TGListTree.cxx:1803
 TGListTree.cxx:1804
 TGListTree.cxx:1805
 TGListTree.cxx:1806
 TGListTree.cxx:1807
 TGListTree.cxx:1808
 TGListTree.cxx:1809
 TGListTree.cxx:1810
 TGListTree.cxx:1811
 TGListTree.cxx:1812
 TGListTree.cxx:1813
 TGListTree.cxx:1814
 TGListTree.cxx:1815
 TGListTree.cxx:1816
 TGListTree.cxx:1817
 TGListTree.cxx:1818
 TGListTree.cxx:1819
 TGListTree.cxx:1820
 TGListTree.cxx:1821
 TGListTree.cxx:1822
 TGListTree.cxx:1823
 TGListTree.cxx:1824
 TGListTree.cxx:1825
 TGListTree.cxx:1826
 TGListTree.cxx:1827
 TGListTree.cxx:1828
 TGListTree.cxx:1829
 TGListTree.cxx:1830
 TGListTree.cxx:1831
 TGListTree.cxx:1832
 TGListTree.cxx:1833
 TGListTree.cxx:1834
 TGListTree.cxx:1835
 TGListTree.cxx:1836
 TGListTree.cxx:1837
 TGListTree.cxx:1838
 TGListTree.cxx:1839
 TGListTree.cxx:1840
 TGListTree.cxx:1841
 TGListTree.cxx:1842
 TGListTree.cxx:1843
 TGListTree.cxx:1844
 TGListTree.cxx:1845
 TGListTree.cxx:1846
 TGListTree.cxx:1847
 TGListTree.cxx:1848
 TGListTree.cxx:1849
 TGListTree.cxx:1850
 TGListTree.cxx:1851
 TGListTree.cxx:1852
 TGListTree.cxx:1853
 TGListTree.cxx:1854
 TGListTree.cxx:1855
 TGListTree.cxx:1856
 TGListTree.cxx:1857
 TGListTree.cxx:1858
 TGListTree.cxx:1859
 TGListTree.cxx:1860
 TGListTree.cxx:1861
 TGListTree.cxx:1862
 TGListTree.cxx:1863
 TGListTree.cxx:1864
 TGListTree.cxx:1865
 TGListTree.cxx:1866
 TGListTree.cxx:1867
 TGListTree.cxx:1868
 TGListTree.cxx:1869
 TGListTree.cxx:1870
 TGListTree.cxx:1871
 TGListTree.cxx:1872
 TGListTree.cxx:1873
 TGListTree.cxx:1874
 TGListTree.cxx:1875
 TGListTree.cxx:1876
 TGListTree.cxx:1877
 TGListTree.cxx:1878
 TGListTree.cxx:1879
 TGListTree.cxx:1880
 TGListTree.cxx:1881
 TGListTree.cxx:1882
 TGListTree.cxx:1883
 TGListTree.cxx:1884
 TGListTree.cxx:1885
 TGListTree.cxx:1886
 TGListTree.cxx:1887
 TGListTree.cxx:1888
 TGListTree.cxx:1889
 TGListTree.cxx:1890
 TGListTree.cxx:1891
 TGListTree.cxx:1892
 TGListTree.cxx:1893
 TGListTree.cxx:1894
 TGListTree.cxx:1895
 TGListTree.cxx:1896
 TGListTree.cxx:1897
 TGListTree.cxx:1898
 TGListTree.cxx:1899
 TGListTree.cxx:1900
 TGListTree.cxx:1901
 TGListTree.cxx:1902
 TGListTree.cxx:1903
 TGListTree.cxx:1904
 TGListTree.cxx:1905
 TGListTree.cxx:1906
 TGListTree.cxx:1907
 TGListTree.cxx:1908
 TGListTree.cxx:1909
 TGListTree.cxx:1910
 TGListTree.cxx:1911
 TGListTree.cxx:1912
 TGListTree.cxx:1913
 TGListTree.cxx:1914
 TGListTree.cxx:1915
 TGListTree.cxx:1916
 TGListTree.cxx:1917
 TGListTree.cxx:1918
 TGListTree.cxx:1919
 TGListTree.cxx:1920
 TGListTree.cxx:1921
 TGListTree.cxx:1922
 TGListTree.cxx:1923
 TGListTree.cxx:1924
 TGListTree.cxx:1925
 TGListTree.cxx:1926
 TGListTree.cxx:1927
 TGListTree.cxx:1928
 TGListTree.cxx:1929
 TGListTree.cxx:1930
 TGListTree.cxx:1931
 TGListTree.cxx:1932
 TGListTree.cxx:1933
 TGListTree.cxx:1934
 TGListTree.cxx:1935
 TGListTree.cxx:1936
 TGListTree.cxx:1937
 TGListTree.cxx:1938
 TGListTree.cxx:1939
 TGListTree.cxx:1940
 TGListTree.cxx:1941
 TGListTree.cxx:1942
 TGListTree.cxx:1943
 TGListTree.cxx:1944
 TGListTree.cxx:1945
 TGListTree.cxx:1946
 TGListTree.cxx:1947
 TGListTree.cxx:1948
 TGListTree.cxx:1949
 TGListTree.cxx:1950
 TGListTree.cxx:1951
 TGListTree.cxx:1952
 TGListTree.cxx:1953
 TGListTree.cxx:1954
 TGListTree.cxx:1955
 TGListTree.cxx:1956
 TGListTree.cxx:1957
 TGListTree.cxx:1958
 TGListTree.cxx:1959
 TGListTree.cxx:1960
 TGListTree.cxx:1961
 TGListTree.cxx:1962
 TGListTree.cxx:1963
 TGListTree.cxx:1964
 TGListTree.cxx:1965
 TGListTree.cxx:1966
 TGListTree.cxx:1967
 TGListTree.cxx:1968
 TGListTree.cxx:1969
 TGListTree.cxx:1970
 TGListTree.cxx:1971
 TGListTree.cxx:1972
 TGListTree.cxx:1973
 TGListTree.cxx:1974
 TGListTree.cxx:1975
 TGListTree.cxx:1976
 TGListTree.cxx:1977
 TGListTree.cxx:1978
 TGListTree.cxx:1979
 TGListTree.cxx:1980
 TGListTree.cxx:1981
 TGListTree.cxx:1982
 TGListTree.cxx:1983
 TGListTree.cxx:1984
 TGListTree.cxx:1985
 TGListTree.cxx:1986
 TGListTree.cxx:1987
 TGListTree.cxx:1988
 TGListTree.cxx:1989
 TGListTree.cxx:1990
 TGListTree.cxx:1991
 TGListTree.cxx:1992
 TGListTree.cxx:1993
 TGListTree.cxx:1994
 TGListTree.cxx:1995
 TGListTree.cxx:1996
 TGListTree.cxx:1997
 TGListTree.cxx:1998
 TGListTree.cxx:1999
 TGListTree.cxx:2000
 TGListTree.cxx:2001
 TGListTree.cxx:2002
 TGListTree.cxx:2003
 TGListTree.cxx:2004
 TGListTree.cxx:2005
 TGListTree.cxx:2006
 TGListTree.cxx:2007
 TGListTree.cxx:2008
 TGListTree.cxx:2009
 TGListTree.cxx:2010
 TGListTree.cxx:2011
 TGListTree.cxx:2012
 TGListTree.cxx:2013
 TGListTree.cxx:2014
 TGListTree.cxx:2015
 TGListTree.cxx:2016
 TGListTree.cxx:2017
 TGListTree.cxx:2018
 TGListTree.cxx:2019
 TGListTree.cxx:2020
 TGListTree.cxx:2021
 TGListTree.cxx:2022
 TGListTree.cxx:2023
 TGListTree.cxx:2024
 TGListTree.cxx:2025
 TGListTree.cxx:2026
 TGListTree.cxx:2027
 TGListTree.cxx:2028
 TGListTree.cxx:2029
 TGListTree.cxx:2030
 TGListTree.cxx:2031
 TGListTree.cxx:2032
 TGListTree.cxx:2033
 TGListTree.cxx:2034
 TGListTree.cxx:2035
 TGListTree.cxx:2036
 TGListTree.cxx:2037
 TGListTree.cxx:2038
 TGListTree.cxx:2039
 TGListTree.cxx:2040
 TGListTree.cxx:2041
 TGListTree.cxx:2042
 TGListTree.cxx:2043
 TGListTree.cxx:2044
 TGListTree.cxx:2045
 TGListTree.cxx:2046
 TGListTree.cxx:2047
 TGListTree.cxx:2048
 TGListTree.cxx:2049
 TGListTree.cxx:2050
 TGListTree.cxx:2051
 TGListTree.cxx:2052
 TGListTree.cxx:2053
 TGListTree.cxx:2054
 TGListTree.cxx:2055
 TGListTree.cxx:2056
 TGListTree.cxx:2057
 TGListTree.cxx:2058
 TGListTree.cxx:2059
 TGListTree.cxx:2060
 TGListTree.cxx:2061
 TGListTree.cxx:2062
 TGListTree.cxx:2063
 TGListTree.cxx:2064
 TGListTree.cxx:2065
 TGListTree.cxx:2066
 TGListTree.cxx:2067
 TGListTree.cxx:2068
 TGListTree.cxx:2069
 TGListTree.cxx:2070
 TGListTree.cxx:2071
 TGListTree.cxx:2072
 TGListTree.cxx:2073
 TGListTree.cxx:2074
 TGListTree.cxx:2075
 TGListTree.cxx:2076
 TGListTree.cxx:2077
 TGListTree.cxx:2078
 TGListTree.cxx:2079
 TGListTree.cxx:2080
 TGListTree.cxx:2081
 TGListTree.cxx:2082
 TGListTree.cxx:2083
 TGListTree.cxx:2084
 TGListTree.cxx:2085
 TGListTree.cxx:2086
 TGListTree.cxx:2087
 TGListTree.cxx:2088
 TGListTree.cxx:2089
 TGListTree.cxx:2090
 TGListTree.cxx:2091
 TGListTree.cxx:2092
 TGListTree.cxx:2093
 TGListTree.cxx:2094
 TGListTree.cxx:2095
 TGListTree.cxx:2096
 TGListTree.cxx:2097
 TGListTree.cxx:2098
 TGListTree.cxx:2099
 TGListTree.cxx:2100
 TGListTree.cxx:2101
 TGListTree.cxx:2102
 TGListTree.cxx:2103
 TGListTree.cxx:2104
 TGListTree.cxx:2105
 TGListTree.cxx:2106
 TGListTree.cxx:2107
 TGListTree.cxx:2108
 TGListTree.cxx:2109
 TGListTree.cxx:2110
 TGListTree.cxx:2111
 TGListTree.cxx:2112
 TGListTree.cxx:2113
 TGListTree.cxx:2114
 TGListTree.cxx:2115
 TGListTree.cxx:2116
 TGListTree.cxx:2117
 TGListTree.cxx:2118
 TGListTree.cxx:2119
 TGListTree.cxx:2120
 TGListTree.cxx:2121
 TGListTree.cxx:2122
 TGListTree.cxx:2123
 TGListTree.cxx:2124
 TGListTree.cxx:2125
 TGListTree.cxx:2126
 TGListTree.cxx:2127
 TGListTree.cxx:2128
 TGListTree.cxx:2129
 TGListTree.cxx:2130
 TGListTree.cxx:2131
 TGListTree.cxx:2132
 TGListTree.cxx:2133
 TGListTree.cxx:2134
 TGListTree.cxx:2135
 TGListTree.cxx:2136
 TGListTree.cxx:2137
 TGListTree.cxx:2138
 TGListTree.cxx:2139
 TGListTree.cxx:2140
 TGListTree.cxx:2141
 TGListTree.cxx:2142
 TGListTree.cxx:2143
 TGListTree.cxx:2144
 TGListTree.cxx:2145
 TGListTree.cxx:2146
 TGListTree.cxx:2147
 TGListTree.cxx:2148
 TGListTree.cxx:2149
 TGListTree.cxx:2150
 TGListTree.cxx:2151
 TGListTree.cxx:2152
 TGListTree.cxx:2153
 TGListTree.cxx:2154
 TGListTree.cxx:2155
 TGListTree.cxx:2156
 TGListTree.cxx:2157
 TGListTree.cxx:2158
 TGListTree.cxx:2159
 TGListTree.cxx:2160
 TGListTree.cxx:2161
 TGListTree.cxx:2162
 TGListTree.cxx:2163
 TGListTree.cxx:2164
 TGListTree.cxx:2165
 TGListTree.cxx:2166
 TGListTree.cxx:2167
 TGListTree.cxx:2168
 TGListTree.cxx:2169
 TGListTree.cxx:2170
 TGListTree.cxx:2171
 TGListTree.cxx:2172
 TGListTree.cxx:2173
 TGListTree.cxx:2174
 TGListTree.cxx:2175
 TGListTree.cxx:2176
 TGListTree.cxx:2177
 TGListTree.cxx:2178
 TGListTree.cxx:2179
 TGListTree.cxx:2180
 TGListTree.cxx:2181
 TGListTree.cxx:2182
 TGListTree.cxx:2183
 TGListTree.cxx:2184
 TGListTree.cxx:2185
 TGListTree.cxx:2186
 TGListTree.cxx:2187
 TGListTree.cxx:2188
 TGListTree.cxx:2189
 TGListTree.cxx:2190
 TGListTree.cxx:2191
 TGListTree.cxx:2192
 TGListTree.cxx:2193
 TGListTree.cxx:2194
 TGListTree.cxx:2195
 TGListTree.cxx:2196
 TGListTree.cxx:2197
 TGListTree.cxx:2198
 TGListTree.cxx:2199
 TGListTree.cxx:2200
 TGListTree.cxx:2201
 TGListTree.cxx:2202
 TGListTree.cxx:2203
 TGListTree.cxx:2204
 TGListTree.cxx:2205
 TGListTree.cxx:2206
 TGListTree.cxx:2207
 TGListTree.cxx:2208
 TGListTree.cxx:2209
 TGListTree.cxx:2210
 TGListTree.cxx:2211
 TGListTree.cxx:2212
 TGListTree.cxx:2213
 TGListTree.cxx:2214
 TGListTree.cxx:2215
 TGListTree.cxx:2216
 TGListTree.cxx:2217
 TGListTree.cxx:2218
 TGListTree.cxx:2219
 TGListTree.cxx:2220
 TGListTree.cxx:2221
 TGListTree.cxx:2222
 TGListTree.cxx:2223
 TGListTree.cxx:2224
 TGListTree.cxx:2225
 TGListTree.cxx:2226
 TGListTree.cxx:2227
 TGListTree.cxx:2228
 TGListTree.cxx:2229
 TGListTree.cxx:2230
 TGListTree.cxx:2231
 TGListTree.cxx:2232
 TGListTree.cxx:2233
 TGListTree.cxx:2234
 TGListTree.cxx:2235
 TGListTree.cxx:2236
 TGListTree.cxx:2237
 TGListTree.cxx:2238
 TGListTree.cxx:2239
 TGListTree.cxx:2240
 TGListTree.cxx:2241
 TGListTree.cxx:2242
 TGListTree.cxx:2243
 TGListTree.cxx:2244
 TGListTree.cxx:2245
 TGListTree.cxx:2246
 TGListTree.cxx:2247
 TGListTree.cxx:2248
 TGListTree.cxx:2249
 TGListTree.cxx:2250
 TGListTree.cxx:2251
 TGListTree.cxx:2252
 TGListTree.cxx:2253
 TGListTree.cxx:2254
 TGListTree.cxx:2255
 TGListTree.cxx:2256
 TGListTree.cxx:2257
 TGListTree.cxx:2258
 TGListTree.cxx:2259
 TGListTree.cxx:2260
 TGListTree.cxx:2261
 TGListTree.cxx:2262
 TGListTree.cxx:2263
 TGListTree.cxx:2264
 TGListTree.cxx:2265
 TGListTree.cxx:2266
 TGListTree.cxx:2267
 TGListTree.cxx:2268
 TGListTree.cxx:2269
 TGListTree.cxx:2270
 TGListTree.cxx:2271
 TGListTree.cxx:2272
 TGListTree.cxx:2273
 TGListTree.cxx:2274
 TGListTree.cxx:2275
 TGListTree.cxx:2276
 TGListTree.cxx:2277
 TGListTree.cxx:2278
 TGListTree.cxx:2279
 TGListTree.cxx:2280
 TGListTree.cxx:2281
 TGListTree.cxx:2282
 TGListTree.cxx:2283
 TGListTree.cxx:2284
 TGListTree.cxx:2285
 TGListTree.cxx:2286
 TGListTree.cxx:2287
 TGListTree.cxx:2288
 TGListTree.cxx:2289
 TGListTree.cxx:2290
 TGListTree.cxx:2291
 TGListTree.cxx:2292
 TGListTree.cxx:2293
 TGListTree.cxx:2294
 TGListTree.cxx:2295
 TGListTree.cxx:2296
 TGListTree.cxx:2297
 TGListTree.cxx:2298
 TGListTree.cxx:2299
 TGListTree.cxx:2300
 TGListTree.cxx:2301
 TGListTree.cxx:2302
 TGListTree.cxx:2303
 TGListTree.cxx:2304
 TGListTree.cxx:2305
 TGListTree.cxx:2306
 TGListTree.cxx:2307
 TGListTree.cxx:2308
 TGListTree.cxx:2309
 TGListTree.cxx:2310
 TGListTree.cxx:2311
 TGListTree.cxx:2312
 TGListTree.cxx:2313
 TGListTree.cxx:2314
 TGListTree.cxx:2315
 TGListTree.cxx:2316
 TGListTree.cxx:2317
 TGListTree.cxx:2318
 TGListTree.cxx:2319
 TGListTree.cxx:2320
 TGListTree.cxx:2321
 TGListTree.cxx:2322
 TGListTree.cxx:2323
 TGListTree.cxx:2324
 TGListTree.cxx:2325
 TGListTree.cxx:2326
 TGListTree.cxx:2327
 TGListTree.cxx:2328
 TGListTree.cxx:2329
 TGListTree.cxx:2330
 TGListTree.cxx:2331
 TGListTree.cxx:2332
 TGListTree.cxx:2333
 TGListTree.cxx:2334
 TGListTree.cxx:2335
 TGListTree.cxx:2336
 TGListTree.cxx:2337
 TGListTree.cxx:2338
 TGListTree.cxx:2339
 TGListTree.cxx:2340
 TGListTree.cxx:2341
 TGListTree.cxx:2342
 TGListTree.cxx:2343
 TGListTree.cxx:2344
 TGListTree.cxx:2345
 TGListTree.cxx:2346
 TGListTree.cxx:2347
 TGListTree.cxx:2348
 TGListTree.cxx:2349
 TGListTree.cxx:2350
 TGListTree.cxx:2351
 TGListTree.cxx:2352
 TGListTree.cxx:2353
 TGListTree.cxx:2354
 TGListTree.cxx:2355
 TGListTree.cxx:2356
 TGListTree.cxx:2357
 TGListTree.cxx:2358
 TGListTree.cxx:2359
 TGListTree.cxx:2360
 TGListTree.cxx:2361
 TGListTree.cxx:2362
 TGListTree.cxx:2363
 TGListTree.cxx:2364
 TGListTree.cxx:2365
 TGListTree.cxx:2366
 TGListTree.cxx:2367
 TGListTree.cxx:2368
 TGListTree.cxx:2369
 TGListTree.cxx:2370
 TGListTree.cxx:2371
 TGListTree.cxx:2372
 TGListTree.cxx:2373
 TGListTree.cxx:2374
 TGListTree.cxx:2375
 TGListTree.cxx:2376
 TGListTree.cxx:2377
 TGListTree.cxx:2378
 TGListTree.cxx:2379
 TGListTree.cxx:2380
 TGListTree.cxx:2381
 TGListTree.cxx:2382
 TGListTree.cxx:2383
 TGListTree.cxx:2384
 TGListTree.cxx:2385
 TGListTree.cxx:2386
 TGListTree.cxx:2387
 TGListTree.cxx:2388
 TGListTree.cxx:2389
 TGListTree.cxx:2390
 TGListTree.cxx:2391
 TGListTree.cxx:2392
 TGListTree.cxx:2393
 TGListTree.cxx:2394
 TGListTree.cxx:2395
 TGListTree.cxx:2396
 TGListTree.cxx:2397
 TGListTree.cxx:2398
 TGListTree.cxx:2399
 TGListTree.cxx:2400
 TGListTree.cxx:2401
 TGListTree.cxx:2402
 TGListTree.cxx:2403
 TGListTree.cxx:2404
 TGListTree.cxx:2405
 TGListTree.cxx:2406
 TGListTree.cxx:2407
 TGListTree.cxx:2408
 TGListTree.cxx:2409
 TGListTree.cxx:2410
 TGListTree.cxx:2411
 TGListTree.cxx:2412
 TGListTree.cxx:2413
 TGListTree.cxx:2414
 TGListTree.cxx:2415
 TGListTree.cxx:2416
 TGListTree.cxx:2417
 TGListTree.cxx:2418
 TGListTree.cxx:2419
 TGListTree.cxx:2420
 TGListTree.cxx:2421
 TGListTree.cxx:2422
 TGListTree.cxx:2423
 TGListTree.cxx:2424
 TGListTree.cxx:2425
 TGListTree.cxx:2426
 TGListTree.cxx:2427
 TGListTree.cxx:2428
 TGListTree.cxx:2429
 TGListTree.cxx:2430
 TGListTree.cxx:2431
 TGListTree.cxx:2432
 TGListTree.cxx:2433
 TGListTree.cxx:2434
 TGListTree.cxx:2435
 TGListTree.cxx:2436
 TGListTree.cxx:2437
 TGListTree.cxx:2438
 TGListTree.cxx:2439
 TGListTree.cxx:2440
 TGListTree.cxx:2441
 TGListTree.cxx:2442
 TGListTree.cxx:2443
 TGListTree.cxx:2444
 TGListTree.cxx:2445
 TGListTree.cxx:2446
 TGListTree.cxx:2447
 TGListTree.cxx:2448
 TGListTree.cxx:2449
 TGListTree.cxx:2450
 TGListTree.cxx:2451
 TGListTree.cxx:2452
 TGListTree.cxx:2453
 TGListTree.cxx:2454
 TGListTree.cxx:2455
 TGListTree.cxx:2456
 TGListTree.cxx:2457
 TGListTree.cxx:2458
 TGListTree.cxx:2459
 TGListTree.cxx:2460
 TGListTree.cxx:2461
 TGListTree.cxx:2462
 TGListTree.cxx:2463
 TGListTree.cxx:2464
 TGListTree.cxx:2465
 TGListTree.cxx:2466
 TGListTree.cxx:2467
 TGListTree.cxx:2468
 TGListTree.cxx:2469
 TGListTree.cxx:2470
 TGListTree.cxx:2471
 TGListTree.cxx:2472
 TGListTree.cxx:2473
 TGListTree.cxx:2474
 TGListTree.cxx:2475
 TGListTree.cxx:2476
 TGListTree.cxx:2477
 TGListTree.cxx:2478
 TGListTree.cxx:2479
 TGListTree.cxx:2480
 TGListTree.cxx:2481
 TGListTree.cxx:2482
 TGListTree.cxx:2483
 TGListTree.cxx:2484
 TGListTree.cxx:2485
 TGListTree.cxx:2486
 TGListTree.cxx:2487
 TGListTree.cxx:2488
 TGListTree.cxx:2489
 TGListTree.cxx:2490
 TGListTree.cxx:2491
 TGListTree.cxx:2492
 TGListTree.cxx:2493
 TGListTree.cxx:2494
 TGListTree.cxx:2495
 TGListTree.cxx:2496
 TGListTree.cxx:2497
 TGListTree.cxx:2498
 TGListTree.cxx:2499
 TGListTree.cxx:2500
 TGListTree.cxx:2501
 TGListTree.cxx:2502
 TGListTree.cxx:2503
 TGListTree.cxx:2504
 TGListTree.cxx:2505
 TGListTree.cxx:2506
 TGListTree.cxx:2507
 TGListTree.cxx:2508
 TGListTree.cxx:2509
 TGListTree.cxx:2510
 TGListTree.cxx:2511
 TGListTree.cxx:2512
 TGListTree.cxx:2513
 TGListTree.cxx:2514
 TGListTree.cxx:2515
 TGListTree.cxx:2516
 TGListTree.cxx:2517
 TGListTree.cxx:2518
 TGListTree.cxx:2519
 TGListTree.cxx:2520
 TGListTree.cxx:2521
 TGListTree.cxx:2522
 TGListTree.cxx:2523
 TGListTree.cxx:2524
 TGListTree.cxx:2525
 TGListTree.cxx:2526
 TGListTree.cxx:2527
 TGListTree.cxx:2528
 TGListTree.cxx:2529
 TGListTree.cxx:2530
 TGListTree.cxx:2531
 TGListTree.cxx:2532
 TGListTree.cxx:2533
 TGListTree.cxx:2534
 TGListTree.cxx:2535
 TGListTree.cxx:2536
 TGListTree.cxx:2537
 TGListTree.cxx:2538
 TGListTree.cxx:2539
 TGListTree.cxx:2540
 TGListTree.cxx:2541
 TGListTree.cxx:2542
 TGListTree.cxx:2543
 TGListTree.cxx:2544
 TGListTree.cxx:2545
 TGListTree.cxx:2546
 TGListTree.cxx:2547
 TGListTree.cxx:2548
 TGListTree.cxx:2549
 TGListTree.cxx:2550
 TGListTree.cxx:2551
 TGListTree.cxx:2552
 TGListTree.cxx:2553
 TGListTree.cxx:2554
 TGListTree.cxx:2555
 TGListTree.cxx:2556
 TGListTree.cxx:2557
 TGListTree.cxx:2558
 TGListTree.cxx:2559
 TGListTree.cxx:2560
 TGListTree.cxx:2561
 TGListTree.cxx:2562
 TGListTree.cxx:2563
 TGListTree.cxx:2564
 TGListTree.cxx:2565
 TGListTree.cxx:2566
 TGListTree.cxx:2567
 TGListTree.cxx:2568
 TGListTree.cxx:2569
 TGListTree.cxx:2570
 TGListTree.cxx:2571
 TGListTree.cxx:2572
 TGListTree.cxx:2573
 TGListTree.cxx:2574
 TGListTree.cxx:2575
 TGListTree.cxx:2576
 TGListTree.cxx:2577
 TGListTree.cxx:2578
 TGListTree.cxx:2579
 TGListTree.cxx:2580
 TGListTree.cxx:2581
 TGListTree.cxx:2582
 TGListTree.cxx:2583
 TGListTree.cxx:2584
 TGListTree.cxx:2585
 TGListTree.cxx:2586
 TGListTree.cxx:2587
 TGListTree.cxx:2588
 TGListTree.cxx:2589
 TGListTree.cxx:2590
 TGListTree.cxx:2591
 TGListTree.cxx:2592
 TGListTree.cxx:2593
 TGListTree.cxx:2594
 TGListTree.cxx:2595
 TGListTree.cxx:2596
 TGListTree.cxx:2597
 TGListTree.cxx:2598
 TGListTree.cxx:2599
 TGListTree.cxx:2600
 TGListTree.cxx:2601
 TGListTree.cxx:2602
 TGListTree.cxx:2603
 TGListTree.cxx:2604
 TGListTree.cxx:2605
 TGListTree.cxx:2606
 TGListTree.cxx:2607
 TGListTree.cxx:2608
 TGListTree.cxx:2609
 TGListTree.cxx:2610
 TGListTree.cxx:2611
 TGListTree.cxx:2612
 TGListTree.cxx:2613
 TGListTree.cxx:2614
 TGListTree.cxx:2615
 TGListTree.cxx:2616
 TGListTree.cxx:2617
 TGListTree.cxx:2618
 TGListTree.cxx:2619
 TGListTree.cxx:2620
 TGListTree.cxx:2621
 TGListTree.cxx:2622
 TGListTree.cxx:2623
 TGListTree.cxx:2624
 TGListTree.cxx:2625
 TGListTree.cxx:2626
 TGListTree.cxx:2627
 TGListTree.cxx:2628
 TGListTree.cxx:2629
 TGListTree.cxx:2630
 TGListTree.cxx:2631
 TGListTree.cxx:2632
 TGListTree.cxx:2633
 TGListTree.cxx:2634
 TGListTree.cxx:2635
 TGListTree.cxx:2636
 TGListTree.cxx:2637
 TGListTree.cxx:2638
 TGListTree.cxx:2639
 TGListTree.cxx:2640
 TGListTree.cxx:2641
 TGListTree.cxx:2642
 TGListTree.cxx:2643
 TGListTree.cxx:2644
 TGListTree.cxx:2645
 TGListTree.cxx:2646
 TGListTree.cxx:2647
 TGListTree.cxx:2648
 TGListTree.cxx:2649
 TGListTree.cxx:2650
 TGListTree.cxx:2651
 TGListTree.cxx:2652
 TGListTree.cxx:2653
 TGListTree.cxx:2654
 TGListTree.cxx:2655
 TGListTree.cxx:2656
 TGListTree.cxx:2657
 TGListTree.cxx:2658
 TGListTree.cxx:2659
 TGListTree.cxx:2660
 TGListTree.cxx:2661
 TGListTree.cxx:2662
 TGListTree.cxx:2663
 TGListTree.cxx:2664
 TGListTree.cxx:2665
 TGListTree.cxx:2666
 TGListTree.cxx:2667
 TGListTree.cxx:2668
 TGListTree.cxx:2669
 TGListTree.cxx:2670
 TGListTree.cxx:2671
 TGListTree.cxx:2672
 TGListTree.cxx:2673
 TGListTree.cxx:2674
 TGListTree.cxx:2675
 TGListTree.cxx:2676
 TGListTree.cxx:2677
 TGListTree.cxx:2678
 TGListTree.cxx:2679
 TGListTree.cxx:2680
 TGListTree.cxx:2681
 TGListTree.cxx:2682
 TGListTree.cxx:2683
 TGListTree.cxx:2684
 TGListTree.cxx:2685
 TGListTree.cxx:2686
 TGListTree.cxx:2687
 TGListTree.cxx:2688
 TGListTree.cxx:2689
 TGListTree.cxx:2690
 TGListTree.cxx:2691
 TGListTree.cxx:2692
 TGListTree.cxx:2693
 TGListTree.cxx:2694
 TGListTree.cxx:2695
 TGListTree.cxx:2696
 TGListTree.cxx:2697
 TGListTree.cxx:2698
 TGListTree.cxx:2699
 TGListTree.cxx:2700
 TGListTree.cxx:2701
 TGListTree.cxx:2702
 TGListTree.cxx:2703
 TGListTree.cxx:2704
 TGListTree.cxx:2705
 TGListTree.cxx:2706
 TGListTree.cxx:2707
 TGListTree.cxx:2708
 TGListTree.cxx:2709
 TGListTree.cxx:2710
 TGListTree.cxx:2711
 TGListTree.cxx:2712
 TGListTree.cxx:2713
 TGListTree.cxx:2714
 TGListTree.cxx:2715
 TGListTree.cxx:2716
 TGListTree.cxx:2717
 TGListTree.cxx:2718
 TGListTree.cxx:2719
 TGListTree.cxx:2720
 TGListTree.cxx:2721
 TGListTree.cxx:2722
 TGListTree.cxx:2723
 TGListTree.cxx:2724
 TGListTree.cxx:2725
 TGListTree.cxx:2726
 TGListTree.cxx:2727
 TGListTree.cxx:2728
 TGListTree.cxx:2729
 TGListTree.cxx:2730
 TGListTree.cxx:2731
 TGListTree.cxx:2732
 TGListTree.cxx:2733
 TGListTree.cxx:2734
 TGListTree.cxx:2735
 TGListTree.cxx:2736
 TGListTree.cxx:2737
 TGListTree.cxx:2738
 TGListTree.cxx:2739
 TGListTree.cxx:2740
 TGListTree.cxx:2741
 TGListTree.cxx:2742
 TGListTree.cxx:2743
 TGListTree.cxx:2744
 TGListTree.cxx:2745
 TGListTree.cxx:2746
 TGListTree.cxx:2747
 TGListTree.cxx:2748
 TGListTree.cxx:2749
 TGListTree.cxx:2750
 TGListTree.cxx:2751
 TGListTree.cxx:2752
 TGListTree.cxx:2753
 TGListTree.cxx:2754
 TGListTree.cxx:2755
 TGListTree.cxx:2756
 TGListTree.cxx:2757
 TGListTree.cxx:2758
 TGListTree.cxx:2759
 TGListTree.cxx:2760
 TGListTree.cxx:2761
 TGListTree.cxx:2762
 TGListTree.cxx:2763
 TGListTree.cxx:2764
 TGListTree.cxx:2765
 TGListTree.cxx:2766
 TGListTree.cxx:2767
 TGListTree.cxx:2768
 TGListTree.cxx:2769
 TGListTree.cxx:2770
 TGListTree.cxx:2771
 TGListTree.cxx:2772
 TGListTree.cxx:2773
 TGListTree.cxx:2774
 TGListTree.cxx:2775
 TGListTree.cxx:2776
 TGListTree.cxx:2777
 TGListTree.cxx:2778
 TGListTree.cxx:2779
 TGListTree.cxx:2780
 TGListTree.cxx:2781
 TGListTree.cxx:2782
 TGListTree.cxx:2783
 TGListTree.cxx:2784
 TGListTree.cxx:2785
 TGListTree.cxx:2786
 TGListTree.cxx:2787
 TGListTree.cxx:2788
 TGListTree.cxx:2789
 TGListTree.cxx:2790
 TGListTree.cxx:2791
 TGListTree.cxx:2792
 TGListTree.cxx:2793
 TGListTree.cxx:2794
 TGListTree.cxx:2795
 TGListTree.cxx:2796
 TGListTree.cxx:2797
 TGListTree.cxx:2798
 TGListTree.cxx:2799
 TGListTree.cxx:2800
 TGListTree.cxx:2801
 TGListTree.cxx:2802
 TGListTree.cxx:2803
 TGListTree.cxx:2804
 TGListTree.cxx:2805
 TGListTree.cxx:2806
 TGListTree.cxx:2807
 TGListTree.cxx:2808
 TGListTree.cxx:2809
 TGListTree.cxx:2810
 TGListTree.cxx:2811
 TGListTree.cxx:2812
 TGListTree.cxx:2813
 TGListTree.cxx:2814
 TGListTree.cxx:2815
 TGListTree.cxx:2816
 TGListTree.cxx:2817
 TGListTree.cxx:2818
 TGListTree.cxx:2819
 TGListTree.cxx:2820
 TGListTree.cxx:2821
 TGListTree.cxx:2822
 TGListTree.cxx:2823
 TGListTree.cxx:2824
 TGListTree.cxx:2825
 TGListTree.cxx:2826
 TGListTree.cxx:2827
 TGListTree.cxx:2828
 TGListTree.cxx:2829
 TGListTree.cxx:2830
 TGListTree.cxx:2831
 TGListTree.cxx:2832
 TGListTree.cxx:2833
 TGListTree.cxx:2834
 TGListTree.cxx:2835
 TGListTree.cxx:2836
 TGListTree.cxx:2837
 TGListTree.cxx:2838
 TGListTree.cxx:2839
 TGListTree.cxx:2840
 TGListTree.cxx:2841
 TGListTree.cxx:2842
 TGListTree.cxx:2843
 TGListTree.cxx:2844
 TGListTree.cxx:2845
 TGListTree.cxx:2846
 TGListTree.cxx:2847
 TGListTree.cxx:2848
 TGListTree.cxx:2849
 TGListTree.cxx:2850
 TGListTree.cxx:2851
 TGListTree.cxx:2852
 TGListTree.cxx:2853
 TGListTree.cxx:2854
 TGListTree.cxx:2855
 TGListTree.cxx:2856
 TGListTree.cxx:2857
 TGListTree.cxx:2858
 TGListTree.cxx:2859
 TGListTree.cxx:2860
 TGListTree.cxx:2861
 TGListTree.cxx:2862
 TGListTree.cxx:2863
 TGListTree.cxx:2864
 TGListTree.cxx:2865
 TGListTree.cxx:2866
 TGListTree.cxx:2867
 TGListTree.cxx:2868
 TGListTree.cxx:2869
 TGListTree.cxx:2870
 TGListTree.cxx:2871
 TGListTree.cxx:2872
 TGListTree.cxx:2873