// @(#)root/gui:$Id$
// Author: Fons Rademakers   12/01/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.

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGListBox, TGLBContainer, TGLBEntry and TGTextLBEntry                //
//                                                                      //
// A listbox is a box, possibly with scrollbar, containing entries.     //
// Currently entries are simple text strings (TGTextLBEntry).           //
// A TGListBox looks a lot like a TGCanvas. It has a TGViewPort         //
// containing a TGLBContainer which contains the entries and it also    //
// has a vertical scrollbar which becomes visible if there are more     //
// items than fit in the visible part of the container.                 //
//                                                                      //
// The TGListBox is user callable. The other classes are service        //
// classes of the listbox.                                              //
//                                                                      //
// Selecting an item in the listbox will generate the event:            //
// kC_COMMAND, kCM_LISTBOX, listbox id, item id.                        //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGPicture.h"
#include "TGListBox.h"
#include "TGScrollBar.h"
#include "TGResourcePool.h"
#include "TSystem.h"
#include "Riostream.h"
#include "TMath.h"
#include <stdlib.h>


const TGFont *TGTextLBEntry::fgDefaultFont = 0;
TGGC         *TGTextLBEntry::fgDefaultGC = 0;

ClassImp(TGLBEntry)
ClassImp(TGTextLBEntry)
ClassImp(TGLineLBEntry)
ClassImp(TGLBContainer)
ClassImp(TGListBox)

//______________________________________________________________________________
TGLBEntry::TGLBEntry(const TGWindow *p, Int_t id, UInt_t options, Pixel_t back) :
             TGFrame(p, 10, 10, options | kOwnBackground, back)
{
   // Base class entry constructor.

   fActive = kFALSE;
   fEntryId = id;
   fBkcolor = back;
   fEditDisabled = kEditDisable | kEditDisableGrab;

   SetWindowName();
}

//______________________________________________________________________________
void TGLBEntry::Activate(Bool_t a)
{
   // Toggle active state of listbox entry.

   if (fActive == a) return;
   fActive = a;
   DoRedraw();
}

//______________________________________________________________________________
void TGLBEntry::Toggle()
{
   // Toggle active state of listbox entry.

   fActive = !fActive;
   DoRedraw();
}


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGTextLBEntry                                                        //
//                                                                      //
// Text string listbox entries.                                         //
// A TGTextLBEntry is for TGListBox internal use.                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
TGTextLBEntry::TGTextLBEntry(const TGWindow *p, TGString *s, Int_t id,
      GContext_t norm, FontStruct_t font, UInt_t options, ULong_t back) :
   TGLBEntry(p, id, options, back)
{
   // Create a text listbox entry. The TGString is adopted.

   fText        = s;
   fTextChanged = kTRUE;
   fFontStruct  = font;
   fNormGC      = norm;

   int max_ascent, max_descent;

   if (fText) fTWidth  = gVirtualX->TextWidth(fFontStruct, fText->GetString(), fText->GetLength());
   gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
   fTHeight = max_ascent + max_descent;
   Resize(fTWidth, fTHeight + 1);
   fEditDisabled = kEditDisable | kEditDisableGrab;
   SetWindowName();
}

//______________________________________________________________________________
TGTextLBEntry::~TGTextLBEntry()
{
   // Delete text listbox entry.

   if (fText) delete fText;
}

//______________________________________________________________________________
void TGTextLBEntry::DrawCopy(Handle_t id, Int_t x, Int_t y)
{
   // Draw text listbox entry on window/pixmap.

   int max_ascent, max_descent;

   y += (fHeight - fTHeight) >> 1;

   gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);

   if (fActive) {
      gVirtualX->SetForeground(fNormGC, fgDefaultSelectedBackground );
      gVirtualX->FillRectangle(id,fNormGC, x, y, fWidth, fHeight);
      gVirtualX->SetForeground(fNormGC, fClient->GetResourcePool()->GetSelectedFgndColor());
      fText->Draw(id, fNormGC, x + 3, y + max_ascent);
   } else {
      gVirtualX->SetForeground(fNormGC, fBkcolor);
      gVirtualX->FillRectangle(id, fNormGC, x, y, fWidth, fHeight);
      gVirtualX->SetForeground(fNormGC, GetForeground());
      fText->Draw(id, fNormGC, x + 3, y + max_ascent);
   }
}

//______________________________________________________________________________
void TGTextLBEntry::DoRedraw()
{
   // Redraw text listbox entry.

   if (fId) DrawCopy(fId, 0, 0);
}

//______________________________________________________________________________
void TGTextLBEntry::SetText(TGString *new_text)
{
   // Set or change text in text entry.

   if (fText) delete fText;
   fText = new_text;
   fTextChanged = kTRUE;

   int max_ascent, max_descent;
   fTWidth = gVirtualX->TextWidth(fFontStruct, fText->GetString(), fText->GetLength());
   gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
   fTHeight = max_ascent + max_descent;

   Resize(fTWidth + 3, fTHeight + 1);

   DoRedraw();
}

//______________________________________________________________________________
FontStruct_t TGTextLBEntry::GetDefaultFontStruct()
{
   // Return default font structure in use for a text listbox entry.

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

//______________________________________________________________________________
const TGGC &TGTextLBEntry::GetDefaultGC()
{
   // Return default graphics context in use for a text listbox entry.

   if (!fgDefaultGC)
      fgDefaultGC = new TGGC(*gClient->GetResourcePool()->GetFrameGC());
   return *fgDefaultGC;
}

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGLineLBEntry                                                        //
//                                                                      //
// Line style and width listbox entries.                                //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
TGLineLBEntry::TGLineLBEntry(const TGWindow *p, Int_t id, const char *str,
                             UInt_t w, Style_t style, UInt_t options, ULong_t back) :
   TGTextLBEntry(p, new TGString(str), id, GetDefaultGC()(),
                 GetDefaultFontStruct(), options, back)
{
   // Create the line style listbox entry.

   GCValues_t gcv;

   gcv.fMask =  kGCLineStyle | kGCLineWidth | kGCFillStyle | kGCDashList;
   fLineWidth = gcv.fLineWidth  = w;
   gcv.fFillStyle  = kFillSolid;
   gcv.fDashLen = 2;
   gcv.fDashOffset = 0;
   memcpy(gcv.fDashes, "\x5\x5", 3);
   gcv.fLineStyle = kLineOnOffDash;
   fLineGC = fClient->GetGC(&gcv, kTRUE);
   SetLineStyle(style);

   int max_ascent, max_descent;

   fTWidth  = gVirtualX->TextWidth(GetDefaultFontStruct(), "8", 1);
   fTWidth += 15;                     // for drawing
   gVirtualX->GetFontProperties(GetDefaultFontStruct(),
                                max_ascent, max_descent);
   fTHeight = max_ascent + max_descent;

   Resize(fTWidth, fTHeight + 1);
   fEditDisabled = kEditDisable | kEditDisableGrab;
   SetWindowName();
}

//______________________________________________________________________________
TGLineLBEntry::~TGLineLBEntry()
{
   // Delete line style listbox entry.

   fClient->FreeGC(fLineGC);
}

//______________________________________________________________________________
void  TGLineLBEntry::Update(TGLBEntry *e)
{
   // Update line style listbox entry.

   TGTextLBEntry::Update(e);

   fClient->FreeGC(fLineGC);
   fLineGC = ((TGLineLBEntry *)e)->GetLineGC();
   fLineGC->AddReference();
}

//______________________________________________________________________________
void TGLineLBEntry::SetLineStyle(Style_t linestyle)
{
   // Set the line style corresponding to the TPad line styles.

   static const char* dashed = "\x3\x3";
   static const char* dotted= "\x1\x2";
   static const char* dasheddotted = "\x3\x4\x1\x4";
   static const char* ls05 = "\x5\x3\x1\x3";
   static const char* ls06 = "\x5\x3\x1\x3\x1\x3\x1\x3";
   static const char* ls07 = "\x5\x5";
   static const char* ls08 = "\x5\x3\x1\x3\x1\x3";
   static const char* ls09 = "\x20\x5";
   static const char* ls10 = "\x20\x10\x1\x10";


   if (linestyle <= 1)  {
      fLineGC->SetLineStyle(kLineSolid);
   } else {
      switch (linestyle) {
         case 2:
            fLineGC->SetDashList(dashed, 2);
            break;
         case 3:
            fLineGC->SetDashList(dotted, 2);
            break;
         case 4:
            fLineGC->SetDashList(dasheddotted, 4);
            break;
         case 5:
            fLineGC->SetDashList(ls05, 4);
            break;
         case 6:
            fLineGC->SetDashList(ls06, 8);
            break;
         case 7:
            fLineGC->SetDashList(ls07, 2);
            break;
         case 8:
            fLineGC->SetDashList(ls08, 6);
            break;
         case 9:
            fLineGC->SetDashList(ls09, 2);
            break;
         case 10:
            fLineGC->SetDashList(ls10, 4);
            break;
      }
   }
   fLineGC->SetCapStyle(0); // flat cap
   fLineStyle = linestyle;
}

//______________________________________________________________________________
void TGLineLBEntry::SetLineWidth(Int_t width)
{
   // Set or change line witdh in an entry.

   fLineWidth = width;
   fLineGC->SetLineWidth(fLineWidth);
}

//______________________________________________________________________________
void TGLineLBEntry::DrawCopy(Handle_t id, Int_t x, Int_t y)
{
   // Draw copy on window/pixmap.

   TGTextLBEntry::DrawCopy(id, x, y);
   if (!strcmp(TGTextLBEntry::GetTitle(),"None")) return;
   if (fActive) {
      gVirtualX->SetForeground(fLineGC->GetGC(),
                               fClient->GetResourcePool()->GetSelectedFgndColor());
   } else {
      gVirtualX->SetForeground(fLineGC->GetGC(),
                               fClient->GetResourcePool()->GetBlackColor());
   }
   gVirtualX->DrawLine(id, fLineGC->GetGC(), x + fTWidth + 5, y + fHeight/2,
                       x + fWidth - 5, y + fHeight/2);
}

//______________________________________________________________________________
void TGLineLBEntry::DoRedraw()
{
   // Redraw line style listbox entry.

   if (fId) DrawCopy(fId, 0, 0);
}

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGIconLBEntry                                                        //
//                                                                      //
// Icon + text listbox entry.                                           //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
TGIconLBEntry::TGIconLBEntry(const TGWindow *p, Int_t id, const char *str,
                             const TGPicture *pic,
                             UInt_t /*w*/, Style_t /*style*/, UInt_t options, ULong_t back) :
   TGTextLBEntry(p, new TGString(str), id, GetDefaultGC()(),
                 GetDefaultFontStruct(), options, back)
{
   // Create the icon & text listbox entry.

   int max_ascent, max_descent;

   fPicture = pic;
   if (fPicture) {
      fTWidth += fPicture->GetWidth() + 4;
      ((TGPicture *)fPicture)->AddReference();
   }
   else
      fTWidth += 20;
   gVirtualX->GetFontProperties(GetDefaultFontStruct(),
                                max_ascent, max_descent);
   fTHeight = max_ascent + max_descent;
   if (fPicture && fPicture->GetHeight() > fTHeight)
      fTHeight = fPicture->GetHeight();

   Resize(fTWidth, fTHeight + 1);
   fEditDisabled = kEditDisable | kEditDisableGrab;
   SetWindowName();
}

//______________________________________________________________________________
TGIconLBEntry::~TGIconLBEntry()
{
   // Delete icon & text listbox entry.

   fClient->FreePicture(fPicture);
}

//______________________________________________________________________________
void  TGIconLBEntry::Update(TGLBEntry *e)
{
   // Update icon & text listbox entry.

   TGTextLBEntry::Update(e);
}

//______________________________________________________________________________
void TGIconLBEntry::DrawCopy(Handle_t id, Int_t x, Int_t y)
{
   // Draw copy on window/pixmap.

   Int_t off_x = 0;
   if (fPicture) {
      fPicture->Draw(id, fNormGC, x + 2, y);
      off_x = fPicture->GetWidth() + 4;
   }
   TGTextLBEntry::DrawCopy(id, x + off_x, y);
}

//______________________________________________________________________________
void TGIconLBEntry::DoRedraw()
{
   // Redraw icon & text listbox entry.

   if (fId) DrawCopy(fId, 0, 0);
}

//___________________________________________________________________________
void TGIconLBEntry::SetPicture(const TGPicture *pic)
{
   // Change the icon of listbox entry containing icon & text.

   fClient->FreePicture(fPicture);

   if (pic) ((TGPicture *)pic)->AddReference();

   fPicture   = pic;
}

/////////////////////////////////////////////////////////////////////////////////
class TGLBFrameElement : public TGFrameElement {
public:
   TGLBFrameElement(TGFrame *f, TGLayoutHints *l) : TGFrameElement(f, l) {}
   virtual ~TGLBFrameElement() {}

   Bool_t IsSortable() const { return kTRUE; }
   Int_t  Compare(const TObject *obj) const {
      if (!fFrame->InheritsFrom(TGTextLBEntry::Class())) {
         return 0;
      }
      TGTextLBEntry *f1 = (TGTextLBEntry*)fFrame;
      TGTextLBEntry *f2 = (TGTextLBEntry *) ((TGFrameElement *) obj)->fFrame;


      double d1, d2;
      const char *t1 = f1->GetText()->Data();
      const char *t2 = f2->GetText()->Data();

      if ((d1 = atof(t1)) && (d2 = atof(t2))) {
         return (d1 > d2);
      } else {
         return strcmp(t1, t2);
      }
      return 0;
   }
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGLBContainer                                                        //
//                                                                      //
// A Composite frame that contains a list of TGLBEnties.                //
// A TGLBContainer is for TGListBox internal use.                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
TGLBContainer::TGLBContainer(const TGWindow *p, UInt_t w, UInt_t h,
                             UInt_t options, ULong_t back) :
   TGContainer(p, w, h, options, back)
{
   // Create a listbox container.

   fLastActive = 0;
   fMsgWindow  = p;
   fMultiSelect = kFALSE;
   fChangeStatus = kFALSE;

   SetWindowName();
   fEditDisabled = kEditDisableGrab | kEditDisableBtnEnable | kEditDisableKeyEnable;
}

//______________________________________________________________________________
TGLBContainer::~TGLBContainer()
{
   // Delete the listbox container.

   Cleanup();
}

//______________________________________________________________________________
void TGLBContainer::Layout()
{
   // Layout container

   TGContainer::Layout();
   TGFrame::Resize(fListBox->GetViewPort()->GetWidth(), fHeight);
}

//______________________________________________________________________________
void TGLBContainer::DoRedraw()
{
   // redraw

   return TGContainer::DoRedraw();
}

//______________________________________________________________________________
void TGLBContainer::AddEntry(TGLBEntry *lbe, TGLayoutHints *lhints)
{
   // Add listbox entry with hints to container. To show entry call
   // MapSubwindows() and Layout().

   // DEPRECATED: the color should always be set in the TGLBEntry ctor
   //lbe->SetBackgroundColor(fgWhitePixel);

   TGLBFrameElement *nw = new TGLBFrameElement(lbe, lhints ? lhints : fgDefaultHints);
   fList->Add(nw);
   ClearViewPort();
}

//______________________________________________________________________________
void TGLBContainer::InsertEntry(TGLBEntry *lbe, TGLayoutHints *lhints, Int_t afterID)
{
   // Insert listbox entry after specified entry with id afterID. If afterID = -1
   // then add entry at head of list. To show entry call MapSubwindows() and
   // Layout().

   // DEPRECATED: the color should always be set in the TGLBEntry ctor
   //lbe->SetBackgroundColor(fgWhitePixel);

   TGLBEntry      *e;
   TGFrameElement *el, *nw;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      e = (TGLBEntry *) el->fFrame;
      if (e->EntryId() == afterID) break;
   }

   if (!el && afterID != -1) {
      nw = new TGLBFrameElement(lbe, lhints ? lhints : fgDefaultHints);
      fList->Add(nw);
   } else {
      nw = new TGLBFrameElement(lbe, lhints);
      nw->fFrame  = lbe;
      nw->fLayout = lhints;
      nw->fState  = 1;
      //lbe->SetFrameElement(nw);

      if (afterID == -1)
         fList->AddFirst(nw);
      else
         fList->AddAfter(el, nw);
   }
   ClearViewPort();
}

//______________________________________________________________________________
void TGLBContainer::AddEntrySort(TGLBEntry *lbe, TGLayoutHints *lhints)
{
   // Insert listbox entry before the list box entry with a higher id.
   // To show entry call MapSubwindows() and Layout().

   // DEPRECATED: the color should always be set in the TGLBEntry ctor
   //lbe->SetBackgroundColor(fgWhitePixel);

   TGLBEntry      *e;
   TGFrameElement *el, *nw;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      e = (TGLBEntry *) el->fFrame;
      if (e->EntryId() > lbe->EntryId()) break;
   }

   if (!el) {
      nw = new TGLBFrameElement(lbe, lhints ? lhints : fgDefaultHints);
      fList->Add(nw);
   } else {
      nw = new TGLBFrameElement(lbe, lhints);
      nw->fFrame  = lbe;
      nw->fLayout = lhints;
      nw->fState  = 1;
      //lbe->SetFrameElement(nw);

      fList->AddBefore(el, nw);
   }
   ClearViewPort();
}

//______________________________________________________________________________
void TGLBContainer::RemoveEntry(Int_t id)
{
   // Remove the entry with specified id from the listbox container.
   // To update the listbox call Layout().

   TGLBEntry      *e;
   TGFrameElement *el;
   TGLayoutHints  *l;

   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      e = (TGLBEntry *) el->fFrame;
      l = el->fLayout;
      if (e->EntryId() == id) {
         if (fLastActive == e) fLastActive = 0;
         e->DestroyWindow();
         fList->Remove(el);  // avoid calling RemoveFrame(e)
         delete el;          // item
         delete e;
         delete l;
         break;
      }
   }
   ClearViewPort();
}

//______________________________________________________________________________
void TGLBContainer::RemoveEntries(Int_t from_ID, Int_t to_ID)
{
   // Remove entries from from_ID to to_ID (including).
   // To update the listbox call Layout().

   TGLBEntry      *e;
   TGFrameElement *el;
   TGLayoutHints  *l;

   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      e = (TGLBEntry *) el->fFrame;
      l = el->fLayout;
      if ((e->EntryId() >= from_ID) && (e->EntryId() <= to_ID)) {
         if (fLastActive == e) fLastActive = 0;
         e->DestroyWindow();
         fList->Remove(el);  // avoid calling RemoveFrame(e)
         delete el;          // idem
         delete e;
         delete l;
      }
   }
   ClearViewPort();
}

//______________________________________________________________________________
void TGLBContainer::RemoveAll()
{
   // Remove all entries in this container.

   TGLBEntry      *e;
   TGFrameElement *el;
   TGLayoutHints  *l;

   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      e = (TGLBEntry *) el->fFrame;
      l = el->fLayout;
      if (fLastActive == e) fLastActive = 0;
      e->DestroyWindow();
      fList->Remove(el);  // avoid calling RemoveFrame(e)
      delete el;          // item
      delete e;
      delete l;
   }
   ClearViewPort();
}

//______________________________________________________________________________
TGLBEntry *TGLBContainer::Select(Int_t id)
{
   // Select the entry with the specified id.
   // Returns the selected TGLBEntry.

   return Select(id, kTRUE);
}

//______________________________________________________________________________
TGLBEntry *TGLBContainer::Select(Int_t id, Bool_t sel)
{
   // Select / deselect the entry with the specified id.
   // Returns the selected TGLBEntry.

   TGLBEntry      *f;
   TGFrameElement *el;

   if (!fMultiSelect && fLastActive) {
      fLastActive->Activate(kFALSE);
      fLastActive = 0;
   }

   TIter next(fList);
   while ((el = (TGFrameElement *) next())) {
      f = (TGLBEntry *) el->fFrame;
      if (f->EntryId() == id) {
         f->Activate(sel);
         if (fMultiSelect == kFALSE && sel == kTRUE) {
            fLastActive = f;
            fLastActiveEl = el;
         }
         ClearViewPort();
         return f;
      }
   }

   return 0;
}

//______________________________________________________________________________
Int_t TGLBContainer::GetSelected() const
{
   // Returns id of selected entry. In case of no selected entry or
   // if multi selection is switched on returns -1.

   if (fLastActive == 0) return -1;
   return fLastActive->EntryId();
}

//______________________________________________________________________________
Bool_t TGLBContainer::GetSelection(Int_t id)
{
   // Returns kTrue if entry id is selected.

   TGLBEntry     *f;
   TGFrameElement *el;

   TIter next(fList);
   while ((el = (TGFrameElement *) next())) {
      f = (TGLBEntry *) el->fFrame;
      if (f->EntryId() == id)
         return f->IsActive();
   }

   return kFALSE;
}

//______________________________________________________________________________
void TGLBContainer::GetSelectedEntries(TList *selected)
{
   // Adds all selected entries (TGLBEntry) of the list box into
   // the list selected.

   TGLBEntry      *f;
   TGFrameElement *el;

   TIter next(fList);
   while ((el = (TGFrameElement *) next())) {
      f = (TGLBEntry *) el->fFrame;
      if (f->IsActive()) {
         selected->Add(f);
      }
   }
}

//______________________________________________________________________________
void TGLBContainer::SetMultipleSelections(Bool_t multi)
{
   // Enables and disables multiple selections of entries.

   TGFrameElement *el;

   fMultiSelect = multi;
   if (!fMultiSelect) {
      // deselect all entries
      TIter next(fList);
      while ((el = (TGFrameElement *) next())) {
         ((TGLBEntry *)(el->fFrame))->Activate(kFALSE);
      }
   }
   fLastActive = 0;
   fLastActiveEl = 0;
   ClearViewPort();
}

//______________________________________________________________________________
TGVScrollBar *TGLBContainer::GetVScrollbar() const
{
   // Return a pointer to vertical scroll bar.

   return fListBox ? fListBox->GetVScrollbar() : 0;
}

//______________________________________________________________________________
void TGLBContainer::SetVsbPosition(Int_t newPos)
{
   // Set new vertical scroll bar position.

   TGVScrollBar *vb = GetVScrollbar();

   if (vb && vb->IsMapped()) {
      vb->SetPosition(newPos);
   }
}

//______________________________________________________________________________
Bool_t TGLBContainer::HandleButton(Event_t *event)
{
   // Handle mouse button event in the listbox container.

   int xf0, yf0, xff, yff;

   TGLBEntry *f;
   TGFrameElement *el;
   TGLBEntry *last = fLastActive;

   TGPosition pos = GetPagePosition();
   Int_t x = pos.fX + event->fX;
   Int_t y = pos.fY + event->fY;
   Bool_t activate = kFALSE;

   // do not handle "context menu button" during guibuilding
   if (fClient->IsEditable() && (event->fCode == kButton3)) {
      return kTRUE;
   }

   TGVScrollBar *vb = GetVScrollbar();

   if ((event->fCode == kButton4) && vb){
      // scroll 2 lines up (a button down is always followed by a button up)
      Int_t newpos = vb->GetPosition() - 1;
      if (newpos < 0) newpos = 0;
      vb->SetPosition(newpos);
      ClearViewPort();
      return kTRUE;
   }
   if ((event->fCode == kButton5) && vb) {
      // scroll 2 lines down (a button down is always followed by a button up)
      Int_t newpos = vb->GetPosition() + 1;
      vb->SetPosition(newpos);
      ClearViewPort();
      return kTRUE;
   }

   gVirtualX->SetInputFocus(fId);

   if (fMultiSelect) {
      if (event->fType == kButtonPress) {
         TIter next(fList);
         while ((el = (TGFrameElement *) next())) {
            f = (TGLBEntry *) el->fFrame;
            xf0 = f->GetX();
            yf0 = f->GetY();
            xff = xf0 + f->GetWidth();
            yff = yf0 + f->GetHeight();

            activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
                        (x > xf0) && (x < xff) && (y > yf0) &&  (y < yff);

            if (activate)  {
               fLastActive = f;
               fLastActiveEl = el;
               f->Toggle();
               fChangeStatus = f->IsActive() ? 1 : 0;
               SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_ITEMCLICK),
                           f->EntryId(), 0);
               break;
            }
         }
      } else {
         fChangeStatus = -1;
      }
   } else {
      if (event->fType == kButtonPress) {
         if (fLastActive) {
            fLastActive->Activate(kFALSE);
            fLastActive = 0;
         }
         TIter next(fList);
         while ((el = (TGFrameElement *) next())) {
            f = (TGLBEntry *) el->fFrame;
            xf0 = f->GetX();
            yf0 = f->GetY();
            xff = xf0 + f->GetWidth();
            yff = yf0 + f->GetHeight();

            activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
                        (x > xf0) && (x < xff) && (y > yf0) &&  (y < yff) && !f->IsActive();

            if (activate)  {
               f->Activate(kTRUE);
               fLastActive = f;
               fLastActiveEl = el;
            } else {
               f->Activate(kFALSE);
            }
         }
      } else {
         if (fLastActive) {
            f = fLastActive;
            SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_ITEMCLICK),
                        f->EntryId(), 0);
         }
      }
   }
   if (event->fType == kButtonRelease) {
      fScrolling = kFALSE;
      gSystem->RemoveTimer(fScrollTimer);
   }
   if (fChangeStatus || (last != fLastActive))
      ClearViewPort();
   // trick to avoid mouse move events between the mouse click
   // and the unmapping...
   if (fListBox->GetParent()->InheritsFrom("TGComboBoxPopup"))
      fListBox->GetContainer()->RemoveInput(kPointerMotionMask);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGLBContainer::HandleDoubleClick(Event_t *ev)
{
   // Handle double click mouse event in the listbox container.

   if (!fMultiSelect) {
      if (fLastActive) {
         TGLBEntry *f = fLastActive;
         SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_ITEMDBLCLICK),
                     f->EntryId(), 0);
         DoubleClicked(f, ev->fCode);
         DoubleClicked(f, ev->fCode, ev->fXRoot, ev->fYRoot);
      }
      return kTRUE;
   }
   return TGContainer::HandleDoubleClick(ev);
}

//______________________________________________________________________________
Bool_t TGLBContainer::HandleMotion(Event_t *event)
{
   // Handle mouse motion event in listbox container.

   int xf0, yf0, xff, yff;

   static Long64_t was = gSystem->Now();
   Long64_t now = gSystem->Now();

   if ((now-was) < 50) return kFALSE;
   was = now;

   TGLBEntry *f;
   TGFrameElement *el;
   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();
   Int_t x = pos.fX + event->fX;
   Int_t y = pos.fY + event->fY;
   Bool_t activate = kFALSE;
   TGLBEntry *last = fLastActive;

   if (fMultiSelect) {

      if ((event->fY < 10) || (event->fY > Int_t(dim.fHeight) - 10)) {
         if (!fScrolling) {
            fScrollTimer->Reset();
            gSystem->AddTimer(fScrollTimer);
         }
         fScrolling = kTRUE;
      }
      else if (fChangeStatus >= 0) {
         TIter next(fList);
         while ((el = (TGFrameElement *) next())) {
            f = (TGLBEntry *) el->fFrame;
            xf0 = f->GetX();
            yf0 = f->GetY();
            xff = xf0 + f->GetWidth();
            yff = yf0 + f->GetHeight();
            activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
                        (x > xf0) && (x < xff) && (y > yf0) &&  (y < yff);

            if (activate) {
               if (fChangeStatus != (f->IsActive() ? 1 : 0)) {
                  f->Toggle();
                  ClearViewPort();
                  SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_ITEMCLICK),
                              f->EntryId(), 0);
               }
               break;
            }
         }
      }
   } else if (fListBox->GetParent()->InheritsFrom("TGComboBoxPopup")) {
      TIter next(fList);
      while ((el = (TGFrameElement *) next())) {
         f = (TGLBEntry *) el->fFrame;
         xf0 = f->GetX();
         yf0 = f->GetY();
         xff = xf0 + f->GetWidth();
         yff = yf0 + f->GetHeight();

         activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
                        (x > xf0) && (x < xff) && (y > yf0) &&  (y < yff)  && !f->IsActive();

         if (activate)  {
            f->Activate(kTRUE);
            fLastActive = f;
            fLastActiveEl = el;
         } else {
            f->Activate(kFALSE);
         }
         if (last != fLastActive) {
            ClearViewPort();
         }
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
void TGLBContainer::OnAutoScroll()
{
   // Autoscroll while close to & beyond  The Wall

   TGFrameElement* el = 0;
   TGLBEntry *f = 0;
   Int_t yf0, yff;
   Bool_t changed = kFALSE;

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

   Window_t  dum1, dum2;
   Event_t   ev;
   ev.fType  = kButtonPress;
   Int_t     x, y;

   // Where's the cursor?
   gVirtualX->QueryPointer(fId,dum1,dum2,ev.fXRoot,ev.fYRoot,x,y,ev.fState);
   TGVScrollBar *vb = GetVScrollbar();
   if (vb && y > 0 && y < 10) {
      // scroll 1 line up
      Int_t newpos = vb->GetPosition() - 1;
      if (newpos < 0) newpos = 0;
      vb->SetPosition(newpos);
      changed = kTRUE;
   }
   else if (vb && y > (Int_t)dim.fHeight - 10 && y < (Int_t)dim.fHeight) {
      // scroll 1 line down
      Int_t newpos = vb->GetPosition() + 1;
      vb->SetPosition(newpos);
      changed = kTRUE;
   }
   if (changed && fChangeStatus >= 0) {
      pos = GetPagePosition();
      TIter next(fList);
      while ((el = (TGFrameElement *) next())) {
         f = (TGLBEntry *) el->fFrame;
         yf0 = f->GetY();
         yff = yf0 + f->GetHeight();
         if ((y + pos.fY > yf0) && (y + pos.fY < yff)) {
            if (fChangeStatus != (f->IsActive() ? 1 : 0)) {
               f->Toggle();
               ClearViewPort();
               SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_ITEMCLICK),
                           f->EntryId(), 0);
            }
            break;
         }
      }
   }
}

//______________________________________________________________________________
void TGLBContainer::ActivateItem(TGFrameElement *el)
{
   // Activate item.

   TGContainer::ActivateItem(el);
   fLastActive = (TGLBEntry *)el->fFrame;
}

//______________________________________________________________________________
Int_t TGLBContainer::GetPos(Int_t id)
{
   // Returns the position in the list box of the entry id.
   // The first position has position no 0. Returns -1 if entry id
   // is not in the list of entries.

   Int_t          pos = 0;
   TGLBEntry      *f;
   TGFrameElement *el;

   TIter next(fList);
   while ((el = (TGFrameElement *) next())) {
      f = (TGLBEntry *) el->fFrame;
      if (f->EntryId() == id)
         return pos;
      pos++;
   }

   return -1;
}


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGListBox                                                            //
//                                                                      //
// A listbox contains a container frame which is viewed through a       //
// viewport. If the container is larger than the viewport than a        //
// vertical scrollbar is added.                                         //
//                                                                      //
// Selecting an item in the listbox will generate the event:            //
// kC_COMMAND, kCM_LISTBOX, listbox id, item id.                        //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
TGListBox::TGListBox(const TGWindow *p, Int_t id,
                     UInt_t options, ULong_t back) :
   TGCompositeFrame(p, 10, 10, options, back)
{
   // Create a listbox.

   fMsgWindow = p;
   fWidgetId  = id;

   fItemVsize = 1;
   fIntegralHeight = kTRUE;

   InitListBox();
}

//______________________________________________________________________________
TGListBox::~TGListBox()
{
   // Delete a listbox widget.

   if (!MustCleanup()) {
      delete fVScrollbar;
      delete fVport;
      delete fLbc;
   }
}

//______________________________________________________________________________
void TGListBox::InitListBox()
{
   // Initiate the internal classes of a list box.

   fVport = new TGViewPort(this, 6, 6, kChildFrame | kOwnBackground, fgWhitePixel);
   fVScrollbar = new TGVScrollBar(this, kDefaultScrollBarWidth, 6);
   fLbc = new TGLBContainer(fVport, 10, 10, kVerticalFrame, fgWhitePixel);
   fLbc->fViewPort = fVport;
   fLbc->Associate(this);
   fLbc->SetListBox(this);
   SetContainer(fLbc);

   AddFrame(fVport, 0);
   AddFrame(fVScrollbar, 0);

   fVScrollbar->Associate(this);

   fVScrollbar->AddInput(kButtonPressMask | kButtonReleaseMask |
                         kPointerMotionMask);
   fLbc->RemoveInput(kPointerMotionMask);
   fLbc->AddInput(kButtonPressMask | kButtonReleaseMask | kButtonMotionMask);

   fVport->SetEditDisabled(kEditDisable | kEditDisableGrab);
   fVScrollbar->SetEditDisabled(kEditDisable | kEditDisableGrab | kEditDisableBtnEnable);
   fLbc->SetEditDisabled(kEditDisableGrab | kEditDisableBtnEnable | kEditDisableKeyEnable);
   fEditDisabled = kEditDisableLayout;

   // layout manager is not used
   delete fLayoutManager;
   fLayoutManager = 0;
}

//______________________________________________________________________________
void TGListBox::DrawBorder()
{
   // Draw borders of the list box widget.

   switch (fOptions & (kSunkenFrame | kRaisedFrame | kDoubleBorder)) {
      case kSunkenFrame | kDoubleBorder:
         gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, fWidth-2, 0);
         gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, 0, fHeight-2);
         gVirtualX->DrawLine(fId, GetBlackGC()(), 1, 1, fWidth-3, 1);
         gVirtualX->DrawLine(fId, GetBlackGC()(), 1, 1, 1, fHeight-3);

         gVirtualX->DrawLine(fId, GetHilightGC()(), 0, fHeight-1, fWidth-1, fHeight-1);
         gVirtualX->DrawLine(fId, GetHilightGC()(), fWidth-1, fHeight-1, fWidth-1, 0);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  1, fHeight-2, fWidth-2, fHeight-2);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  fWidth-2, 1, fWidth-2, fHeight-2);
         break;

      default:
         TGCompositeFrame::DrawBorder();
         break;
   }
}

//______________________________________________________________________________
void TGListBox::AddEntry(TGString *s, Int_t id)
{
   // Add entry with specified string and id to listbox. The id will be
   // used in the event processing routine when the item is selected.
   // The string will be adopted by the listbox.

   TGTextLBEntry *lbe;
   TGLayoutHints *lhints;

   lbe = new TGTextLBEntry(fLbc, s, id);
   lhints = new TGLayoutHints(kLHintsExpandX | kLHintsTop);
   fItemVsize = TMath::Max(fItemVsize, lbe->GetDefaultHeight());
   fLbc->AddEntry(lbe, lhints);
}

//______________________________________________________________________________
void TGListBox::AddEntry(const char *s, Int_t id)
{
   // Add entry with specified string and id to listbox. The id will be
   // used in the event processing routine when the item is selected.

   AddEntry(new TGString(s), id);
}

//______________________________________________________________________________
void TGListBox::AddEntry(TGLBEntry *lbe, TGLayoutHints *lhints)
{
   // Add specified TGLBEntry and TGLayoutHints to listbox. The
   // entry and layout will be adopted and later deleted by the listbox.

   fItemVsize = TMath::Max(fItemVsize, lbe->GetDefaultHeight());
   fLbc->AddEntry(lbe, lhints);
}

//______________________________________________________________________________
void TGListBox::AddEntrySort(TGString *s, Int_t id)
{
   // Add entry with specified string and id to listbox sorted by increasing id.
   // This sorting works proberly only if EntrySort functions are used to add
   // entries without mixing them with other add or insert functions.  The id will be
   // used in the event processing routine when the item is selected.
   // The string will be adopted by the listbox.

   TGTextLBEntry *lbe;
   TGLayoutHints *lhints;

   lbe = new TGTextLBEntry(fLbc, s, id);
   lhints = new TGLayoutHints(kLHintsExpandX | kLHintsTop);
   fItemVsize = TMath::Max(fItemVsize, lbe->GetDefaultHeight());
   fLbc->AddEntrySort(lbe, lhints);
}

//______________________________________________________________________________
void TGListBox::AddEntrySort(const char *s, Int_t id)
{
   // Add entry with specified string and id to listbox sorted by increasing id.
   // This sorting works proberly only if EntrySort functions are used to add
   // entries without mixing them with other add or insert functions. The id will be
   // used in the event processing routine when the item is selected.

   AddEntrySort(new TGString(s), id);
}

//______________________________________________________________________________
void TGListBox::AddEntrySort(TGLBEntry *lbe, TGLayoutHints *lhints)
{
   // Add specified TGLBEntry and TGLayoutHints to listbox sorted by increasing id.
   // This sorting works proberly only if EntrySort functions are used to add
   // entries without mixing them with other add or insert functions. The
   // entry and layout will be adopted and later deleted by the listbox.

   fItemVsize = TMath::Max(fItemVsize, lbe->GetDefaultHeight());
   fLbc->AddEntrySort(lbe, lhints);
}

//______________________________________________________________________________
void TGListBox::InsertEntry(TGString *s, Int_t id, Int_t afterID)
{
   // Insert entry with specified string and id behind the entry with afterID.
   // The string will be adopted and later deleted by the listbox.

   TGTextLBEntry *lbe;
   TGLayoutHints *lhints;

   lbe = new TGTextLBEntry(fLbc, s, id);
   lhints = new TGLayoutHints(kLHintsExpandX | kLHintsTop);
   fItemVsize = TMath::Max(fItemVsize, lbe->GetDefaultHeight());
   fLbc->InsertEntry(lbe, lhints, afterID);
}

//______________________________________________________________________________
void TGListBox::InsertEntry(const char *s, Int_t id, Int_t afterID)
{
   // Insert entry with specified string and id behind the entry with afterID.

   InsertEntry(new TGString(s), id, afterID);
}

//______________________________________________________________________________
void TGListBox::NewEntry(const char *s)
{
   // method used to add entry via context menu

   Int_t selected = fLbc->GetSelected();

   // no selected entry or the last entry
   if ((selected < 0) || (selected == GetNumberOfEntries())) {
      AddEntry(s, GetNumberOfEntries()+1);
   } else {
      InsertEntry(s, GetNumberOfEntries()+1, selected);
   }
   Layout();
}

//______________________________________________________________________________
void TGListBox:: RemoveEntry(Int_t id)
{
   // remove entry with id.
   // If id = -1 - the selected entry/entries is/are removed.
   //

   if (id >= 0) {
      fLbc->RemoveEntry(id);
      Layout();
      return;
   }
   if (!fLbc->GetMultipleSelections()) {
      fLbc->RemoveEntry(fLbc->GetSelected());
      Layout();
      return;
   }
   TList li;
   fLbc->GetSelectedEntries(&li);
   TGLBEntry *e;
   TIter next(&li);

   while ((e = (TGLBEntry*)next())) {
      fLbc->RemoveEntry(e->EntryId());
   }
   Layout();
}

//______________________________________________________________________________
void TGListBox::RemoveAll()
{
   // Remove all entries.

   fLbc->RemoveAll();
   Layout();
}

//______________________________________________________________________________
void TGListBox::RemoveEntries(Int_t from_ID, Int_t to_ID)
{
   // Remove a range of entries defined by from_ID and to_ID.

   fLbc->RemoveEntries(from_ID, to_ID);
   Layout();
}

//______________________________________________________________________________
void TGListBox::InsertEntry(TGLBEntry *lbe, TGLayoutHints *lhints, int afterID)
{
   // Insert the specified TGLBEntry and layout hints behind afterID.
   // The entry and layout will be adopted and later deleted by the listbox.

   fItemVsize = TMath::Max(fItemVsize, lbe->GetDefaultHeight());
   fLbc->InsertEntry(lbe, lhints, afterID);
}

//______________________________________________________________________________
TGLBEntry *TGListBox::GetEntry(Int_t id) const
{
   // Returns list box entry with specified id.

   TIter next(fLbc->GetList());
   TGFrameElement *el;

   while ((el = (TGFrameElement *)next())) {
      TGLBEntry *lbe = (TGLBEntry *)el->fFrame;
      if (lbe->EntryId() == id) return lbe;
   }
   return 0;
}

//______________________________________________________________________________
void TGListBox::SetTopEntry(Int_t id)
{
   // Scroll the entry with id to the top of the listbox.

   Int_t idPos;

   idPos = fLbc->GetPos(id);

   // id not found in list of entries
   if (idPos < 0)
      return;

   // call layout to define the range of the scroll bars
   Layout();

   // SetPosition will send a message which will handled by
   // the function TGListBox::ProcessMessage. Now ProcessMessage will
   // set the viewport. SetPosition also will check that the idPos is
   // not out of range.
   fVScrollbar->SetPosition(idPos);
}

//______________________________________________________________________________
void TGListBox::Resize(UInt_t w, UInt_t h)
{
   // Resize the listbox widget. If fIntegralHeight is true make the height
   // an integral number of the maximum height of a single entry.

   if (fIntegralHeight)
      h = TMath::Max(fItemVsize, ((h - (fBorderWidth << 1)) / fItemVsize) * fItemVsize)
                     + (fBorderWidth << 1);

   TGCompositeFrame::Resize(w, h);
   DoRedraw();
}

//______________________________________________________________________________
void TGListBox::MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h)
{
   // Move and resize the listbox widget.

   if (fIntegralHeight)
      h = TMath::Max(fItemVsize, ((h - (fBorderWidth << 1)) / fItemVsize) * fItemVsize)
                     + (fBorderWidth << 1);
   TGCompositeFrame::MoveResize(x, y, w, h);
   DoRedraw();
}

//______________________________________________________________________________
TGDimension TGListBox::GetDefaultSize() const
{
   // Return default size of listbox widget.

   UInt_t h;

   if (fIntegralHeight)
      h = TMath::Max(fItemVsize, ((fHeight - (fBorderWidth << 1)) / fItemVsize) * fItemVsize)
                     + (fBorderWidth << 1);
   else
      h = fHeight;

   return TGDimension(fWidth, h);
}

//______________________________________________________________________________
void TGListBox::Layout()
{
   // Layout the listbox components.

   TGFrame *container;
   UInt_t   cw, ch, tch;
   Bool_t   need_vsb;

   need_vsb = kFALSE;

   container = fVport->GetContainer();

   // test whether we need vertical scrollbar or not

   cw = fWidth - (fBorderWidth << 1);
   ch = fHeight - (fBorderWidth << 1);

   container->SetWidth(cw);
   container->SetHeight(ch);

   if (container->GetDefaultHeight() > ch) {
      need_vsb = kTRUE;
      cw -= fVScrollbar->GetDefaultWidth();
      if ((Int_t) cw < 0) {
         Warning("Layout", "width would become too small, setting to 10");
         cw = 10;
      }
      container->SetWidth(cw);
   }

   fVport->MoveResize(fBorderWidth, fBorderWidth, cw, ch);
   container->Layout();

   tch = TMath::Max(container->GetDefaultHeight(), ch);
   container->SetHeight(0); // force a resize in TGFrame::Resize
   container->Resize(cw, tch);
   //fVport->SetPos(0, 0);

   if (need_vsb) {
      fVScrollbar->MoveResize(cw+fBorderWidth, fBorderWidth, fVScrollbar->GetDefaultWidth(), ch);
      fVScrollbar->MapWindow();
   } else {
      fVScrollbar->UnmapWindow();
      fVScrollbar->SetPosition(0);
   }

   fVScrollbar->SetRange((Int_t)TMath::Ceil((Double_t)container->GetHeight()/(Double_t)fItemVsize),
                         fVport->GetHeight()/fItemVsize);
   //fClient->NeedRedraw(container);
   ((TGContainer *)container)->ClearViewPort();
}

//______________________________________________________________________________
void TGListBox::SortByName(Bool_t ascend)
{
   // Sort entries by name

   fLbc->GetList()->Sort(ascend);
   Layout();
   fLbc->ClearViewPort();
}

//______________________________________________________________________________
Int_t TGListBox::GetSelected() const
{
   // Return id of selected listbox item.

   TGLBContainer *ct = (TGLBContainer *) fVport->GetContainer();
   return ct->GetSelected();
}

//______________________________________________________________________________
void TGListBox::GetSelectedEntries(TList *selected)
{
   // Adds all selected entries (TGLBEntry) of the list box into
   // the list selected.

   fLbc->GetSelectedEntries(selected);
}

//______________________________________________________________________________
void TGListBox::ChangeBackground(Pixel_t back)
{
   // Change background to all entries

   fBackground = back;

   TIter next(fLbc->GetList());
   TGFrameElement *el;

   while ((el = (TGFrameElement *)next())) {
      TGLBEntry *lbe = (TGLBEntry *)el->fFrame;
      lbe->SetBackgroundColor(back);
   }
   fLbc->ClearViewPort();
}

//______________________________________________________________________________
Bool_t TGListBox::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Process messages generated by the listbox container and forward
   // messages to the listbox message handling window.

   switch (GET_MSG(msg)) {
      case kC_VSCROLL:
         switch (GET_SUBMSG(msg)) {
            case kSB_SLIDERTRACK:
            case kSB_SLIDERPOS:
               fVport->SetVPos(Int_t(-parm1 * fItemVsize));
               break;
         }
         break;

      case kC_CONTAINER:
         switch (GET_SUBMSG(msg)) {
            case kCT_ITEMCLICK:
               {
                  SendMessage(fMsgWindow, MK_MSG(kC_COMMAND, kCM_LISTBOX),
                              fWidgetId, parm1);
                  if (GetMultipleSelections()) SelectionChanged();
                  TGLBEntry *entry = GetSelectedEntry();
                  if (entry) {
                     if (entry->InheritsFrom(TGTextLBEntry::Class())) {
                        const char *text;
                        text = ((TGTextLBEntry*)entry)->GetText()->GetString();
                        Selected(text);
                     }
                     Selected(fWidgetId, (Int_t) parm1);
                     Selected((Int_t) parm1);
                  }
               }
               break;
            case kCT_ITEMDBLCLICK:
               if (!GetMultipleSelections()) {
                  TGLBEntry *entry = GetSelectedEntry();
                  if (entry) {
                     if (entry->InheritsFrom(TGTextLBEntry::Class())) {
                        const char *text;
                        text = ((TGTextLBEntry*)entry)->GetText()->GetString();
                        DoubleClicked(text);
                     }
                     DoubleClicked(fWidgetId, (Int_t) parm1);
                     DoubleClicked((Int_t) parm1);
                  }
               }
               break;
         }
         break;

      default:
         break;

   }
   return kTRUE;
}

//______________________________________________________________________________
void TGListBox::Selected(Int_t widgetId, Int_t id)
{
   // Emit Selected signal with list box id and entry id.

   Long_t args[2];

   args[0] = widgetId;
   args[1] = id;

   Emit("Selected(Int_t,Int_t)", args);
}

//______________________________________________________________________________
void TGListBox::DoubleClicked(Int_t widgetId, Int_t id)
{
   // Emit DoubleClicked signal with list box id and entry id.

   Long_t args[2];

   args[0] = widgetId;
   args[1] = id;

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

//______________________________________________________________________________
TGLBEntry *TGListBox::FindEntry(const char *name) const
{
   // Find entry by name.

   TList *list = fLbc->GetList();
   TGFrameElement *el = (TGFrameElement *)list->First();
   while (el) {
      if (el->fFrame->GetTitle() == TString(name))
         return (TGLBEntry *)el->fFrame;
      el = (TGFrameElement *)list->After(el);
   }
   return 0;
}

//______________________________________________________________________________
void TGListBox::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
{
    // Save a list box widget as a C++ statement(s) on output stream out.

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

   out << std::endl << "   // list box" << std::endl;

   out<<"   TGListBox *";
   out << GetName() << " = new TGListBox(" << fParent->GetName();

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

   if (!fLbc->GetList()) return;

   TGFrameElement *el;
   TIter next(fLbc->GetList());

   while ((el = (TGFrameElement *) next())) {
      out << "   " << GetName() << "->AddEntry(";
      el->fFrame->SavePrimitive(out, option);
      out << ");"<< std::endl;
   }
   out << "   " << GetName() << "->Resize(" << GetWidth() << "," << GetHeight()
       << ");" << std::endl;
}

//______________________________________________________________________________
void TGTextLBEntry::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
{
   // Save a list box entry widget as a C++ statement(s) on output stream out.

   TString content = GetText()->GetString();
   content.ReplaceAll('\\', "\\\\");
   content.ReplaceAll("\"", "\\\"");
   char quote = '"';
   out << quote << content << quote << "," << EntryId();
}
 TGListBox.cxx:1
 TGListBox.cxx:2
 TGListBox.cxx:3
 TGListBox.cxx:4
 TGListBox.cxx:5
 TGListBox.cxx:6
 TGListBox.cxx:7
 TGListBox.cxx:8
 TGListBox.cxx:9
 TGListBox.cxx:10
 TGListBox.cxx:11
 TGListBox.cxx:12
 TGListBox.cxx:13
 TGListBox.cxx:14
 TGListBox.cxx:15
 TGListBox.cxx:16
 TGListBox.cxx:17
 TGListBox.cxx:18
 TGListBox.cxx:19
 TGListBox.cxx:20
 TGListBox.cxx:21
 TGListBox.cxx:22
 TGListBox.cxx:23
 TGListBox.cxx:24
 TGListBox.cxx:25
 TGListBox.cxx:26
 TGListBox.cxx:27
 TGListBox.cxx:28
 TGListBox.cxx:29
 TGListBox.cxx:30
 TGListBox.cxx:31
 TGListBox.cxx:32
 TGListBox.cxx:33
 TGListBox.cxx:34
 TGListBox.cxx:35
 TGListBox.cxx:36
 TGListBox.cxx:37
 TGListBox.cxx:38
 TGListBox.cxx:39
 TGListBox.cxx:40
 TGListBox.cxx:41
 TGListBox.cxx:42
 TGListBox.cxx:43
 TGListBox.cxx:44
 TGListBox.cxx:45
 TGListBox.cxx:46
 TGListBox.cxx:47
 TGListBox.cxx:48
 TGListBox.cxx:49
 TGListBox.cxx:50
 TGListBox.cxx:51
 TGListBox.cxx:52
 TGListBox.cxx:53
 TGListBox.cxx:54
 TGListBox.cxx:55
 TGListBox.cxx:56
 TGListBox.cxx:57
 TGListBox.cxx:58
 TGListBox.cxx:59
 TGListBox.cxx:60
 TGListBox.cxx:61
 TGListBox.cxx:62
 TGListBox.cxx:63
 TGListBox.cxx:64
 TGListBox.cxx:65
 TGListBox.cxx:66
 TGListBox.cxx:67
 TGListBox.cxx:68
 TGListBox.cxx:69
 TGListBox.cxx:70
 TGListBox.cxx:71
 TGListBox.cxx:72
 TGListBox.cxx:73
 TGListBox.cxx:74
 TGListBox.cxx:75
 TGListBox.cxx:76
 TGListBox.cxx:77
 TGListBox.cxx:78
 TGListBox.cxx:79
 TGListBox.cxx:80
 TGListBox.cxx:81
 TGListBox.cxx:82
 TGListBox.cxx:83
 TGListBox.cxx:84
 TGListBox.cxx:85
 TGListBox.cxx:86
 TGListBox.cxx:87
 TGListBox.cxx:88
 TGListBox.cxx:89
 TGListBox.cxx:90
 TGListBox.cxx:91
 TGListBox.cxx:92
 TGListBox.cxx:93
 TGListBox.cxx:94
 TGListBox.cxx:95
 TGListBox.cxx:96
 TGListBox.cxx:97
 TGListBox.cxx:98
 TGListBox.cxx:99
 TGListBox.cxx:100
 TGListBox.cxx:101
 TGListBox.cxx:102
 TGListBox.cxx:103
 TGListBox.cxx:104
 TGListBox.cxx:105
 TGListBox.cxx:106
 TGListBox.cxx:107
 TGListBox.cxx:108
 TGListBox.cxx:109
 TGListBox.cxx:110
 TGListBox.cxx:111
 TGListBox.cxx:112
 TGListBox.cxx:113
 TGListBox.cxx:114
 TGListBox.cxx:115
 TGListBox.cxx:116
 TGListBox.cxx:117
 TGListBox.cxx:118
 TGListBox.cxx:119
 TGListBox.cxx:120
 TGListBox.cxx:121
 TGListBox.cxx:122
 TGListBox.cxx:123
 TGListBox.cxx:124
 TGListBox.cxx:125
 TGListBox.cxx:126
 TGListBox.cxx:127
 TGListBox.cxx:128
 TGListBox.cxx:129
 TGListBox.cxx:130
 TGListBox.cxx:131
 TGListBox.cxx:132
 TGListBox.cxx:133
 TGListBox.cxx:134
 TGListBox.cxx:135
 TGListBox.cxx:136
 TGListBox.cxx:137
 TGListBox.cxx:138
 TGListBox.cxx:139
 TGListBox.cxx:140
 TGListBox.cxx:141
 TGListBox.cxx:142
 TGListBox.cxx:143
 TGListBox.cxx:144
 TGListBox.cxx:145
 TGListBox.cxx:146
 TGListBox.cxx:147
 TGListBox.cxx:148
 TGListBox.cxx:149
 TGListBox.cxx:150
 TGListBox.cxx:151
 TGListBox.cxx:152
 TGListBox.cxx:153
 TGListBox.cxx:154
 TGListBox.cxx:155
 TGListBox.cxx:156
 TGListBox.cxx:157
 TGListBox.cxx:158
 TGListBox.cxx:159
 TGListBox.cxx:160
 TGListBox.cxx:161
 TGListBox.cxx:162
 TGListBox.cxx:163
 TGListBox.cxx:164
 TGListBox.cxx:165
 TGListBox.cxx:166
 TGListBox.cxx:167
 TGListBox.cxx:168
 TGListBox.cxx:169
 TGListBox.cxx:170
 TGListBox.cxx:171
 TGListBox.cxx:172
 TGListBox.cxx:173
 TGListBox.cxx:174
 TGListBox.cxx:175
 TGListBox.cxx:176
 TGListBox.cxx:177
 TGListBox.cxx:178
 TGListBox.cxx:179
 TGListBox.cxx:180
 TGListBox.cxx:181
 TGListBox.cxx:182
 TGListBox.cxx:183
 TGListBox.cxx:184
 TGListBox.cxx:185
 TGListBox.cxx:186
 TGListBox.cxx:187
 TGListBox.cxx:188
 TGListBox.cxx:189
 TGListBox.cxx:190
 TGListBox.cxx:191
 TGListBox.cxx:192
 TGListBox.cxx:193
 TGListBox.cxx:194
 TGListBox.cxx:195
 TGListBox.cxx:196
 TGListBox.cxx:197
 TGListBox.cxx:198
 TGListBox.cxx:199
 TGListBox.cxx:200
 TGListBox.cxx:201
 TGListBox.cxx:202
 TGListBox.cxx:203
 TGListBox.cxx:204
 TGListBox.cxx:205
 TGListBox.cxx:206
 TGListBox.cxx:207
 TGListBox.cxx:208
 TGListBox.cxx:209
 TGListBox.cxx:210
 TGListBox.cxx:211
 TGListBox.cxx:212
 TGListBox.cxx:213
 TGListBox.cxx:214
 TGListBox.cxx:215
 TGListBox.cxx:216
 TGListBox.cxx:217
 TGListBox.cxx:218
 TGListBox.cxx:219
 TGListBox.cxx:220
 TGListBox.cxx:221
 TGListBox.cxx:222
 TGListBox.cxx:223
 TGListBox.cxx:224
 TGListBox.cxx:225
 TGListBox.cxx:226
 TGListBox.cxx:227
 TGListBox.cxx:228
 TGListBox.cxx:229
 TGListBox.cxx:230
 TGListBox.cxx:231
 TGListBox.cxx:232
 TGListBox.cxx:233
 TGListBox.cxx:234
 TGListBox.cxx:235
 TGListBox.cxx:236
 TGListBox.cxx:237
 TGListBox.cxx:238
 TGListBox.cxx:239
 TGListBox.cxx:240
 TGListBox.cxx:241
 TGListBox.cxx:242
 TGListBox.cxx:243
 TGListBox.cxx:244
 TGListBox.cxx:245
 TGListBox.cxx:246
 TGListBox.cxx:247
 TGListBox.cxx:248
 TGListBox.cxx:249
 TGListBox.cxx:250
 TGListBox.cxx:251
 TGListBox.cxx:252
 TGListBox.cxx:253
 TGListBox.cxx:254
 TGListBox.cxx:255
 TGListBox.cxx:256
 TGListBox.cxx:257
 TGListBox.cxx:258
 TGListBox.cxx:259
 TGListBox.cxx:260
 TGListBox.cxx:261
 TGListBox.cxx:262
 TGListBox.cxx:263
 TGListBox.cxx:264
 TGListBox.cxx:265
 TGListBox.cxx:266
 TGListBox.cxx:267
 TGListBox.cxx:268
 TGListBox.cxx:269
 TGListBox.cxx:270
 TGListBox.cxx:271
 TGListBox.cxx:272
 TGListBox.cxx:273
 TGListBox.cxx:274
 TGListBox.cxx:275
 TGListBox.cxx:276
 TGListBox.cxx:277
 TGListBox.cxx:278
 TGListBox.cxx:279
 TGListBox.cxx:280
 TGListBox.cxx:281
 TGListBox.cxx:282
 TGListBox.cxx:283
 TGListBox.cxx:284
 TGListBox.cxx:285
 TGListBox.cxx:286
 TGListBox.cxx:287
 TGListBox.cxx:288
 TGListBox.cxx:289
 TGListBox.cxx:290
 TGListBox.cxx:291
 TGListBox.cxx:292
 TGListBox.cxx:293
 TGListBox.cxx:294
 TGListBox.cxx:295
 TGListBox.cxx:296
 TGListBox.cxx:297
 TGListBox.cxx:298
 TGListBox.cxx:299
 TGListBox.cxx:300
 TGListBox.cxx:301
 TGListBox.cxx:302
 TGListBox.cxx:303
 TGListBox.cxx:304
 TGListBox.cxx:305
 TGListBox.cxx:306
 TGListBox.cxx:307
 TGListBox.cxx:308
 TGListBox.cxx:309
 TGListBox.cxx:310
 TGListBox.cxx:311
 TGListBox.cxx:312
 TGListBox.cxx:313
 TGListBox.cxx:314
 TGListBox.cxx:315
 TGListBox.cxx:316
 TGListBox.cxx:317
 TGListBox.cxx:318
 TGListBox.cxx:319
 TGListBox.cxx:320
 TGListBox.cxx:321
 TGListBox.cxx:322
 TGListBox.cxx:323
 TGListBox.cxx:324
 TGListBox.cxx:325
 TGListBox.cxx:326
 TGListBox.cxx:327
 TGListBox.cxx:328
 TGListBox.cxx:329
 TGListBox.cxx:330
 TGListBox.cxx:331
 TGListBox.cxx:332
 TGListBox.cxx:333
 TGListBox.cxx:334
 TGListBox.cxx:335
 TGListBox.cxx:336
 TGListBox.cxx:337
 TGListBox.cxx:338
 TGListBox.cxx:339
 TGListBox.cxx:340
 TGListBox.cxx:341
 TGListBox.cxx:342
 TGListBox.cxx:343
 TGListBox.cxx:344
 TGListBox.cxx:345
 TGListBox.cxx:346
 TGListBox.cxx:347
 TGListBox.cxx:348
 TGListBox.cxx:349
 TGListBox.cxx:350
 TGListBox.cxx:351
 TGListBox.cxx:352
 TGListBox.cxx:353
 TGListBox.cxx:354
 TGListBox.cxx:355
 TGListBox.cxx:356
 TGListBox.cxx:357
 TGListBox.cxx:358
 TGListBox.cxx:359
 TGListBox.cxx:360
 TGListBox.cxx:361
 TGListBox.cxx:362
 TGListBox.cxx:363
 TGListBox.cxx:364
 TGListBox.cxx:365
 TGListBox.cxx:366
 TGListBox.cxx:367
 TGListBox.cxx:368
 TGListBox.cxx:369
 TGListBox.cxx:370
 TGListBox.cxx:371
 TGListBox.cxx:372
 TGListBox.cxx:373
 TGListBox.cxx:374
 TGListBox.cxx:375
 TGListBox.cxx:376
 TGListBox.cxx:377
 TGListBox.cxx:378
 TGListBox.cxx:379
 TGListBox.cxx:380
 TGListBox.cxx:381
 TGListBox.cxx:382
 TGListBox.cxx:383
 TGListBox.cxx:384
 TGListBox.cxx:385
 TGListBox.cxx:386
 TGListBox.cxx:387
 TGListBox.cxx:388
 TGListBox.cxx:389
 TGListBox.cxx:390
 TGListBox.cxx:391
 TGListBox.cxx:392
 TGListBox.cxx:393
 TGListBox.cxx:394
 TGListBox.cxx:395
 TGListBox.cxx:396
 TGListBox.cxx:397
 TGListBox.cxx:398
 TGListBox.cxx:399
 TGListBox.cxx:400
 TGListBox.cxx:401
 TGListBox.cxx:402
 TGListBox.cxx:403
 TGListBox.cxx:404
 TGListBox.cxx:405
 TGListBox.cxx:406
 TGListBox.cxx:407
 TGListBox.cxx:408
 TGListBox.cxx:409
 TGListBox.cxx:410
 TGListBox.cxx:411
 TGListBox.cxx:412
 TGListBox.cxx:413
 TGListBox.cxx:414
 TGListBox.cxx:415
 TGListBox.cxx:416
 TGListBox.cxx:417
 TGListBox.cxx:418
 TGListBox.cxx:419
 TGListBox.cxx:420
 TGListBox.cxx:421
 TGListBox.cxx:422
 TGListBox.cxx:423
 TGListBox.cxx:424
 TGListBox.cxx:425
 TGListBox.cxx:426
 TGListBox.cxx:427
 TGListBox.cxx:428
 TGListBox.cxx:429
 TGListBox.cxx:430
 TGListBox.cxx:431
 TGListBox.cxx:432
 TGListBox.cxx:433
 TGListBox.cxx:434
 TGListBox.cxx:435
 TGListBox.cxx:436
 TGListBox.cxx:437
 TGListBox.cxx:438
 TGListBox.cxx:439
 TGListBox.cxx:440
 TGListBox.cxx:441
 TGListBox.cxx:442
 TGListBox.cxx:443
 TGListBox.cxx:444
 TGListBox.cxx:445
 TGListBox.cxx:446
 TGListBox.cxx:447
 TGListBox.cxx:448
 TGListBox.cxx:449
 TGListBox.cxx:450
 TGListBox.cxx:451
 TGListBox.cxx:452
 TGListBox.cxx:453
 TGListBox.cxx:454
 TGListBox.cxx:455
 TGListBox.cxx:456
 TGListBox.cxx:457
 TGListBox.cxx:458
 TGListBox.cxx:459
 TGListBox.cxx:460
 TGListBox.cxx:461
 TGListBox.cxx:462
 TGListBox.cxx:463
 TGListBox.cxx:464
 TGListBox.cxx:465
 TGListBox.cxx:466
 TGListBox.cxx:467
 TGListBox.cxx:468
 TGListBox.cxx:469
 TGListBox.cxx:470
 TGListBox.cxx:471
 TGListBox.cxx:472
 TGListBox.cxx:473
 TGListBox.cxx:474
 TGListBox.cxx:475
 TGListBox.cxx:476
 TGListBox.cxx:477
 TGListBox.cxx:478
 TGListBox.cxx:479
 TGListBox.cxx:480
 TGListBox.cxx:481
 TGListBox.cxx:482
 TGListBox.cxx:483
 TGListBox.cxx:484
 TGListBox.cxx:485
 TGListBox.cxx:486
 TGListBox.cxx:487
 TGListBox.cxx:488
 TGListBox.cxx:489
 TGListBox.cxx:490
 TGListBox.cxx:491
 TGListBox.cxx:492
 TGListBox.cxx:493
 TGListBox.cxx:494
 TGListBox.cxx:495
 TGListBox.cxx:496
 TGListBox.cxx:497
 TGListBox.cxx:498
 TGListBox.cxx:499
 TGListBox.cxx:500
 TGListBox.cxx:501
 TGListBox.cxx:502
 TGListBox.cxx:503
 TGListBox.cxx:504
 TGListBox.cxx:505
 TGListBox.cxx:506
 TGListBox.cxx:507
 TGListBox.cxx:508
 TGListBox.cxx:509
 TGListBox.cxx:510
 TGListBox.cxx:511
 TGListBox.cxx:512
 TGListBox.cxx:513
 TGListBox.cxx:514
 TGListBox.cxx:515
 TGListBox.cxx:516
 TGListBox.cxx:517
 TGListBox.cxx:518
 TGListBox.cxx:519
 TGListBox.cxx:520
 TGListBox.cxx:521
 TGListBox.cxx:522
 TGListBox.cxx:523
 TGListBox.cxx:524
 TGListBox.cxx:525
 TGListBox.cxx:526
 TGListBox.cxx:527
 TGListBox.cxx:528
 TGListBox.cxx:529
 TGListBox.cxx:530
 TGListBox.cxx:531
 TGListBox.cxx:532
 TGListBox.cxx:533
 TGListBox.cxx:534
 TGListBox.cxx:535
 TGListBox.cxx:536
 TGListBox.cxx:537
 TGListBox.cxx:538
 TGListBox.cxx:539
 TGListBox.cxx:540
 TGListBox.cxx:541
 TGListBox.cxx:542
 TGListBox.cxx:543
 TGListBox.cxx:544
 TGListBox.cxx:545
 TGListBox.cxx:546
 TGListBox.cxx:547
 TGListBox.cxx:548
 TGListBox.cxx:549
 TGListBox.cxx:550
 TGListBox.cxx:551
 TGListBox.cxx:552
 TGListBox.cxx:553
 TGListBox.cxx:554
 TGListBox.cxx:555
 TGListBox.cxx:556
 TGListBox.cxx:557
 TGListBox.cxx:558
 TGListBox.cxx:559
 TGListBox.cxx:560
 TGListBox.cxx:561
 TGListBox.cxx:562
 TGListBox.cxx:563
 TGListBox.cxx:564
 TGListBox.cxx:565
 TGListBox.cxx:566
 TGListBox.cxx:567
 TGListBox.cxx:568
 TGListBox.cxx:569
 TGListBox.cxx:570
 TGListBox.cxx:571
 TGListBox.cxx:572
 TGListBox.cxx:573
 TGListBox.cxx:574
 TGListBox.cxx:575
 TGListBox.cxx:576
 TGListBox.cxx:577
 TGListBox.cxx:578
 TGListBox.cxx:579
 TGListBox.cxx:580
 TGListBox.cxx:581
 TGListBox.cxx:582
 TGListBox.cxx:583
 TGListBox.cxx:584
 TGListBox.cxx:585
 TGListBox.cxx:586
 TGListBox.cxx:587
 TGListBox.cxx:588
 TGListBox.cxx:589
 TGListBox.cxx:590
 TGListBox.cxx:591
 TGListBox.cxx:592
 TGListBox.cxx:593
 TGListBox.cxx:594
 TGListBox.cxx:595
 TGListBox.cxx:596
 TGListBox.cxx:597
 TGListBox.cxx:598
 TGListBox.cxx:599
 TGListBox.cxx:600
 TGListBox.cxx:601
 TGListBox.cxx:602
 TGListBox.cxx:603
 TGListBox.cxx:604
 TGListBox.cxx:605
 TGListBox.cxx:606
 TGListBox.cxx:607
 TGListBox.cxx:608
 TGListBox.cxx:609
 TGListBox.cxx:610
 TGListBox.cxx:611
 TGListBox.cxx:612
 TGListBox.cxx:613
 TGListBox.cxx:614
 TGListBox.cxx:615
 TGListBox.cxx:616
 TGListBox.cxx:617
 TGListBox.cxx:618
 TGListBox.cxx:619
 TGListBox.cxx:620
 TGListBox.cxx:621
 TGListBox.cxx:622
 TGListBox.cxx:623
 TGListBox.cxx:624
 TGListBox.cxx:625
 TGListBox.cxx:626
 TGListBox.cxx:627
 TGListBox.cxx:628
 TGListBox.cxx:629
 TGListBox.cxx:630
 TGListBox.cxx:631
 TGListBox.cxx:632
 TGListBox.cxx:633
 TGListBox.cxx:634
 TGListBox.cxx:635
 TGListBox.cxx:636
 TGListBox.cxx:637
 TGListBox.cxx:638
 TGListBox.cxx:639
 TGListBox.cxx:640
 TGListBox.cxx:641
 TGListBox.cxx:642
 TGListBox.cxx:643
 TGListBox.cxx:644
 TGListBox.cxx:645
 TGListBox.cxx:646
 TGListBox.cxx:647
 TGListBox.cxx:648
 TGListBox.cxx:649
 TGListBox.cxx:650
 TGListBox.cxx:651
 TGListBox.cxx:652
 TGListBox.cxx:653
 TGListBox.cxx:654
 TGListBox.cxx:655
 TGListBox.cxx:656
 TGListBox.cxx:657
 TGListBox.cxx:658
 TGListBox.cxx:659
 TGListBox.cxx:660
 TGListBox.cxx:661
 TGListBox.cxx:662
 TGListBox.cxx:663
 TGListBox.cxx:664
 TGListBox.cxx:665
 TGListBox.cxx:666
 TGListBox.cxx:667
 TGListBox.cxx:668
 TGListBox.cxx:669
 TGListBox.cxx:670
 TGListBox.cxx:671
 TGListBox.cxx:672
 TGListBox.cxx:673
 TGListBox.cxx:674
 TGListBox.cxx:675
 TGListBox.cxx:676
 TGListBox.cxx:677
 TGListBox.cxx:678
 TGListBox.cxx:679
 TGListBox.cxx:680
 TGListBox.cxx:681
 TGListBox.cxx:682
 TGListBox.cxx:683
 TGListBox.cxx:684
 TGListBox.cxx:685
 TGListBox.cxx:686
 TGListBox.cxx:687
 TGListBox.cxx:688
 TGListBox.cxx:689
 TGListBox.cxx:690
 TGListBox.cxx:691
 TGListBox.cxx:692
 TGListBox.cxx:693
 TGListBox.cxx:694
 TGListBox.cxx:695
 TGListBox.cxx:696
 TGListBox.cxx:697
 TGListBox.cxx:698
 TGListBox.cxx:699
 TGListBox.cxx:700
 TGListBox.cxx:701
 TGListBox.cxx:702
 TGListBox.cxx:703
 TGListBox.cxx:704
 TGListBox.cxx:705
 TGListBox.cxx:706
 TGListBox.cxx:707
 TGListBox.cxx:708
 TGListBox.cxx:709
 TGListBox.cxx:710
 TGListBox.cxx:711
 TGListBox.cxx:712
 TGListBox.cxx:713
 TGListBox.cxx:714
 TGListBox.cxx:715
 TGListBox.cxx:716
 TGListBox.cxx:717
 TGListBox.cxx:718
 TGListBox.cxx:719
 TGListBox.cxx:720
 TGListBox.cxx:721
 TGListBox.cxx:722
 TGListBox.cxx:723
 TGListBox.cxx:724
 TGListBox.cxx:725
 TGListBox.cxx:726
 TGListBox.cxx:727
 TGListBox.cxx:728
 TGListBox.cxx:729
 TGListBox.cxx:730
 TGListBox.cxx:731
 TGListBox.cxx:732
 TGListBox.cxx:733
 TGListBox.cxx:734
 TGListBox.cxx:735
 TGListBox.cxx:736
 TGListBox.cxx:737
 TGListBox.cxx:738
 TGListBox.cxx:739
 TGListBox.cxx:740
 TGListBox.cxx:741
 TGListBox.cxx:742
 TGListBox.cxx:743
 TGListBox.cxx:744
 TGListBox.cxx:745
 TGListBox.cxx:746
 TGListBox.cxx:747
 TGListBox.cxx:748
 TGListBox.cxx:749
 TGListBox.cxx:750
 TGListBox.cxx:751
 TGListBox.cxx:752
 TGListBox.cxx:753
 TGListBox.cxx:754
 TGListBox.cxx:755
 TGListBox.cxx:756
 TGListBox.cxx:757
 TGListBox.cxx:758
 TGListBox.cxx:759
 TGListBox.cxx:760
 TGListBox.cxx:761
 TGListBox.cxx:762
 TGListBox.cxx:763
 TGListBox.cxx:764
 TGListBox.cxx:765
 TGListBox.cxx:766
 TGListBox.cxx:767
 TGListBox.cxx:768
 TGListBox.cxx:769
 TGListBox.cxx:770
 TGListBox.cxx:771
 TGListBox.cxx:772
 TGListBox.cxx:773
 TGListBox.cxx:774
 TGListBox.cxx:775
 TGListBox.cxx:776
 TGListBox.cxx:777
 TGListBox.cxx:778
 TGListBox.cxx:779
 TGListBox.cxx:780
 TGListBox.cxx:781
 TGListBox.cxx:782
 TGListBox.cxx:783
 TGListBox.cxx:784
 TGListBox.cxx:785
 TGListBox.cxx:786
 TGListBox.cxx:787
 TGListBox.cxx:788
 TGListBox.cxx:789
 TGListBox.cxx:790
 TGListBox.cxx:791
 TGListBox.cxx:792
 TGListBox.cxx:793
 TGListBox.cxx:794
 TGListBox.cxx:795
 TGListBox.cxx:796
 TGListBox.cxx:797
 TGListBox.cxx:798
 TGListBox.cxx:799
 TGListBox.cxx:800
 TGListBox.cxx:801
 TGListBox.cxx:802
 TGListBox.cxx:803
 TGListBox.cxx:804
 TGListBox.cxx:805
 TGListBox.cxx:806
 TGListBox.cxx:807
 TGListBox.cxx:808
 TGListBox.cxx:809
 TGListBox.cxx:810
 TGListBox.cxx:811
 TGListBox.cxx:812
 TGListBox.cxx:813
 TGListBox.cxx:814
 TGListBox.cxx:815
 TGListBox.cxx:816
 TGListBox.cxx:817
 TGListBox.cxx:818
 TGListBox.cxx:819
 TGListBox.cxx:820
 TGListBox.cxx:821
 TGListBox.cxx:822
 TGListBox.cxx:823
 TGListBox.cxx:824
 TGListBox.cxx:825
 TGListBox.cxx:826
 TGListBox.cxx:827
 TGListBox.cxx:828
 TGListBox.cxx:829
 TGListBox.cxx:830
 TGListBox.cxx:831
 TGListBox.cxx:832
 TGListBox.cxx:833
 TGListBox.cxx:834
 TGListBox.cxx:835
 TGListBox.cxx:836
 TGListBox.cxx:837
 TGListBox.cxx:838
 TGListBox.cxx:839
 TGListBox.cxx:840
 TGListBox.cxx:841
 TGListBox.cxx:842
 TGListBox.cxx:843
 TGListBox.cxx:844
 TGListBox.cxx:845
 TGListBox.cxx:846
 TGListBox.cxx:847
 TGListBox.cxx:848
 TGListBox.cxx:849
 TGListBox.cxx:850
 TGListBox.cxx:851
 TGListBox.cxx:852
 TGListBox.cxx:853
 TGListBox.cxx:854
 TGListBox.cxx:855
 TGListBox.cxx:856
 TGListBox.cxx:857
 TGListBox.cxx:858
 TGListBox.cxx:859
 TGListBox.cxx:860
 TGListBox.cxx:861
 TGListBox.cxx:862
 TGListBox.cxx:863
 TGListBox.cxx:864
 TGListBox.cxx:865
 TGListBox.cxx:866
 TGListBox.cxx:867
 TGListBox.cxx:868
 TGListBox.cxx:869
 TGListBox.cxx:870
 TGListBox.cxx:871
 TGListBox.cxx:872
 TGListBox.cxx:873
 TGListBox.cxx:874
 TGListBox.cxx:875
 TGListBox.cxx:876
 TGListBox.cxx:877
 TGListBox.cxx:878
 TGListBox.cxx:879
 TGListBox.cxx:880
 TGListBox.cxx:881
 TGListBox.cxx:882
 TGListBox.cxx:883
 TGListBox.cxx:884
 TGListBox.cxx:885
 TGListBox.cxx:886
 TGListBox.cxx:887
 TGListBox.cxx:888
 TGListBox.cxx:889
 TGListBox.cxx:890
 TGListBox.cxx:891
 TGListBox.cxx:892
 TGListBox.cxx:893
 TGListBox.cxx:894
 TGListBox.cxx:895
 TGListBox.cxx:896
 TGListBox.cxx:897
 TGListBox.cxx:898
 TGListBox.cxx:899
 TGListBox.cxx:900
 TGListBox.cxx:901
 TGListBox.cxx:902
 TGListBox.cxx:903
 TGListBox.cxx:904
 TGListBox.cxx:905
 TGListBox.cxx:906
 TGListBox.cxx:907
 TGListBox.cxx:908
 TGListBox.cxx:909
 TGListBox.cxx:910
 TGListBox.cxx:911
 TGListBox.cxx:912
 TGListBox.cxx:913
 TGListBox.cxx:914
 TGListBox.cxx:915
 TGListBox.cxx:916
 TGListBox.cxx:917
 TGListBox.cxx:918
 TGListBox.cxx:919
 TGListBox.cxx:920
 TGListBox.cxx:921
 TGListBox.cxx:922
 TGListBox.cxx:923
 TGListBox.cxx:924
 TGListBox.cxx:925
 TGListBox.cxx:926
 TGListBox.cxx:927
 TGListBox.cxx:928
 TGListBox.cxx:929
 TGListBox.cxx:930
 TGListBox.cxx:931
 TGListBox.cxx:932
 TGListBox.cxx:933
 TGListBox.cxx:934
 TGListBox.cxx:935
 TGListBox.cxx:936
 TGListBox.cxx:937
 TGListBox.cxx:938
 TGListBox.cxx:939
 TGListBox.cxx:940
 TGListBox.cxx:941
 TGListBox.cxx:942
 TGListBox.cxx:943
 TGListBox.cxx:944
 TGListBox.cxx:945
 TGListBox.cxx:946
 TGListBox.cxx:947
 TGListBox.cxx:948
 TGListBox.cxx:949
 TGListBox.cxx:950
 TGListBox.cxx:951
 TGListBox.cxx:952
 TGListBox.cxx:953
 TGListBox.cxx:954
 TGListBox.cxx:955
 TGListBox.cxx:956
 TGListBox.cxx:957
 TGListBox.cxx:958
 TGListBox.cxx:959
 TGListBox.cxx:960
 TGListBox.cxx:961
 TGListBox.cxx:962
 TGListBox.cxx:963
 TGListBox.cxx:964
 TGListBox.cxx:965
 TGListBox.cxx:966
 TGListBox.cxx:967
 TGListBox.cxx:968
 TGListBox.cxx:969
 TGListBox.cxx:970
 TGListBox.cxx:971
 TGListBox.cxx:972
 TGListBox.cxx:973
 TGListBox.cxx:974
 TGListBox.cxx:975
 TGListBox.cxx:976
 TGListBox.cxx:977
 TGListBox.cxx:978
 TGListBox.cxx:979
 TGListBox.cxx:980
 TGListBox.cxx:981
 TGListBox.cxx:982
 TGListBox.cxx:983
 TGListBox.cxx:984
 TGListBox.cxx:985
 TGListBox.cxx:986
 TGListBox.cxx:987
 TGListBox.cxx:988
 TGListBox.cxx:989
 TGListBox.cxx:990
 TGListBox.cxx:991
 TGListBox.cxx:992
 TGListBox.cxx:993
 TGListBox.cxx:994
 TGListBox.cxx:995
 TGListBox.cxx:996
 TGListBox.cxx:997
 TGListBox.cxx:998
 TGListBox.cxx:999
 TGListBox.cxx:1000
 TGListBox.cxx:1001
 TGListBox.cxx:1002
 TGListBox.cxx:1003
 TGListBox.cxx:1004
 TGListBox.cxx:1005
 TGListBox.cxx:1006
 TGListBox.cxx:1007
 TGListBox.cxx:1008
 TGListBox.cxx:1009
 TGListBox.cxx:1010
 TGListBox.cxx:1011
 TGListBox.cxx:1012
 TGListBox.cxx:1013
 TGListBox.cxx:1014
 TGListBox.cxx:1015
 TGListBox.cxx:1016
 TGListBox.cxx:1017
 TGListBox.cxx:1018
 TGListBox.cxx:1019
 TGListBox.cxx:1020
 TGListBox.cxx:1021
 TGListBox.cxx:1022
 TGListBox.cxx:1023
 TGListBox.cxx:1024
 TGListBox.cxx:1025
 TGListBox.cxx:1026
 TGListBox.cxx:1027
 TGListBox.cxx:1028
 TGListBox.cxx:1029
 TGListBox.cxx:1030
 TGListBox.cxx:1031
 TGListBox.cxx:1032
 TGListBox.cxx:1033
 TGListBox.cxx:1034
 TGListBox.cxx:1035
 TGListBox.cxx:1036
 TGListBox.cxx:1037
 TGListBox.cxx:1038
 TGListBox.cxx:1039
 TGListBox.cxx:1040
 TGListBox.cxx:1041
 TGListBox.cxx:1042
 TGListBox.cxx:1043
 TGListBox.cxx:1044
 TGListBox.cxx:1045
 TGListBox.cxx:1046
 TGListBox.cxx:1047
 TGListBox.cxx:1048
 TGListBox.cxx:1049
 TGListBox.cxx:1050
 TGListBox.cxx:1051
 TGListBox.cxx:1052
 TGListBox.cxx:1053
 TGListBox.cxx:1054
 TGListBox.cxx:1055
 TGListBox.cxx:1056
 TGListBox.cxx:1057
 TGListBox.cxx:1058
 TGListBox.cxx:1059
 TGListBox.cxx:1060
 TGListBox.cxx:1061
 TGListBox.cxx:1062
 TGListBox.cxx:1063
 TGListBox.cxx:1064
 TGListBox.cxx:1065
 TGListBox.cxx:1066
 TGListBox.cxx:1067
 TGListBox.cxx:1068
 TGListBox.cxx:1069
 TGListBox.cxx:1070
 TGListBox.cxx:1071
 TGListBox.cxx:1072
 TGListBox.cxx:1073
 TGListBox.cxx:1074
 TGListBox.cxx:1075
 TGListBox.cxx:1076
 TGListBox.cxx:1077
 TGListBox.cxx:1078
 TGListBox.cxx:1079
 TGListBox.cxx:1080
 TGListBox.cxx:1081
 TGListBox.cxx:1082
 TGListBox.cxx:1083
 TGListBox.cxx:1084
 TGListBox.cxx:1085
 TGListBox.cxx:1086
 TGListBox.cxx:1087
 TGListBox.cxx:1088
 TGListBox.cxx:1089
 TGListBox.cxx:1090
 TGListBox.cxx:1091
 TGListBox.cxx:1092
 TGListBox.cxx:1093
 TGListBox.cxx:1094
 TGListBox.cxx:1095
 TGListBox.cxx:1096
 TGListBox.cxx:1097
 TGListBox.cxx:1098
 TGListBox.cxx:1099
 TGListBox.cxx:1100
 TGListBox.cxx:1101
 TGListBox.cxx:1102
 TGListBox.cxx:1103
 TGListBox.cxx:1104
 TGListBox.cxx:1105
 TGListBox.cxx:1106
 TGListBox.cxx:1107
 TGListBox.cxx:1108
 TGListBox.cxx:1109
 TGListBox.cxx:1110
 TGListBox.cxx:1111
 TGListBox.cxx:1112
 TGListBox.cxx:1113
 TGListBox.cxx:1114
 TGListBox.cxx:1115
 TGListBox.cxx:1116
 TGListBox.cxx:1117
 TGListBox.cxx:1118
 TGListBox.cxx:1119
 TGListBox.cxx:1120
 TGListBox.cxx:1121
 TGListBox.cxx:1122
 TGListBox.cxx:1123
 TGListBox.cxx:1124
 TGListBox.cxx:1125
 TGListBox.cxx:1126
 TGListBox.cxx:1127
 TGListBox.cxx:1128
 TGListBox.cxx:1129
 TGListBox.cxx:1130
 TGListBox.cxx:1131
 TGListBox.cxx:1132
 TGListBox.cxx:1133
 TGListBox.cxx:1134
 TGListBox.cxx:1135
 TGListBox.cxx:1136
 TGListBox.cxx:1137
 TGListBox.cxx:1138
 TGListBox.cxx:1139
 TGListBox.cxx:1140
 TGListBox.cxx:1141
 TGListBox.cxx:1142
 TGListBox.cxx:1143
 TGListBox.cxx:1144
 TGListBox.cxx:1145
 TGListBox.cxx:1146
 TGListBox.cxx:1147
 TGListBox.cxx:1148
 TGListBox.cxx:1149
 TGListBox.cxx:1150
 TGListBox.cxx:1151
 TGListBox.cxx:1152
 TGListBox.cxx:1153
 TGListBox.cxx:1154
 TGListBox.cxx:1155
 TGListBox.cxx:1156
 TGListBox.cxx:1157
 TGListBox.cxx:1158
 TGListBox.cxx:1159
 TGListBox.cxx:1160
 TGListBox.cxx:1161
 TGListBox.cxx:1162
 TGListBox.cxx:1163
 TGListBox.cxx:1164
 TGListBox.cxx:1165
 TGListBox.cxx:1166
 TGListBox.cxx:1167
 TGListBox.cxx:1168
 TGListBox.cxx:1169
 TGListBox.cxx:1170
 TGListBox.cxx:1171
 TGListBox.cxx:1172
 TGListBox.cxx:1173
 TGListBox.cxx:1174
 TGListBox.cxx:1175
 TGListBox.cxx:1176
 TGListBox.cxx:1177
 TGListBox.cxx:1178
 TGListBox.cxx:1179
 TGListBox.cxx:1180
 TGListBox.cxx:1181
 TGListBox.cxx:1182
 TGListBox.cxx:1183
 TGListBox.cxx:1184
 TGListBox.cxx:1185
 TGListBox.cxx:1186
 TGListBox.cxx:1187
 TGListBox.cxx:1188
 TGListBox.cxx:1189
 TGListBox.cxx:1190
 TGListBox.cxx:1191
 TGListBox.cxx:1192
 TGListBox.cxx:1193
 TGListBox.cxx:1194
 TGListBox.cxx:1195
 TGListBox.cxx:1196
 TGListBox.cxx:1197
 TGListBox.cxx:1198
 TGListBox.cxx:1199
 TGListBox.cxx:1200
 TGListBox.cxx:1201
 TGListBox.cxx:1202
 TGListBox.cxx:1203
 TGListBox.cxx:1204
 TGListBox.cxx:1205
 TGListBox.cxx:1206
 TGListBox.cxx:1207
 TGListBox.cxx:1208
 TGListBox.cxx:1209
 TGListBox.cxx:1210
 TGListBox.cxx:1211
 TGListBox.cxx:1212
 TGListBox.cxx:1213
 TGListBox.cxx:1214
 TGListBox.cxx:1215
 TGListBox.cxx:1216
 TGListBox.cxx:1217
 TGListBox.cxx:1218
 TGListBox.cxx:1219
 TGListBox.cxx:1220
 TGListBox.cxx:1221
 TGListBox.cxx:1222
 TGListBox.cxx:1223
 TGListBox.cxx:1224
 TGListBox.cxx:1225
 TGListBox.cxx:1226
 TGListBox.cxx:1227
 TGListBox.cxx:1228
 TGListBox.cxx:1229
 TGListBox.cxx:1230
 TGListBox.cxx:1231
 TGListBox.cxx:1232
 TGListBox.cxx:1233
 TGListBox.cxx:1234
 TGListBox.cxx:1235
 TGListBox.cxx:1236
 TGListBox.cxx:1237
 TGListBox.cxx:1238
 TGListBox.cxx:1239
 TGListBox.cxx:1240
 TGListBox.cxx:1241
 TGListBox.cxx:1242
 TGListBox.cxx:1243
 TGListBox.cxx:1244
 TGListBox.cxx:1245
 TGListBox.cxx:1246
 TGListBox.cxx:1247
 TGListBox.cxx:1248
 TGListBox.cxx:1249
 TGListBox.cxx:1250
 TGListBox.cxx:1251
 TGListBox.cxx:1252
 TGListBox.cxx:1253
 TGListBox.cxx:1254
 TGListBox.cxx:1255
 TGListBox.cxx:1256
 TGListBox.cxx:1257
 TGListBox.cxx:1258
 TGListBox.cxx:1259
 TGListBox.cxx:1260
 TGListBox.cxx:1261
 TGListBox.cxx:1262
 TGListBox.cxx:1263
 TGListBox.cxx:1264
 TGListBox.cxx:1265
 TGListBox.cxx:1266
 TGListBox.cxx:1267
 TGListBox.cxx:1268
 TGListBox.cxx:1269
 TGListBox.cxx:1270
 TGListBox.cxx:1271
 TGListBox.cxx:1272
 TGListBox.cxx:1273
 TGListBox.cxx:1274
 TGListBox.cxx:1275
 TGListBox.cxx:1276
 TGListBox.cxx:1277
 TGListBox.cxx:1278
 TGListBox.cxx:1279
 TGListBox.cxx:1280
 TGListBox.cxx:1281
 TGListBox.cxx:1282
 TGListBox.cxx:1283
 TGListBox.cxx:1284
 TGListBox.cxx:1285
 TGListBox.cxx:1286
 TGListBox.cxx:1287
 TGListBox.cxx:1288
 TGListBox.cxx:1289
 TGListBox.cxx:1290
 TGListBox.cxx:1291
 TGListBox.cxx:1292
 TGListBox.cxx:1293
 TGListBox.cxx:1294
 TGListBox.cxx:1295
 TGListBox.cxx:1296
 TGListBox.cxx:1297
 TGListBox.cxx:1298
 TGListBox.cxx:1299
 TGListBox.cxx:1300
 TGListBox.cxx:1301
 TGListBox.cxx:1302
 TGListBox.cxx:1303
 TGListBox.cxx:1304
 TGListBox.cxx:1305
 TGListBox.cxx:1306
 TGListBox.cxx:1307
 TGListBox.cxx:1308
 TGListBox.cxx:1309
 TGListBox.cxx:1310
 TGListBox.cxx:1311
 TGListBox.cxx:1312
 TGListBox.cxx:1313
 TGListBox.cxx:1314
 TGListBox.cxx:1315
 TGListBox.cxx:1316
 TGListBox.cxx:1317
 TGListBox.cxx:1318
 TGListBox.cxx:1319
 TGListBox.cxx:1320
 TGListBox.cxx:1321
 TGListBox.cxx:1322
 TGListBox.cxx:1323
 TGListBox.cxx:1324
 TGListBox.cxx:1325
 TGListBox.cxx:1326
 TGListBox.cxx:1327
 TGListBox.cxx:1328
 TGListBox.cxx:1329
 TGListBox.cxx:1330
 TGListBox.cxx:1331
 TGListBox.cxx:1332
 TGListBox.cxx:1333
 TGListBox.cxx:1334
 TGListBox.cxx:1335
 TGListBox.cxx:1336
 TGListBox.cxx:1337
 TGListBox.cxx:1338
 TGListBox.cxx:1339
 TGListBox.cxx:1340
 TGListBox.cxx:1341
 TGListBox.cxx:1342
 TGListBox.cxx:1343
 TGListBox.cxx:1344
 TGListBox.cxx:1345
 TGListBox.cxx:1346
 TGListBox.cxx:1347
 TGListBox.cxx:1348
 TGListBox.cxx:1349
 TGListBox.cxx:1350
 TGListBox.cxx:1351
 TGListBox.cxx:1352
 TGListBox.cxx:1353
 TGListBox.cxx:1354
 TGListBox.cxx:1355
 TGListBox.cxx:1356
 TGListBox.cxx:1357
 TGListBox.cxx:1358
 TGListBox.cxx:1359
 TGListBox.cxx:1360
 TGListBox.cxx:1361
 TGListBox.cxx:1362
 TGListBox.cxx:1363
 TGListBox.cxx:1364
 TGListBox.cxx:1365
 TGListBox.cxx:1366
 TGListBox.cxx:1367
 TGListBox.cxx:1368
 TGListBox.cxx:1369
 TGListBox.cxx:1370
 TGListBox.cxx:1371
 TGListBox.cxx:1372
 TGListBox.cxx:1373
 TGListBox.cxx:1374
 TGListBox.cxx:1375
 TGListBox.cxx:1376
 TGListBox.cxx:1377
 TGListBox.cxx:1378
 TGListBox.cxx:1379
 TGListBox.cxx:1380
 TGListBox.cxx:1381
 TGListBox.cxx:1382
 TGListBox.cxx:1383
 TGListBox.cxx:1384
 TGListBox.cxx:1385
 TGListBox.cxx:1386
 TGListBox.cxx:1387
 TGListBox.cxx:1388
 TGListBox.cxx:1389
 TGListBox.cxx:1390
 TGListBox.cxx:1391
 TGListBox.cxx:1392
 TGListBox.cxx:1393
 TGListBox.cxx:1394
 TGListBox.cxx:1395
 TGListBox.cxx:1396
 TGListBox.cxx:1397
 TGListBox.cxx:1398
 TGListBox.cxx:1399
 TGListBox.cxx:1400
 TGListBox.cxx:1401
 TGListBox.cxx:1402
 TGListBox.cxx:1403
 TGListBox.cxx:1404
 TGListBox.cxx:1405
 TGListBox.cxx:1406
 TGListBox.cxx:1407
 TGListBox.cxx:1408
 TGListBox.cxx:1409
 TGListBox.cxx:1410
 TGListBox.cxx:1411
 TGListBox.cxx:1412
 TGListBox.cxx:1413
 TGListBox.cxx:1414
 TGListBox.cxx:1415
 TGListBox.cxx:1416
 TGListBox.cxx:1417
 TGListBox.cxx:1418
 TGListBox.cxx:1419
 TGListBox.cxx:1420
 TGListBox.cxx:1421
 TGListBox.cxx:1422
 TGListBox.cxx:1423
 TGListBox.cxx:1424
 TGListBox.cxx:1425
 TGListBox.cxx:1426
 TGListBox.cxx:1427
 TGListBox.cxx:1428
 TGListBox.cxx:1429
 TGListBox.cxx:1430
 TGListBox.cxx:1431
 TGListBox.cxx:1432
 TGListBox.cxx:1433
 TGListBox.cxx:1434
 TGListBox.cxx:1435
 TGListBox.cxx:1436
 TGListBox.cxx:1437
 TGListBox.cxx:1438
 TGListBox.cxx:1439
 TGListBox.cxx:1440
 TGListBox.cxx:1441
 TGListBox.cxx:1442
 TGListBox.cxx:1443
 TGListBox.cxx:1444
 TGListBox.cxx:1445
 TGListBox.cxx:1446
 TGListBox.cxx:1447
 TGListBox.cxx:1448
 TGListBox.cxx:1449
 TGListBox.cxx:1450
 TGListBox.cxx:1451
 TGListBox.cxx:1452
 TGListBox.cxx:1453
 TGListBox.cxx:1454
 TGListBox.cxx:1455
 TGListBox.cxx:1456
 TGListBox.cxx:1457
 TGListBox.cxx:1458
 TGListBox.cxx:1459
 TGListBox.cxx:1460
 TGListBox.cxx:1461
 TGListBox.cxx:1462
 TGListBox.cxx:1463
 TGListBox.cxx:1464
 TGListBox.cxx:1465
 TGListBox.cxx:1466
 TGListBox.cxx:1467
 TGListBox.cxx:1468
 TGListBox.cxx:1469
 TGListBox.cxx:1470
 TGListBox.cxx:1471
 TGListBox.cxx:1472
 TGListBox.cxx:1473
 TGListBox.cxx:1474
 TGListBox.cxx:1475
 TGListBox.cxx:1476
 TGListBox.cxx:1477
 TGListBox.cxx:1478
 TGListBox.cxx:1479
 TGListBox.cxx:1480
 TGListBox.cxx:1481
 TGListBox.cxx:1482
 TGListBox.cxx:1483
 TGListBox.cxx:1484
 TGListBox.cxx:1485
 TGListBox.cxx:1486
 TGListBox.cxx:1487
 TGListBox.cxx:1488
 TGListBox.cxx:1489
 TGListBox.cxx:1490
 TGListBox.cxx:1491
 TGListBox.cxx:1492
 TGListBox.cxx:1493
 TGListBox.cxx:1494
 TGListBox.cxx:1495
 TGListBox.cxx:1496
 TGListBox.cxx:1497
 TGListBox.cxx:1498
 TGListBox.cxx:1499
 TGListBox.cxx:1500
 TGListBox.cxx:1501
 TGListBox.cxx:1502
 TGListBox.cxx:1503
 TGListBox.cxx:1504
 TGListBox.cxx:1505
 TGListBox.cxx:1506
 TGListBox.cxx:1507
 TGListBox.cxx:1508
 TGListBox.cxx:1509
 TGListBox.cxx:1510
 TGListBox.cxx:1511
 TGListBox.cxx:1512
 TGListBox.cxx:1513
 TGListBox.cxx:1514
 TGListBox.cxx:1515
 TGListBox.cxx:1516
 TGListBox.cxx:1517
 TGListBox.cxx:1518
 TGListBox.cxx:1519
 TGListBox.cxx:1520
 TGListBox.cxx:1521
 TGListBox.cxx:1522
 TGListBox.cxx:1523
 TGListBox.cxx:1524
 TGListBox.cxx:1525
 TGListBox.cxx:1526
 TGListBox.cxx:1527
 TGListBox.cxx:1528
 TGListBox.cxx:1529
 TGListBox.cxx:1530
 TGListBox.cxx:1531
 TGListBox.cxx:1532
 TGListBox.cxx:1533
 TGListBox.cxx:1534
 TGListBox.cxx:1535
 TGListBox.cxx:1536
 TGListBox.cxx:1537
 TGListBox.cxx:1538
 TGListBox.cxx:1539
 TGListBox.cxx:1540
 TGListBox.cxx:1541
 TGListBox.cxx:1542
 TGListBox.cxx:1543
 TGListBox.cxx:1544
 TGListBox.cxx:1545
 TGListBox.cxx:1546
 TGListBox.cxx:1547
 TGListBox.cxx:1548
 TGListBox.cxx:1549
 TGListBox.cxx:1550
 TGListBox.cxx:1551
 TGListBox.cxx:1552
 TGListBox.cxx:1553
 TGListBox.cxx:1554
 TGListBox.cxx:1555
 TGListBox.cxx:1556
 TGListBox.cxx:1557
 TGListBox.cxx:1558
 TGListBox.cxx:1559
 TGListBox.cxx:1560
 TGListBox.cxx:1561
 TGListBox.cxx:1562
 TGListBox.cxx:1563
 TGListBox.cxx:1564
 TGListBox.cxx:1565
 TGListBox.cxx:1566
 TGListBox.cxx:1567
 TGListBox.cxx:1568
 TGListBox.cxx:1569
 TGListBox.cxx:1570
 TGListBox.cxx:1571
 TGListBox.cxx:1572
 TGListBox.cxx:1573
 TGListBox.cxx:1574
 TGListBox.cxx:1575
 TGListBox.cxx:1576
 TGListBox.cxx:1577
 TGListBox.cxx:1578
 TGListBox.cxx:1579
 TGListBox.cxx:1580
 TGListBox.cxx:1581
 TGListBox.cxx:1582
 TGListBox.cxx:1583
 TGListBox.cxx:1584
 TGListBox.cxx:1585
 TGListBox.cxx:1586
 TGListBox.cxx:1587
 TGListBox.cxx:1588
 TGListBox.cxx:1589
 TGListBox.cxx:1590
 TGListBox.cxx:1591
 TGListBox.cxx:1592
 TGListBox.cxx:1593
 TGListBox.cxx:1594
 TGListBox.cxx:1595
 TGListBox.cxx:1596
 TGListBox.cxx:1597
 TGListBox.cxx:1598
 TGListBox.cxx:1599
 TGListBox.cxx:1600
 TGListBox.cxx:1601
 TGListBox.cxx:1602
 TGListBox.cxx:1603
 TGListBox.cxx:1604
 TGListBox.cxx:1605
 TGListBox.cxx:1606
 TGListBox.cxx:1607
 TGListBox.cxx:1608
 TGListBox.cxx:1609
 TGListBox.cxx:1610
 TGListBox.cxx:1611
 TGListBox.cxx:1612
 TGListBox.cxx:1613
 TGListBox.cxx:1614
 TGListBox.cxx:1615
 TGListBox.cxx:1616
 TGListBox.cxx:1617
 TGListBox.cxx:1618
 TGListBox.cxx:1619
 TGListBox.cxx:1620
 TGListBox.cxx:1621
 TGListBox.cxx:1622
 TGListBox.cxx:1623
 TGListBox.cxx:1624
 TGListBox.cxx:1625
 TGListBox.cxx:1626
 TGListBox.cxx:1627
 TGListBox.cxx:1628
 TGListBox.cxx:1629
 TGListBox.cxx:1630
 TGListBox.cxx:1631
 TGListBox.cxx:1632
 TGListBox.cxx:1633
 TGListBox.cxx:1634
 TGListBox.cxx:1635
 TGListBox.cxx:1636
 TGListBox.cxx:1637
 TGListBox.cxx:1638
 TGListBox.cxx:1639
 TGListBox.cxx:1640
 TGListBox.cxx:1641
 TGListBox.cxx:1642
 TGListBox.cxx:1643
 TGListBox.cxx:1644
 TGListBox.cxx:1645
 TGListBox.cxx:1646
 TGListBox.cxx:1647
 TGListBox.cxx:1648
 TGListBox.cxx:1649
 TGListBox.cxx:1650
 TGListBox.cxx:1651
 TGListBox.cxx:1652
 TGListBox.cxx:1653
 TGListBox.cxx:1654
 TGListBox.cxx:1655
 TGListBox.cxx:1656
 TGListBox.cxx:1657
 TGListBox.cxx:1658
 TGListBox.cxx:1659
 TGListBox.cxx:1660
 TGListBox.cxx:1661
 TGListBox.cxx:1662
 TGListBox.cxx:1663
 TGListBox.cxx:1664
 TGListBox.cxx:1665
 TGListBox.cxx:1666
 TGListBox.cxx:1667
 TGListBox.cxx:1668
 TGListBox.cxx:1669
 TGListBox.cxx:1670
 TGListBox.cxx:1671
 TGListBox.cxx:1672
 TGListBox.cxx:1673
 TGListBox.cxx:1674
 TGListBox.cxx:1675
 TGListBox.cxx:1676
 TGListBox.cxx:1677
 TGListBox.cxx:1678
 TGListBox.cxx:1679
 TGListBox.cxx:1680
 TGListBox.cxx:1681
 TGListBox.cxx:1682
 TGListBox.cxx:1683
 TGListBox.cxx:1684
 TGListBox.cxx:1685
 TGListBox.cxx:1686
 TGListBox.cxx:1687
 TGListBox.cxx:1688
 TGListBox.cxx:1689
 TGListBox.cxx:1690
 TGListBox.cxx:1691
 TGListBox.cxx:1692
 TGListBox.cxx:1693
 TGListBox.cxx:1694
 TGListBox.cxx:1695
 TGListBox.cxx:1696
 TGListBox.cxx:1697
 TGListBox.cxx:1698
 TGListBox.cxx:1699
 TGListBox.cxx:1700
 TGListBox.cxx:1701
 TGListBox.cxx:1702
 TGListBox.cxx:1703