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

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGFrame, TGCompositeFrame, TGVerticalFrame, TGHorizontalFrame,       //
// TGMainFrame, TGTransientFrame and TGGroupFrame                       //
//                                                                      //
// The frame classes describe the different "dressed" GUI windows.      //
//                                                                      //
// The TGFrame class is a subclasses of TGWindow, and is used as base   //
// class for some simple widgets (buttons, labels, etc.).               //
// It provides:                                                         //
//  - position & dimension fields                                       //
//  - an 'options' attribute (see constant above)                       //
//  - a generic event handler                                           //
//  - a generic layout mechanism                                        //
//  - a generic border                                                  //
//                                                                      //
// The TGCompositeFrame class is the base class for composite widgets   //
// (menu bars, list boxes, etc.).                                       //
// It provides:                                                         //
//  - a layout manager                                                  //
//  - a frame container (TList *)                                       //
//                                                                      //
// The TGVerticalFrame and TGHorizontalFrame are composite frame that   //
// layout their children in vertical or horizontal way.                 //
//                                                                      //
// The TGMainFrame class defines top level windows that interact with   //
// the system Window Manager.                                           //
//                                                                      //
// The TGTransientFrame class defines transient windows that typically  //
// are used for dialogs windows.                                        //
//                                                                      //
// The TGGroupFrame is a composite frame with a border and a title.     //
// It is typically used to group a number of logically related widgets  //
// visually together.                                                   //
//                                                                      //
//Begin_Html
/*
<img src="gif/tgcompositeframe_classtree.gif">
*/
//End_Html
//////////////////////////////////////////////////////////////////////////

#include "TError.h"
#include "TGFrame.h"
#include "TGResourcePool.h"
#include "TGPicture.h"
#include "TList.h"
#include "TApplication.h"
#include "TTimer.h"
#include "Riostream.h"
#include "TClass.h"

#include "TObjString.h"
#include "TObjArray.h"
#include "TBits.h"
#include "TColor.h"
#include "TROOT.h"
#include "KeySymbols.h"
#include "TGFileDialog.h"
#include "TGMsgBox.h"
#include "TSystem.h"
#include "TVirtualDragManager.h"
#include "TGuiBuilder.h"
#include "TQConnection.h"
#include "TGButton.h"
#include "TGSplitter.h"
#include "TGDNDManager.h"
#include "TImage.h"
#include "TObjectSpy.h"


Bool_t      TGFrame::fgInit = kFALSE;
Pixel_t     TGFrame::fgDefaultFrameBackground = 0;
Pixel_t     TGFrame::fgDefaultSelectedBackground = 0;
Pixel_t     TGFrame::fgWhitePixel = 0;
Pixel_t     TGFrame::fgBlackPixel = 0;
const TGGC *TGFrame::fgBlackGC = 0;
const TGGC *TGFrame::fgWhiteGC = 0;
const TGGC *TGFrame::fgHilightGC = 0;
const TGGC *TGFrame::fgShadowGC = 0;
const TGGC *TGFrame::fgBckgndGC = 0;
Time_t      TGFrame::fgLastClick = 0;
UInt_t      TGFrame::fgLastButton = 0;
Int_t       TGFrame::fgDbx = 0;
Int_t       TGFrame::fgDby = 0;
Window_t    TGFrame::fgDbw = 0;
UInt_t      TGFrame::fgUserColor = 0;

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

TGLayoutHints *TGCompositeFrame::fgDefaultHints = 0;

static const char *gSaveMacroTypes[] = {
   "ROOT macros", "*.C",
   "GIF",         "*.gif",
   "PNG",         "*.png",
   "JPEG",        "*.jpg",
   "TIFF",        "*.tiff",
   "XPM",         "*.xpm",
   "All files",   "*",
   0,             0
};

TList *gListOfHiddenFrames = new TList();

ClassImp(TGFrame)
ClassImp(TGCompositeFrame)
ClassImp(TGVerticalFrame)
ClassImp(TGHorizontalFrame)
ClassImp(TGMainFrame)
ClassImp(TGTransientFrame)
ClassImp(TGGroupFrame)
ClassImp(TGHeaderFrame)


//______________________________________________________________________________
TGFrame::TGFrame(const TGWindow *p, UInt_t w, UInt_t h,
                 UInt_t options, Pixel_t back)
   : TGWindow(p, 0, 0, w, h, 0, 0, 0, 0, 0, options)
{
   // Create a TGFrame object. Options is an OR of the EFrameTypes.

   if (!fgInit && gClient) {
      TGFrame::GetDefaultFrameBackground();
      TGFrame::GetDefaultSelectedBackground();
      TGFrame::GetWhitePixel();
      TGFrame::GetBlackPixel();
      TGFrame::GetBlackGC();
      TGFrame::GetWhiteGC();
      TGFrame::GetHilightGC();
      TGFrame::GetShadowGC();
      TGFrame::GetBckgndGC();
      fgInit = kTRUE;
   }

   SetWindowAttributes_t wattr;

   fDNDState   = 0;
   fBackground = back;
   fOptions    = options;
   fWidth = w; fHeight = h; fX = fY = fBorderWidth = 0;
   fMinWidth    = 0;
   fMinHeight   = 0;
   fMaxWidth    = kMaxUInt;
   fMaxHeight   = kMaxUInt;
   fFE          = 0;

   if (fOptions & (kSunkenFrame | kRaisedFrame))
      fBorderWidth = (fOptions & kDoubleBorder) ? 2 : 1;

   wattr.fMask = kWABackPixel | kWAEventMask;
   wattr.fBackgroundPixel = back;
   wattr.fEventMask = kExposureMask;
   if (fOptions & kMainFrame) {
      wattr.fEventMask |= kStructureNotifyMask;
      gVirtualX->ChangeWindowAttributes(fId, &wattr);
      //if (fgDefaultBackgroundPicture)
      //   SetBackgroundPixmap(fgDefaultBackgroundPicture->GetPicture());
   } else {
      gVirtualX->ChangeWindowAttributes(fId, &wattr);
      //if (!(fOptions & kOwnBackground))
      //   SetBackgroundPixmap(kParentRelative);
   }
   fEventMask = (UInt_t) wattr.fEventMask;

   SetWindowName();
}

//______________________________________________________________________________
TGFrame::TGFrame(TGClient *c, Window_t id, const TGWindow *parent)
   : TGWindow(c, id, parent)
{
   // Create a frame using an externally created window. For example
   // to register the root window (called by TGClient), or a window
   // created via TVirtualX::InitWindow() (id is obtained with
   // TVirtualX::GetWindowID()).

   if (!fgInit && gClient) {
      TGFrame::GetDefaultFrameBackground();
      TGFrame::GetDefaultSelectedBackground();
      TGFrame::GetWhitePixel();
      TGFrame::GetBlackPixel();
      TGFrame::GetBlackGC();
      TGFrame::GetWhiteGC();
      TGFrame::GetHilightGC();
      TGFrame::GetShadowGC();
      TGFrame::GetBckgndGC();
      fgInit = kTRUE;
   }

   WindowAttributes_t attributes;
   // Initialize some values - needed for batch mode!
   attributes.fX      = 0;
   attributes.fY      = 0;
   attributes.fWidth  = 100;
   attributes.fHeight = 100;
   attributes.fBorderWidth = 4;
   attributes.fYourEventMask = 0;
   gVirtualX->GetWindowAttributes(id, attributes);

   fDNDState    = 0;
   fX           = attributes.fX;
   fY           = attributes.fY;
   fWidth       = attributes.fWidth;
   fHeight      = attributes.fHeight;
   fBorderWidth = attributes.fBorderWidth;
   fEventMask   = (UInt_t) attributes.fYourEventMask;
   fBackground  = 0;
   fOptions     = 0;
   fMinWidth    = 0;
   fMinHeight   = 0;
   fMaxWidth    = kMaxUInt;
   fMaxHeight   = kMaxUInt;
   fFE          = 0;

   SetWindowName();
}

//______________________________________________________________________________
TGFrame::~TGFrame()
{
   // Destructor.

}

//______________________________________________________________________________
void TGFrame::DeleteWindow()
{
   // Delete window. Use single shot timer to call final delete method.
   // We use this indirect way since deleting the window in its own
   // execution "thread" can cause side effects because frame methods
   // can still be called while the window object has already been deleted.

   if (gDNDManager) {
      if (gDNDManager->GetMainFrame() == this)
         gDNDManager->SetMainFrame(0);
   }
   if (!TestBit(kDeleteWindowCalled)) {
      // coverity[returned_null]
      // coverity[dereference]
      TTimer::SingleShot(150, IsA()->GetName(), this, "ReallyDelete()");
   }
   SetBit(kDeleteWindowCalled);
}

//______________________________________________________________________________
void TGFrame::ChangeBackground(Pixel_t back)
{
   // Change frame background color.

   fBackground = back;
   gVirtualX->SetWindowBackground(fId, back);
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
Pixel_t TGFrame::GetForeground() const
{
   // Return frame foreground color.

   return fgBlackPixel;
}

//______________________________________________________________________________
void TGFrame::SetBackgroundColor(Pixel_t back)
{
   // Set background color (override from TGWindow base class).
   // Same effect as ChangeBackground().

   fBackground = back;
   TGWindow::SetBackgroundColor(back);
}

//______________________________________________________________________________
void TGFrame::ChangeOptions(UInt_t options)
{
   // Change frame options. Options is an OR of the EFrameTypes.

   if ((options & (kDoubleBorder | kSunkenFrame | kRaisedFrame)) !=
      (fOptions & (kDoubleBorder | kSunkenFrame | kRaisedFrame))) {
      if (!InheritsFrom(TGGroupFrame::Class())) {
         if (options & (kSunkenFrame | kRaisedFrame))
            fBorderWidth = (options & kDoubleBorder) ? 2 : 1;
         else
            fBorderWidth = 0;
      }
   }

   fOptions = options;
}

//______________________________________________________________________________
void TGFrame::AddInput(UInt_t emask)
{
   // Add events specified in the emask to the events the frame should handle.

   fEventMask |= emask;
   gVirtualX->SelectInput(fId, fEventMask);
}

//______________________________________________________________________________
void TGFrame::RemoveInput(UInt_t emask)
{
   // Remove events specified in emask from the events the frame should handle.

   fEventMask &= ~emask;
   gVirtualX->SelectInput(fId, fEventMask);
}

//________________________________________________________________________________
void TGFrame::Draw3dRectangle(UInt_t type, Int_t x, Int_t y,
                              UInt_t w, UInt_t h)
{
   // Draw 3D rectangle on the frame border.

   switch (type) {
      case kSunkenFrame:
         gVirtualX->DrawLine(fId, GetShadowGC()(),  x,     y,     x+w-2, y);
         gVirtualX->DrawLine(fId, GetShadowGC()(),  x,     y,     x,     y+h-2);
         gVirtualX->DrawLine(fId, GetHilightGC()(), x,     y+h-1, x+w-1, y+h-1);
         gVirtualX->DrawLine(fId, GetHilightGC()(), x+w-1, y+h-1, x+w-1, y);
         break;

      case kSunkenFrame | kDoubleBorder:
         gVirtualX->DrawLine(fId, GetShadowGC()(), x,     y,     x+w-2, y);
         gVirtualX->DrawLine(fId, GetShadowGC()(), x,     y,     x,     y+h-2);
         gVirtualX->DrawLine(fId, GetBlackGC()(),  x+1,   y+1,   x+w-3, y+1);
         gVirtualX->DrawLine(fId, GetBlackGC()(),  x+1,   y+1,   x+1,   y+h-3);

         gVirtualX->DrawLine(fId, GetHilightGC()(), x,     y+h-1, x+w-1, y+h-1);
         gVirtualX->DrawLine(fId, GetHilightGC()(), x+w-1, y+h-1, x+w-1, y);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  x+1,   y+h-2, x+w-2, y+h-2);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  x+w-2, y+1,   x+w-2, y+h-2);
         break;

      case kRaisedFrame:
         gVirtualX->DrawLine(fId, GetHilightGC()(), x,     y,     x+w-2, y);
         gVirtualX->DrawLine(fId, GetHilightGC()(), x,     y,     x,     y+h-2);
         gVirtualX->DrawLine(fId, GetShadowGC()(),  x,     y+h-1, x+w-1, y+h-1);
         gVirtualX->DrawLine(fId, GetShadowGC()(),  x+w-1, y+h-1, x+w-1, y);
         break;

      case kRaisedFrame | kDoubleBorder:
         gVirtualX->DrawLine(fId, GetHilightGC()(), x,     y,     x+w-2, y);
         gVirtualX->DrawLine(fId, GetHilightGC()(), x,     y,     x,     y+h-2);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  x+1,   y+1,   x+w-3, y+1);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  x+1,   y+1,   x+1,   y+h-3);

         gVirtualX->DrawLine(fId, GetShadowGC()(),  x+1,   y+h-2, x+w-2, y+h-2);
         gVirtualX->DrawLine(fId, GetShadowGC()(),  x+w-2, y+h-2, x+w-2, y+1);
         gVirtualX->DrawLine(fId, GetBlackGC()(),   x,     y+h-1, x+w-1, y+h-1);
         gVirtualX->DrawLine(fId, GetBlackGC()(),   x+w-1, y+h-1, x+w-1, y);
         break;

      default:
         break;
   }
}

//______________________________________________________________________________
void TGFrame::DrawBorder()
{
   // Draw frame border.

   Draw3dRectangle(fOptions & (kSunkenFrame | kRaisedFrame | kDoubleBorder),
                   0, 0, fWidth, fHeight);
}

//______________________________________________________________________________
void TGFrame::DoRedraw()
{
   // Redraw the frame.

   gVirtualX->ClearArea(fId, fBorderWidth, fBorderWidth,
                   fWidth - (fBorderWidth << 1), fHeight - (fBorderWidth << 1));

   // border will only be drawn if we have a 3D option hint
   // (kRaisedFrame or kSunkenFrame)
   DrawBorder();
}

//______________________________________________________________________________
Bool_t TGFrame::HandleConfigureNotify(Event_t *event)
{
   // This event is generated when the frame is resized.

   if ((event->fWidth != fWidth) || (event->fHeight != fHeight)) {
      fWidth  = event->fWidth;
      fHeight = event->fHeight;
      Layout();
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGFrame::HandleEvent(Event_t *event)
{
   // Handle all frame events. Events are dispatched to the specific
   // event handlers.

   if (gDragManager && !fClient->IsEditDisabled() &&
       gDragManager->HandleEvent(event)) return kTRUE;

   TObjectSpy deleteCheck(this);

   switch (event->fType) {

      case kExpose:
         HandleExpose(event);
         break;

      case kConfigureNotify:
         while (gVirtualX->CheckEvent(fId, kConfigureNotify, *event))
            ;
         // protection
         if ((event->fWidth < 32768) && (event->fHeight  < 32768)){
            ProcessedConfigure(event);  // emit signal
            HandleConfigureNotify(event);
         }
         break;

      case kGKeyPress:
      case kKeyRelease:
         HandleKey(event);
         break;

      case kFocusIn:
      case kFocusOut:
         HandleFocusChange(event);
         break;

      case kButtonPress:
         {
            Int_t dbl_clk = kFALSE;

            if ((event->fTime - fgLastClick < 350) &&
                (event->fCode == fgLastButton) &&
                (TMath::Abs(event->fXRoot - fgDbx) < 6) &&
                (TMath::Abs(event->fYRoot - fgDby) < 6) &&
                (event->fWindow == fgDbw))
               dbl_clk = kTRUE;

            fgLastClick  = event->fTime;
            fgLastButton = event->fCode;
            fgDbx = event->fXRoot;
            fgDby = event->fYRoot;
            fgDbw = event->fWindow;

            if (dbl_clk) {
               if ((event->fState & kKeyControlMask) &&
                    !GetEditDisabled() && gGuiBuilder) {
                  StartGuiBuilding(!IsEditable());
                  return kTRUE;
               }

               if (!HandleDoubleClick(event)) {
                  HandleButton(event);
               }
            } else {
               HandleButton(event);
            }
         }
         break;

      case kButtonDoubleClick:
         {
            fgLastClick  = event->fTime;
            fgLastButton = event->fCode;
            fgDbx = event->fXRoot;
            fgDby = event->fYRoot;
            fgDbw = event->fWindow;

            HandleDoubleClick(event);
         }
         break;

      case kButtonRelease:
         HandleButton(event);
         break;

      case kEnterNotify:
      case kLeaveNotify:
         HandleCrossing(event);
         break;

      case kMotionNotify:
         while (gVirtualX->CheckEvent(fId, kMotionNotify, *event))
            ;
         HandleMotion(event);
         break;

      case kClientMessage:
         HandleClientMessage(event);
         break;

      case kSelectionNotify:
         HandleSelection(event);
         break;

      case kSelectionRequest:
         HandleSelectionRequest(event);
         break;

      case kSelectionClear:
         HandleSelectionClear(event);
         break;

      case kColormapNotify:
         HandleColormapChange(event);
         break;

      default:
         //Warning("HandleEvent", "unknown event (%#x) for (%#x)", event->fType, fId);
         break;
   }

   if (deleteCheck.GetObject())
      ProcessedEvent(event);  // emit signal

   return kTRUE;
}

//______________________________________________________________________________
TGDimension TGFrame::GetDefaultSize() const
{
   //   std::cout << fWidth << "x" << fHeight << std::endl;
   return TGDimension(fWidth, fHeight);
}


//______________________________________________________________________________
void TGFrame::Move(Int_t x, Int_t y)
{
   // Move frame.

   if (x != fX || y != fY) {
      TGWindow::Move(x, y);
      fX = x; fY = y;
   }
}

//______________________________________________________________________________
void TGFrame::Resize(UInt_t w, UInt_t h)
{
   // Resize the frame.
   // If w=0 && h=0 - Resize to default size

   if (w != fWidth || h != fHeight) {
      TGDimension siz(0,0);
      siz = GetDefaultSize();
      fWidth = w ? w : siz.fWidth;
      fHeight = h ? h : siz.fHeight;
      TGWindow::Resize(fWidth, fHeight);
      Layout();
   }
}

//______________________________________________________________________________
void TGFrame::Resize(TGDimension size)
{
   // Resize the frame.

   Resize(size.fWidth, size.fHeight);
}

//______________________________________________________________________________
void TGFrame::MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h)
{
   // Move and/or resize the frame.
   // If w=0 && h=0 - Resize to default size

   // we do it anyway as we don't know if it's only a move or only a resize
   TGDimension siz(0,0);
   siz = GetDefaultSize();
   fWidth = w ? w : siz.fWidth;
   fHeight = h ? h : siz.fHeight;
   fX = x; fY = y;
   TGWindow::MoveResize(x, y, fWidth, fHeight);
   Layout();
}

//______________________________________________________________________________
void TGFrame::SendMessage(const TGWindow *w, Long_t msg, Long_t parm1, Long_t parm2)
{
   // Send message (i.e. event) to window w. Message is encoded in one long
   // as message type and up to two long parameters.

   Event_t event;

   if (w) {
      event.fType   = kClientMessage;
      event.fFormat = 32;
      event.fHandle = gROOT_MESSAGE;

      event.fWindow  = w->GetId();
      event.fUser[0] = msg;
      event.fUser[1] = parm1;
      event.fUser[2] = parm2;
      event.fUser[3] = 0;
      event.fUser[4] = 0;

      gVirtualX->SendEvent(w->GetId(), &event);
   }
}

//______________________________________________________________________________
Bool_t TGFrame::HandleClientMessage(Event_t *event)
{
   // Handle a client message. Client messages are the ones sent via
   // TGFrame::SendMessage (typically by widgets).

   if (gDNDManager) {
      gDNDManager->HandleClientMessage(event);
   }
   if (event->fHandle == gROOT_MESSAGE) {
      ProcessMessage(event->fUser[0], event->fUser[1], event->fUser[2]);
   }
   return kTRUE;
}

//______________________________________________________________________________
ULong_t TGFrame::GetDefaultFrameBackground()
{
   // Get default frame background.

   static Bool_t init = kFALSE;
   if (!init && gClient) {
      fgDefaultFrameBackground = gClient->GetResourcePool()->GetFrameBgndColor();
      init = kTRUE;
   }
   return fgDefaultFrameBackground;
}

//______________________________________________________________________________
ULong_t TGFrame::GetDefaultSelectedBackground()
{
   // Get default selected frame background.

   static Bool_t init = kFALSE;
   if (!init && gClient) {
      fgDefaultSelectedBackground = gClient->GetResourcePool()->GetSelectedBgndColor();
      init = kTRUE;
   }
   return fgDefaultSelectedBackground;
}

//______________________________________________________________________________
ULong_t TGFrame::GetWhitePixel()
{
   // Get white pixel value.

   static Bool_t init = kFALSE;
   if (!init && gClient) {
      fgWhitePixel = gClient->GetResourcePool()->GetWhiteColor();
      init  = kTRUE;
   }
   return fgWhitePixel;
}

//______________________________________________________________________________
ULong_t TGFrame::GetBlackPixel()
{
   // Get black pixel value.

   static Bool_t init = kFALSE;
   if (!init && gClient) {
      fgBlackPixel = gClient->GetResourcePool()->GetBlackColor();
      init = kTRUE;
   }
   return fgBlackPixel;
}

//______________________________________________________________________________
const TGGC &TGFrame::GetBlackGC()
{
   // Get black graphics context.

   if (!fgBlackGC && gClient)
      fgBlackGC = gClient->GetResourcePool()->GetBlackGC();
   return *fgBlackGC;
}

//______________________________________________________________________________
const TGGC &TGFrame::GetWhiteGC()
{
   // Get white graphics context.

   if (!fgWhiteGC && gClient)
      fgWhiteGC = gClient->GetResourcePool()->GetWhiteGC();
   return *fgWhiteGC;
}

//______________________________________________________________________________
const TGGC &TGFrame::GetHilightGC()
{
   // Get highlight color graphics context.

   if (!fgHilightGC && gClient)
      fgHilightGC = gClient->GetResourcePool()->GetFrameHiliteGC();
   return *fgHilightGC;
}

//______________________________________________________________________________
const TGGC &TGFrame::GetShadowGC()
{
   // Get shadow color graphics context.

   if (!fgShadowGC && gClient)
      fgShadowGC = gClient->GetResourcePool()->GetFrameShadowGC();
   return *fgShadowGC;
}

//______________________________________________________________________________
const TGGC &TGFrame::GetBckgndGC()
{
   // Get background color graphics context.

   if (!fgBckgndGC && gClient)
      fgBckgndGC = gClient->GetResourcePool()->GetFrameBckgndGC();
   return *fgBckgndGC;
}

//______________________________________________________________________________
Time_t TGFrame::GetLastClick()
{
   // Get time of last mouse click.

   return fgLastClick;
}

//______________________________________________________________________________
void TGFrame::Print(Option_t *option) const
{
   // Print window id.

   TString opt = option;
   if (opt.Contains("tree")) {
      TGWindow::Print(option);
      return;
   }

   std::cout <<  option << ClassName() << ":\tid=" << fId << " parent=" << fParent->GetId();
   std::cout << " x=" << fX << " y=" << fY;
   std::cout << " w=" << fWidth << " h=" << fHeight << std::endl;
}

//______________________________________________________________________________
void TGFrame::SetDragType(Int_t)
{
   // SetDragType
}

//______________________________________________________________________________
void TGFrame::SetDropType(Int_t)
{
   // SetDropType
}

//______________________________________________________________________________
Int_t TGFrame::GetDragType() const
{
   // Returns drag source type.
   // If frame is not "draggable" - return zero

   return fClient->IsEditable();
}

//______________________________________________________________________________
Int_t TGFrame::GetDropType() const
{
   // Returns drop target type.
   // If frame cannot accept drop - return zero

   return 0;
}

//______________________________________________________________________________
void TGFrame::StartGuiBuilding(Bool_t on)
{
   // Go into GUI building mode.

   if (GetEditDisabled()) return;
   if (!gDragManager) gDragManager = TVirtualDragManager::Instance();
   if (!gDragManager) return;

   TGCompositeFrame *comp = 0;

   if (InheritsFrom(TGCompositeFrame::Class())) {
      comp = (TGCompositeFrame *)this;
   } else if (fParent->InheritsFrom(TGCompositeFrame::Class())) {
      comp = (TGCompositeFrame*)fParent;
   }
   if (comp) comp->SetEditable(on);
}

//______________________________________________________________________________
TGCompositeFrame::TGCompositeFrame(const TGWindow *p, UInt_t w, UInt_t h,
         UInt_t options, Pixel_t back) : TGFrame(p, w, h, options, back)
{
   // Create a composite frame. A composite frame has in addition to a TGFrame
   // also a layout manager and a list of child frames.

   fLayoutManager = 0;
   fList          = new TList;
   fLayoutBroken  = kFALSE;
   fMustCleanup   = kNoCleanup;
   fMapSubwindows = fParent->IsMapSubwindows();
   if (!fgDefaultHints)
      fgDefaultHints = new TGLayoutHints;

   if (fOptions & kHorizontalFrame)
      SetLayoutManager(new TGHorizontalLayout(this));
   else
      SetLayoutManager(new TGVerticalLayout(this));

   SetWindowName();
}

//______________________________________________________________________________
TGCompositeFrame::TGCompositeFrame(TGClient *c, Window_t id, const TGWindow *parent)
   : TGFrame(c, id, parent)
{
   // Create a frame using an externally created window. For example
   // to register the root window (called by TGClient), or a window
   // created via TVirtualX::InitWindow() (id is obtained with TVirtualX::GetWindowID()).

   fLayoutManager = 0;
   fList          = new TList;
   fLayoutBroken  = kFALSE;
   fMustCleanup   = kNoCleanup;
   fMapSubwindows = fParent->IsMapSubwindows();
   if (!fgDefaultHints)
      fgDefaultHints = new TGLayoutHints;

   SetLayoutManager(new TGVerticalLayout(this));

   SetWindowName();
}

//______________________________________________________________________________
TGCompositeFrame::~TGCompositeFrame()
{
   // Delete a composite frame.

   if (fMustCleanup != kNoCleanup) {
      Cleanup();
   } else {
      TGFrameElement *el = 0;
      TIter next(fList);

      while ((el = (TGFrameElement *) next())) {
         fList->Remove(el);
         delete el;
      }
   }

   delete fList;
   delete fLayoutManager;
   fList = 0;
   fLayoutManager = 0;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::IsEditable() const
{
   // Return kTRUE if frame is being edited.

   return (fClient->GetRoot() == (TGWindow*)this);
}

//______________________________________________________________________________
void TGCompositeFrame::SetEditable(Bool_t on)
{
   // Switch ON/OFF edit mode.
   // If edit mode is ON it is possible:
   //
   //  1. embed other ROOT GUI application (a la ActiveX)
   //
   //  For example:
   //    TGMainFrame *m = new TGMainFrame(gClient->GetRoot(), 500, 500);
   //    m->SetEditable();
   //    gSystem->Load("$ROOTSYS/test/Aclock"); // load Aclock demo
   //    Aclock a;
   //    gROOT->Macro("$ROOTSYS/tutorials/gui/guitest.C");
   //    m->SetEditable(0);
   //    m->MapWindow();
   //

   if (on && ((fEditDisabled & kEditDisable) ||
              (fEditDisabled & kEditDisableLayout))) return;

   if (on) {
      fClient->SetRoot(this);
   } else {
      fClient->SetRoot(0);
   }
   if (gDragManager) gDragManager->SetEditable(on);
}

//______________________________________________________________________________
void TGCompositeFrame::Cleanup()
{
   // Cleanup and delete all objects contained in this composite frame.
   // This will delete all objects added via AddFrame().
   // CAUTION: all objects (frames and layout hints) must be unique, i.e.
   // cannot be shared.

   if (!fList) return;

   TGFrameElement *el;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      if (el->fFrame) {
         el->fFrame->SetFrameElement(0);
         if (!gVirtualX->InheritsFrom("TGX11") && !gVirtualX->InheritsFrom("TGCocoa"))
            el->fFrame->DestroyWindow();
         delete el->fFrame;
      }

      if (el->fLayout && (el->fLayout != fgDefaultHints) &&
          (el->fLayout->References() > 0)) {
         el->fLayout->RemoveReference();
         if (!el->fLayout->References()) {
            el->fLayout->fFE = 0;
            delete el->fLayout;
         }
      }
      fList->Remove(el);
      delete el;
   }
}

//______________________________________________________________________________
void TGCompositeFrame::SetLayoutManager(TGLayoutManager *l)
{
   // Set the layout manager for the composite frame.
   // The layout manager is adopted by the frame and will be deleted
   // by the frame.

   if (l) {
      delete fLayoutManager;
      fLayoutManager = l;
   } else
      Error("SetLayoutManager", "no layout manager specified");
}

//______________________________________________________________________________
void TGCompositeFrame::SetLayoutBroken(Bool_t on)
{
   // Set broken layout. No Layout method is called.

   fLayoutBroken = on;
}

//______________________________________________________________________________
void TGCompositeFrame::SetEditDisabled(UInt_t on)
{
   // Set edit disable flag for this frame and subframes
   //
   //  - if (on & kEditDisable) - disable edit for this frame and all subframes.

   fEditDisabled = on;
   UInt_t set = on & kEditDisable;

   // propagate only kEditDisable
   if (set == kEditDisable) {

      TGFrameElement *el;
      TIter next(fList);
      while ((el = (TGFrameElement *) next())) {
         if (el->fFrame) {
            el->fFrame->SetEditDisabled(set);
         }
      }
   }
}

//______________________________________________________________________________
void TGCompositeFrame::ChangeOptions(UInt_t options)
{
   // Change composite frame options. Options is an OR of the EFrameTypes.

   TGFrame::ChangeOptions(options);

   if (options & kHorizontalFrame)
      SetLayoutManager(new TGHorizontalLayout(this));
   else if (options & kVerticalFrame)
      SetLayoutManager(new TGVerticalLayout(this));
}

//______________________________________________________________________________
void TGCompositeFrame::SetCleanup(Int_t mode)
{
   // Turn on automatic cleanup of child frames in dtor.
   //
   // if mode = kNoCleanup    - no automatic cleanup
   // if mode = kLocalCleanup - automatic cleanup in this composite frame only
   // if mode = kDeepCleanup  - automatic deep cleanup in this composite frame
   //                           and all child composite frames (hierarchical)
   //
   // Attention!
   //    Hierarchical cleaning is dangerous and must be used with caution.
   //    There are many GUI components (in ROOT and in user code) which do not
   //    use Clean method in destructor ("custom deallocation").
   //    Adding such component to GUI container which is using hierarchical
   //    cleaning will produce seg. violation when container is deleted.
   //    The reason is double deletion: first whem Clean method is invoked,
   //    then at "custom deallocation".
   //    We are going to correct all ROOT code to make it to be
   //    consitent with hierarchical cleaning scheeme.

   if (mode == fMustCleanup)
      return;

   fMustCleanup = mode;

   if (fMustCleanup == kDeepCleanup) {
      TGFrameElement *el;
      TIter next(fList);

      while ((el = (TGFrameElement *) next())) {
         if (el->fFrame->InheritsFrom(TGCompositeFrame::Class())) {
            el->fFrame->SetCleanup(kDeepCleanup);
         }
      }
   }
}

//______________________________________________________________________________
TGFrameElement* TGCompositeFrame::FindFrameElement(TGFrame *f) const
{
   // Find frame-element holding frame f.

   if (!fList) return 0;

   TGFrameElement *el;
   TIter next(fList);

   while ((el = (TGFrameElement *) next()))
      if (el->fFrame == f)
         return el;

   return 0;
}

//______________________________________________________________________________
void TGCompositeFrame::AddFrame(TGFrame *f, TGLayoutHints *l)
{
   // Add frame to the composite frame using the specified layout hints.
   // If no hints are specified default hints TGLayoutHints(kLHintsNormal,0,0,0,0)
   // will be used. Most of the time, however, you will want to provide
   // specific hints. User specified hints can be reused many times
   // and need to be destroyed by the user. The added frames cannot not be
   // added to different composite frames but still need to be deleted by
   // the user.

   TGFrameElement *nw = new TGFrameElement(f, l ? l : fgDefaultHints);
   fList->Add(nw);

   // in case of recusive cleanup, propagate cleanup setting to all
   // child composite frames
   if (fMustCleanup == kDeepCleanup)
      f->SetCleanup(kDeepCleanup);
}

//______________________________________________________________________________
void TGCompositeFrame::RemoveAll()
{
   // Remove all frames from composite frame.

   if (!fList) return;

   TGFrameElement *el;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      fList->Remove(el);
      if (el->fLayout) el->fLayout->RemoveReference();
//       el->fFrame->SetFrameElement(0);
      delete el;
   }
}

//______________________________________________________________________________
void TGCompositeFrame::RemoveFrame(TGFrame *f)
{
   // Remove frame from composite frame.

   TGFrameElement *el = FindFrameElement(f);

   if (el) {
      fList->Remove(el);
      if (el->fLayout) el->fLayout->RemoveReference();
      f->SetFrameElement(0);
      delete el;
   }
}

//______________________________________________________________________________
void TGCompositeFrame::MapSubwindows()
{
   // Map all sub windows that are part of the composite frame.

   if (!fMapSubwindows) {
      //MapWindow();
      return;
   }

   TGWindow::MapSubwindows();

   if (!fList) return;

   TGFrameElement *el;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      if (el->fFrame) {
         el->fFrame->MapSubwindows();
         TGFrameElement *fe = el->fFrame->GetFrameElement();
         if (fe) fe->fState |= kIsVisible;
      }
   }
}

//______________________________________________________________________________
void TGCompositeFrame::HideFrame(TGFrame *f)
{
   // Hide sub frame.

   TGFrameElement *el = FindFrameElement(f);

   if (el) {
      el->fState = 0;
      el->fFrame->UnmapWindow();
      Layout();
   }
}

//______________________________________________________________________________
void TGCompositeFrame::ShowFrame(TGFrame *f)
{
   // Show sub frame.

   TGFrameElement *el = FindFrameElement(f);

   if (el) {
      el->fState = 1;
      el->fFrame->MapWindow();
      Layout();
   }
}

//______________________________________________________________________________
Int_t TGCompositeFrame::GetState(TGFrame *f) const
{
   // Get state of sub frame.

   TGFrameElement *el = FindFrameElement(f);

   if (el)
      return el->fState;
   else
      return 0;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::IsVisible(TGFrame *f) const
{
   // Get state of sub frame.

   TGFrameElement *el = FindFrameElement(f);

   if (el)
      return (el->fState & kIsVisible);
   else
      return kFALSE;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::IsArranged(TGFrame *f) const
{
   // Get state of sub frame.

   TGFrameElement *el = FindFrameElement(f);

   if (el)
      return (el->fState & kIsArranged);
   else
      return kFALSE;
}

//______________________________________________________________________________
void TGCompositeFrame::Layout()
{
   // Layout the elements of the composite frame.

   if (IsLayoutBroken()) return;
   fLayoutManager->Layout();
}

//______________________________________________________________________________
void TGCompositeFrame::Print(Option_t *option) const
{
   // Print all frames in this composite frame.

   TString opt = option;
   if (opt.Contains("tree")) {
      TGWindow::Print(option);
      return;
   }

   TGFrameElement *el;
   TIter next(fList);
   TString tab = option;

   TGFrame::Print(tab.Data());
   tab += "   ";
   while ((el = (TGFrameElement*)next())) {
      el->fFrame->Print(tab.Data());
   }
}

//______________________________________________________________________________
void TGCompositeFrame::ChangeSubframesBackground(Pixel_t back)
{
   // Change background color for this frame and all subframes.

   TGFrame::ChangeBackground(back);
   TGFrameElement *el;

   TIter next(fList);

   while ((el = (TGFrameElement*)next())) {
      el->fFrame->SetBackgroundColor(back);
      if (el->fFrame->InheritsFrom(TGCompositeFrame::Class())) {
         ((TGCompositeFrame*)el->fFrame)->ChangeSubframesBackground(back);
      }
      fClient->NeedRedraw(el->fFrame);
   }
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
TGFrame *TGCompositeFrame::GetFrameFromPoint(Int_t x, Int_t y)
{
   // Get frame located at specified point.

   if (!Contains(x, y)) return 0;

   if (!fList) return this;

   TGFrame *f;
   TGFrameElement *el;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      //if (el->fFrame->IsVisible()) { //for this need to move IsVisible to TGFrame
      if (el->fState & kIsVisible) {
         f = el->fFrame->GetFrameFromPoint(x - el->fFrame->GetX(),
                                           y - el->fFrame->GetY());
         if (f) return f;
      }
   }
   return this;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::TranslateCoordinates(TGFrame *child, Int_t x, Int_t y,
                                              Int_t &fx, Int_t &fy)
{
   // Translate coordinates to child frame.

   if (child == this) {
      fx = x;
      fy = y;
      return kTRUE;
   }

   if (!Contains(x, y)) return kFALSE;

   if (!fList) return kFALSE;

   TGFrameElement *el;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      if (el->fFrame == child) {
         fx = x - el->fFrame->GetX();
         fy = y - el->fFrame->GetY();
         return kTRUE;
      } else if (el->fFrame->IsComposite()) {
         if (((TGCompositeFrame *)el->fFrame)->TranslateCoordinates(child,
              x - el->fFrame->GetX(), y - el->fFrame->GetY(), fx, fy))
            return kTRUE;
      }
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::HandleDragEnter(TGFrame *)
{
   // Handle drag enter event.

   if (fClient && fClient->IsEditable() &&
       (fId != fClient->GetRoot()->GetId())) {

      // the dragged frame cannot be droppped
      if (fEditDisabled & (kEditDisable | kEditDisableLayout)) return kFALSE;

      //
      if (IsEditable()) {
         return kTRUE;
      }

      Float_t r, g, b;
      TColor::Pixel2RGB(fBackground, r, g, b);
      r *= 1.12;
      g *= 1.13;
      b *= 1.12;
      Pixel_t back = TColor::RGB2Pixel(r, g, b);
      gVirtualX->SetWindowBackground(fId, back);
      DoRedraw();
      return kTRUE;
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::HandleDragLeave(TGFrame *)
{
   // Handle drag leave event.

   if (fClient && fClient->IsEditable() &&
       (fId != fClient->GetRoot()->GetId())) {

      if (fEditDisabled & (kEditDisable | kEditDisableLayout)) return kFALSE;

      gVirtualX->SetWindowBackground(fId, fBackground);
      DoRedraw();
      return kTRUE;
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::HandleDragMotion(TGFrame *)
{
   // Handle drag motion event.

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TGCompositeFrame::HandleDragDrop(TGFrame *frame, Int_t x, Int_t y,
                                        TGLayoutHints *lo)
{
   // Handle drop event.

   if (fClient && fClient->IsEditable() && frame && (x >= 0) && (y >= 0) &&
       (x + frame->GetWidth() <= fWidth) && (y + frame->GetHeight() <= fHeight)) {

      if (fEditDisabled & (kEditDisable | kEditDisableLayout)) return kFALSE;

      frame->ReparentWindow(this, x, y);
      AddFrame(frame, lo);
      frame->MapWindow();
      SetEditable(kTRUE);
      return kTRUE;
   }

   return kFALSE;
}


//______________________________________________________________________________
TGMainFrame::TGMainFrame(const TGWindow *p, UInt_t w, UInt_t h,
        UInt_t options) : TGCompositeFrame(p, w, h, options | kMainFrame)
{
   // Create a top level main frame. A main frame interacts
   // with the window manager.

   // WMDeleteNotify causes the system to send a kClientMessage to the
   // window with fFormat=32 and fUser[0]=gWM_DELETE_WINDOW when window
   // closed via WM

   gVirtualX->WMDeleteNotify(fId);

   fBindList = new TList;

   fMWMValue    = 0;
   fMWMFuncs    = 0;
   fMWMInput    = 0;
   fWMX         = -1;
   fWMY         = -1;
   fWMWidth     = (UInt_t) -1;
   fWMHeight    = (UInt_t) -1;
   fWMMinWidth  = (UInt_t) -1;
   fWMMinHeight = (UInt_t) -1;
   fWMMaxWidth  = (UInt_t) -1;
   fWMMaxHeight = (UInt_t) -1;
   fWMWidthInc  = (UInt_t) -1;
   fWMHeightInc = (UInt_t) -1;
   fWMInitState = (EInitialState) 0;

   gVirtualX->GrabKey(fId, gVirtualX->KeysymToKeycode(kKey_s),
                      kKeyControlMask, kTRUE);
   if (p == fClient->GetDefaultRoot()) {
      fMWMValue    = kMWMDecorAll;
      fMWMFuncs    = kMWMFuncAll;
      fMWMInput    = kMWMInputModeless;
      gVirtualX->SetMWMHints(fId, fMWMValue, fMWMFuncs, fMWMInput);
   }
   // if parent is editing/embedable add this frame to the parent
   if (fClient->IsEditable() && (p == fClient->GetRoot())) {
      TGCompositeFrame *frame;
      if (p && p->InheritsFrom(TGCompositeFrame::Class())) {
         frame = (TGCompositeFrame*)p;
         frame->AddFrame(this, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));

         // used during paste operation
         if (gDragManager && gDragManager->IsPasting()) {
            gDragManager->SetPasteFrame(this);
         }
      }
   }
   //AddInput(kButtonPressMask); // to allow Drag and Drop
   // Create Drag&Drop Manager and define a few DND types
   fDNDTypeList = new Atom_t[3];
   fDNDTypeList[0] = gVirtualX->InternAtom("application/root", kFALSE);
   fDNDTypeList[1] = gVirtualX->InternAtom("text/uri-list", kFALSE);
   fDNDTypeList[2] = 0;
   if (!gDNDManager)
      new TGDNDManager(this, fDNDTypeList);
   SetWindowName();
}

//______________________________________________________________________________
TGMainFrame::~TGMainFrame()
{
   // TGMainFrame destructor.

   delete [] fDNDTypeList;
   if (fBindList) {
      fBindList->Delete();
      delete fBindList;
   }
}

//______________________________________________________________________________
Bool_t TGMainFrame::SaveFrameAsCodeOrImage()
{
   // Opens dialog window allowing user to save the frame contents
   // as a ROOT macro or as an image.
   // Returns kTRUE if something was saved.
   //
   // This is bound to Ctrl-S by default.

   static TString dir(".");
   static Bool_t overwr = kFALSE;

   Bool_t repeat_save;
   do {
      repeat_save = kFALSE;

      TGFileInfo fi;
      TGMainFrame *main = (TGMainFrame*)GetMainFrame();
      fi.fFileTypes = gSaveMacroTypes;
      fi.fIniDir    = StrDup(dir);
      fi.fOverwrite = overwr;
      new TGFileDialog(fClient->GetDefaultRoot(), this, kFDSave, &fi);
      if (!fi.fFilename) return kFALSE;
      dir = fi.fIniDir;
      overwr = fi.fOverwrite;
      TString fname = gSystem->UnixPathName(fi.fFilename);
      if (fname.EndsWith(".C"))
         main->SaveSource(fname.Data(), "");
      else {
         TImage::EImageFileTypes gtype = TImage::kUnknown;
         if (fname.EndsWith("gif")) {
            gtype = TImage::kGif;
         } else if (fname.EndsWith(".png")) {
            gtype = TImage::kPng;
         } else if (fname.EndsWith(".jpg")) {
            gtype = TImage::kJpeg;
         } else if (fname.EndsWith(".tiff")) {
            gtype = TImage::kTiff;
         } else if (fname.EndsWith(".xpm")) {
            gtype = TImage::kXpm;
         }
         if (gtype != TImage::kUnknown) {
            Int_t saver = gErrorIgnoreLevel;
            gErrorIgnoreLevel = kFatal;
            TImage *img = TImage::Create();
            RaiseWindow();
            img->FromWindow(GetId());
            img->WriteImage(fname, gtype);
            gErrorIgnoreLevel = saver;
            delete img;
         }
         else {
            Int_t retval;
            new TGMsgBox(fClient->GetDefaultRoot(), this, "Error...",
                         TString::Format("file (%s) cannot be saved with this extension",
                                         fname.Data()), kMBIconExclamation,
                         kMBRetry | kMBCancel, &retval);
            repeat_save = (retval == kMBRetry);
         }
      }
   } while (repeat_save);

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGMainFrame::HandleKey(Event_t *event)
{
   // Handle keyboard events.

   if (fBindList) {

      TIter next(fBindList);
      TGMapKey *m;
      TGFrame  *w = 0;

      while ((m = (TGMapKey *) next())) {
         if (m->fKeyCode == event->fCode) {
            w = (TGFrame *) m->fWindow;
            if (w->HandleKey(event)) return kTRUE;
         }
      }
   }

   if ((event->fType == kGKeyPress) && (event->fState & kKeyControlMask)) {
      UInt_t keysym;
      char str[2];
      gVirtualX->LookupString(event, str, sizeof(str), keysym);

      if ((keysym & ~0x20) == kKey_S) { // case insensitive ctrl-s
         return SaveFrameAsCodeOrImage();
      }
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TGMainFrame::BindKey(const TGWindow *w, Int_t keycode, Int_t modifier) const
{
   // Bind key to a window.

   TList *list = fBindList;
   Handle_t id = fId;

   if (fClient->IsEditable()) {
      TGMainFrame *main = (TGMainFrame*)GetMainFrame();
      list = main->GetBindList();
      id = main->GetId();
   }

   if (list) {
      TGMapKey *m = new TGMapKey(keycode, (TGWindow *)w);
      list->Add(m);
      gVirtualX->GrabKey(id, keycode, modifier, kTRUE);
      return kTRUE;
   }
   return kFALSE;
}

//______________________________________________________________________________
void TGMainFrame::RemoveBind(const TGWindow *, Int_t keycode, Int_t modifier) const
{
   // Remove key binding.

   if (fBindList) {
      TIter next(fBindList);
      TGMapKey *m;
      while ((m = (TGMapKey *) next())) {
         if (m->fKeyCode == (UInt_t) keycode) {
            fBindList->Remove(m);
            delete m;
            gVirtualX->GrabKey(fId, keycode, modifier, kFALSE);
            return;
         }
      }
   }
}

//______________________________________________________________________________
Bool_t TGMainFrame::HandleButton(Event_t *event)
{
   // Handle mouse button events.

   if (event->fType == kButtonRelease) {
      if (gDNDManager->IsDragging()) gDNDManager->Drop();
   }
   return TGCompositeFrame::HandleButton(event);
}


//______________________________________________________________________________
Bool_t TGMainFrame::HandleMotion(Event_t *event)
{
   // Handle mouse motion events.

   if (gDNDManager && gDNDManager->IsDragging()) {
      gDNDManager->Drag(event->fXRoot, event->fYRoot,
                        TGDNDManager::GetDNDActionCopy(), event->fTime);
   }
   return TGCompositeFrame::HandleMotion(event);
}

//______________________________________________________________________________
Bool_t TGMainFrame::HandleSelection(Event_t *event)
{
   // Handle primary selection event.

   if ((Atom_t)event->fUser[1] == TGDNDManager::GetDNDSelection()) {
      if (gDNDManager)
         return gDNDManager->HandleSelection(event);
   }
   return TGCompositeFrame::HandleSelection(event);
}

//______________________________________________________________________________
Bool_t TGMainFrame::HandleSelectionRequest(Event_t *event)
{
   // Handle selection request event.

   if ((Atom_t)event->fUser[1] == TGDNDManager::GetDNDSelection()) {
      if (gDNDManager)
         return gDNDManager->HandleSelectionRequest(event);
   }
   return TGCompositeFrame::HandleSelectionRequest(event);
}

//______________________________________________________________________________
Bool_t TGMainFrame::HandleClientMessage(Event_t *event)
{
   // Handle client messages sent to this frame.

   TGCompositeFrame::HandleClientMessage(event);

   if ((event->fFormat == 32) && ((Atom_t)event->fUser[0] == gWM_DELETE_WINDOW) &&
       (event->fHandle != gROOT_MESSAGE)) {
      Emit("CloseWindow()");
      if (TestBit(kNotDeleted) && !TestBit(kDontCallClose))
         CloseWindow();
   }
   return kTRUE;
}

//______________________________________________________________________________
void TGMainFrame::SendCloseMessage()
{
   // Send close message to self. This method should be called from
   // a button to close this window.

   Event_t event;

   event.fType   = kClientMessage;
   event.fFormat = 32;
   event.fHandle = gWM_DELETE_WINDOW;

   event.fWindow  = GetId();
   event.fUser[0] = (Long_t) gWM_DELETE_WINDOW;
   event.fUser[1] = 0;
   event.fUser[2] = 0;
   event.fUser[3] = 0;
   event.fUser[4] = 0;

   gVirtualX->SendEvent(GetId(), &event);
}

//______________________________________________________________________________
void TGMainFrame::CloseWindow()
{
   // Close and delete main frame. We get here in response to ALT+F4 or
   // a window manager close command. To terminate the application when this
   // happens override this method and call gApplication->Terminate(0) or
   // make a connection to this signal (if after the slot this method
   // should not be called call DontCallClose() in the slot).
   // By default the window will be deleted.

   DeleteWindow();
}

//______________________________________________________________________________
void TGMainFrame::DontCallClose()
{
   // Typically call this method in the slot connected to the CloseWindow()
   // signal to prevent the calling of the default or any derived CloseWindow()
   // methods to prevent premature or double deletion of this window.

   SetBit(kDontCallClose);
}

//______________________________________________________________________________
void TGMainFrame::SetWindowName(const char *name)
{
   // Set window name. This is typically done via the window manager.

   if (!name) {
      TGWindow::SetWindowName();
   } else {
      fWindowName = name;
      gVirtualX->SetWindowName(fId, (char *)name);
   }
}

//______________________________________________________________________________
void TGMainFrame::SetIconName(const char *name)
{
   // Set window icon name. This is typically done via the window manager.

   fIconName = name;
   gVirtualX->SetIconName(fId, (char *)name);
}

//______________________________________________________________________________
const TGPicture *TGMainFrame::SetIconPixmap(const char *iconName)
{
   // Set window icon pixmap by name. This is typically done via the window
   // manager. Icon can be in any image format supported by TImage, e.g.
   // GIF, XPM, PNG, JPG .. or even PS, PDF (see EImageFileTypes in TImage.h
   // for the full list of supported formats).
   //
   // For example,
   //    main_frame->SetIconPixmap("/home/root/icons/bld_rgb.png");

   fIconPixmap = iconName;
   const TGPicture *iconPic = fClient->GetPicture(iconName);
   if (iconPic) {
      Pixmap_t pic = iconPic->GetPicture();
      gVirtualX->SetIconPixmap(fId, pic);
      return iconPic;
   } else
      return 0;
}

//______________________________________________________________________________
void TGMainFrame::SetIconPixmap(char **xpm_array)
{
   // Set window icon by xpm array. That allows to have icons
   // builtin to the source code.
   //
   // For example,
   //    #include "/home/root/icons/bld_rgb.xpm"
   //    //bld_rgb.xpm contains char *bld_rgb[] array
   //    main_frame->SetIconPixmap(bld_rgb);

   TImage *img = TImage::Create();
   if (!img) return;
   img->SetImageBuffer(xpm_array, TImage::kXpm);
   Pixmap_t pic = img->GetPixmap();
   if (pic) {
      gVirtualX->SetIconPixmap(fId, pic);
   } else {
      Warning("SetIconPixmap", "Failed to set window icon from xpm array.");
   }
   delete img;
}

//______________________________________________________________________________
void TGMainFrame::SetClassHints(const char *className, const char *resourceName)
{
   // Set the windows class and resource name. Used to get the right
   // resources from the resource database. However, ROOT applications
   // will typically use the .rootrc file for this.

   fClassName    = className;
   fResourceName = resourceName;
   gVirtualX->SetClassHints(fId, (char *)className, (char *)resourceName);
}

//______________________________________________________________________________
void TGMainFrame::SetMWMHints(UInt_t value, UInt_t funcs, UInt_t input)
{
   // Set decoration style for MWM-compatible wm (mwm, ncdwm, fvwm?).

   if (fClient->IsEditable() && (fParent == fClient->GetRoot())) return;

   fMWMValue = value;
   fMWMFuncs = funcs;
   fMWMInput = input;
   gVirtualX->SetMWMHints(fId, value, funcs, input);
}

//______________________________________________________________________________
void TGMainFrame::SetWMPosition(Int_t x, Int_t y)
{
   // Give the window manager a window position hint.

   if (fClient->IsEditable() && (fParent == fClient->GetRoot())) return;

   fWMX = x;
   fWMY = y;
   gVirtualX->SetWMPosition(fId, x, y);
}

//______________________________________________________________________________
void TGMainFrame::SetWMSize(UInt_t w, UInt_t h)
{
   // Give the window manager a window size hint.

   if (fClient->IsEditable() && (fParent == fClient->GetRoot())) return;

   fWMWidth  = w;
   fWMHeight = h;
   gVirtualX->SetWMSize(fId, w, h);
}

//______________________________________________________________________________
void TGMainFrame::SetWMSizeHints(UInt_t wmin, UInt_t hmin,
                                 UInt_t wmax, UInt_t hmax,
                                 UInt_t winc, UInt_t hinc)
{
   // Give the window manager minimum and maximum size hints. Also
   // specify via winc and hinc the resize increments.

   if (fClient->IsEditable() && (fParent == fClient->GetRoot())) return;

   fMinWidth    = fWMMinWidth  = wmin;
   fMinHeight   = fWMMinHeight = hmin;
   fMaxWidth    = fWMMaxWidth  = wmax;
   fMaxHeight   = fWMMaxHeight = hmax;
   fWMWidthInc  = winc;
   fWMHeightInc = hinc;
   gVirtualX->SetWMSizeHints(fId, wmin, hmin, wmax, hmax, winc, hinc);
}

//______________________________________________________________________________
void TGMainFrame::SetWMState(EInitialState state)
{
   // Set the initial state of the window. Either kNormalState or kIconicState.

   if (fClient->IsEditable() && (fParent == fClient->GetRoot())) return;

   fWMInitState = state;
   gVirtualX->SetWMState(fId, state);
}


//______________________________________________________________________________
TGTransientFrame::TGTransientFrame(const TGWindow *p, const TGWindow *main,
                                   UInt_t w, UInt_t h, UInt_t options)
   : TGMainFrame(p, w, h, options | kTransientFrame)
{
   // Create a transient window. A transient window is typically used for
   // dialog boxes.

   fMain = main;
   if (!fMain && gClient)
      fMain = gClient->GetRoot();

   if (fMain) {
      gVirtualX->SetWMTransientHint(fId, fMain->GetId());
   }
}

//______________________________________________________________________________
void TGTransientFrame::CenterOnParent(Bool_t croot, EPlacement pos)
{
   // Position transient frame centered relative to the parent frame.
   // If fMain is 0 (i.e. TGTransientFrame is acting just like a
   // TGMainFrame) and croot is true, the window will be centered on
   // the root window, otherwise no action is taken and the default
   // wm placement will be used.

   Int_t x=0, y=0, ax, ay;
   Window_t wdummy;

   UInt_t dw = fClient->GetDisplayWidth();
   UInt_t dh = fClient->GetDisplayHeight();

   if (fMain) {

      switch (pos) {
         case kCenter:
            x = (Int_t)(((TGFrame *) fMain)->GetWidth() - fWidth) >> 1;
            y = (Int_t)(((TGFrame *) fMain)->GetHeight() - fHeight) >> 1;
            break;
         case kRight:
            x = (Int_t)(((TGFrame *) fMain)->GetWidth() - (fWidth >> 1));
            y = (Int_t)(((TGFrame *) fMain)->GetHeight() - fHeight) >> 1;
            break;
         case kLeft:
            x = (Int_t)(-1 * (Int_t)(fWidth >> 1));
            y = (Int_t)(((TGFrame *) fMain)->GetHeight() - fHeight) >> 1;
            break;
         case kTop:
            x = (Int_t)(((TGFrame *) fMain)->GetWidth() - fWidth) >> 1;
            y = (Int_t)(-1 * (Int_t)(fHeight >> 1));
            break;
         case kBottom:
            x = (Int_t)(((TGFrame *) fMain)->GetWidth() - fWidth) >> 1;
            y = (Int_t)(((TGFrame *) fMain)->GetHeight() - (fHeight >> 1));
            break;
         case kTopLeft:
            x = (Int_t)(-1 * (Int_t)(fWidth >> 1));
            y = (Int_t)(-1 * (Int_t)(fHeight >> 1));
            break;
         case kTopRight:
            x = (Int_t)(((TGFrame *) fMain)->GetWidth() - (fWidth >> 1));
            y = (Int_t)(-1 * (Int_t)(fHeight >> 1));
            break;
         case kBottomLeft:
            x = (Int_t)(-1 * (Int_t)(fWidth >> 1));
            y = (Int_t)(((TGFrame *) fMain)->GetHeight() - (fHeight >> 1));
            break;
         case kBottomRight:
            x = (Int_t)(((TGFrame *) fMain)->GetWidth() - (fWidth >> 1));
            y = (Int_t)(((TGFrame *) fMain)->GetHeight() - (fHeight >> 1));
            break;
      }

      gVirtualX->TranslateCoordinates(fMain->GetId(), GetParent()->GetId(),
                                      x, y, ax, ay, wdummy);
      if (ax < 10)
         ax = 10;
      else if (ax + fWidth + 10 > dw)
         ax = dw - fWidth - 10;

      if (ay < 20)
         ay = 20;
      else if (ay + fHeight + 50 > dh)
         ay = dh - fHeight - 50;

   } else if (croot) {

      switch (pos) {
         case kCenter:
            x = (dw - fWidth) >> 1;
            y = (dh - fHeight) >> 1;
            break;
         case kRight:
            x = dw - (fWidth >> 1);
            y = (dh - fHeight) >> 1;
            break;
         case kLeft:
            x = -1 * (Int_t)(fWidth >> 1);
            y = (dh - fHeight) >> 1;
            break;
         case kTop:
            x = (dw - fWidth) >> 1;
            y = -1 * (Int_t)(fHeight >> 1);
            break;
         case kBottom:
            x = (dw - fWidth) >> 1;
            y = dh - (fHeight >> 1);
            break;
         case kTopLeft:
            x = -1 * (Int_t)(fWidth >> 1);
            y = -1 * (Int_t)(fHeight >> 1);
            break;
         case kTopRight:
            x = dw - (fWidth >> 1);
            y = -1 * (Int_t)(fHeight >> 1);
            break;
         case kBottomLeft:
            x = -1 * (Int_t)(fWidth >> 1);
            y = dh - (fHeight >> 1);
            break;
         case kBottomRight:
            x = dw - (fWidth >> 1);
            y = dh - (fHeight >> 1);
            break;
      }

      ax = x;
      ay = y;

   } else {

      return;

   }

   Move(ax, ay);
   SetWMPosition(ax, ay);
}

//______________________________________________________________________________
TGGroupFrame::TGGroupFrame(const TGWindow *p, TGString *title,
                           UInt_t options, GContext_t norm,
                           FontStruct_t font, Pixel_t back) :
   TGCompositeFrame(p, 1, 1, options, back)
{
   // Create a group frame. The title will be adopted and deleted by the
   // group frame.

   fText       = title;
   fFontStruct = font;
   fNormGC     = norm;
   fTitlePos   = kLeft;
   fHasOwnFont = kFALSE;

   int max_ascent, max_descent;
   gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
   fBorderWidth = max_ascent + max_descent + 1;
}

//______________________________________________________________________________
TGGroupFrame::TGGroupFrame(const TGWindow *p, const char *title,
                           UInt_t options, GContext_t norm,
                           FontStruct_t font, Pixel_t back) :
   TGCompositeFrame(p, 1, 1, options, back)
{
   // Create a group frame.

   fText       = new TGString(!p && !title ? GetName() : title);
   fFontStruct = font;
   fNormGC     = norm;
   fTitlePos   = kLeft;
   fHasOwnFont = kFALSE;

   int max_ascent, max_descent;
   gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
   fBorderWidth = max_ascent + max_descent + 1;

   SetWindowName();
}

//______________________________________________________________________________
TGGroupFrame::~TGGroupFrame()
{
   // Delete a group frame.

   if (fHasOwnFont) {
      TGGCPool *pool = fClient->GetGCPool();
      TGGC *gc = pool->FindGC(fNormGC);
      pool->FreeGC(gc);
   }
   delete fText;
}

//______________________________________________________________________________
TGDimension TGGroupFrame::GetDefaultSize() const
{
   // Returns default size.

   UInt_t tw = gVirtualX->TextWidth(fFontStruct, fText->GetString(),
                                    fText->GetLength()) + 24;

   TGDimension dim = TGCompositeFrame::GetDefaultSize();

   return  tw>dim.fWidth ? TGDimension(tw, dim.fHeight) : dim;
}

//______________________________________________________________________________
void TGGroupFrame::DoRedraw()
{
   // Redraw the group frame. Need special DoRedraw() since we need to
   // redraw with fBorderWidth=0.

   gVirtualX->ClearArea(fId, 0, 0, fWidth, fHeight);

   DrawBorder();
}


//______________________________________________________________________________
void TGGroupFrame::SetTextColor(Pixel_t color, Bool_t local)
{
   // Changes text color.
   // If local is true color is changed locally, otherwise - globally.

   TGGCPool *pool =  fClient->GetResourcePool()->GetGCPool();
   TGGC *gc = pool->FindGC(fNormGC);

   if (gc && local) {
      gc = pool->GetGC((GCValues_t*)gc->GetAttributes(), kTRUE); // copy
      fHasOwnFont = kTRUE;
   }
   if (gc) {
      gc->SetForeground(color);
      fNormGC = gc->GetGC();
   }
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGGroupFrame::SetTextFont(FontStruct_t font, Bool_t local)
{
   // Changes text font.
   // If local is true font is changed locally - otherwise globally.

   FontH_t v = gVirtualX->GetFontHandle(font);
   if (!v) return;

   fFontStruct = font;

   TGGCPool *pool =  fClient->GetResourcePool()->GetGCPool();
   TGGC *gc = pool->FindGC(fNormGC);

   if (gc && local) {
      gc = pool->GetGC((GCValues_t*)gc->GetAttributes(), kTRUE); // copy
      fHasOwnFont = kTRUE;
   }
   if (gc) {
      gc->SetFont(v);
      fNormGC = gc->GetGC();
   }
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGGroupFrame::SetTextFont(const char *fontName, Bool_t local)
{
   // Changes text font specified by name.
   // If local is true font is changed locally - otherwise globally.

   TGFont *font = fClient->GetFont(fontName);

   if (font) {
      SetTextFont(font->GetFontStruct(), local);
   }
}

//______________________________________________________________________________
Bool_t TGGroupFrame::HasOwnFont() const
{
   // Returns kTRUE if text attributes are unique,
   // returns kFALSE if text attributes are shared (global).

   return fHasOwnFont;
}

//______________________________________________________________________________
void TGGroupFrame::DrawBorder()
{
   // Draw border of around the group frame.
   //
   // if frame is kRaisedFrame  - a frame border is of "wall style",
   // otherwise of "groove style".

   Int_t x, y, l, t, r, b, gl, gr, sep, max_ascent, max_descent;

   UInt_t tw = gVirtualX->TextWidth(fFontStruct, fText->GetString(), fText->GetLength());
   gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);

   l = 0;
   t = (max_ascent + max_descent + 2) >> 1;
   r = fWidth - 1;
   // next three lines are for backward compatibility in case of horizontal layout
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager * lm = GetLayoutManager();
   if ((lm->InheritsFrom(TGHorizontalLayout::Class())) ||
       (lm->InheritsFrom(TGMatrixLayout::Class())))
      b = fHeight - 1;
   else
      b = fHeight - t;

   sep = 3;
   UInt_t rr = 5 + (sep << 1) + tw;

   switch (fTitlePos) {
      case kRight:
         gl = fWidth>rr ? Int_t(fWidth - rr) : 5 + sep;
         break;
      case kCenter:
         gl = fWidth>tw ? Int_t((fWidth - tw)>>1) - sep : 5 + sep;
         break;
      case kLeft:
      default:
         gl = 5 + sep;
   }
   gr = gl + tw + (sep << 1);

   switch (fOptions & (kSunkenFrame | kRaisedFrame)) {
      case kRaisedFrame:
         gVirtualX->DrawLine(fId, GetHilightGC()(),  l,   t,   gl,  t);
         gVirtualX->DrawLine(fId, GetShadowGC()(), l+1, t+1, gl,  t+1);

         gVirtualX->DrawLine(fId, GetHilightGC()(),  gr,  t,   r-1, t);
         gVirtualX->DrawLine(fId, GetShadowGC()(), gr,  t+1, r-2, t+1);

         gVirtualX->DrawLine(fId, GetHilightGC()(),  r-1, t,   r-1, b-1);
         gVirtualX->DrawLine(fId, GetShadowGC()(), r,   t,   r,   b);

         gVirtualX->DrawLine(fId, GetHilightGC()(),  r-1, b-1, l,   b-1);
         gVirtualX->DrawLine(fId, GetShadowGC()(), r,   b,   l,   b);

         gVirtualX->DrawLine(fId, GetHilightGC()(),  l,   b-1, l,   t);
         gVirtualX->DrawLine(fId, GetShadowGC()(), l+1, b-2, l+1, t+1);
         break;
      case kSunkenFrame:
      default:
         gVirtualX->DrawLine(fId, GetShadowGC()(),  l,   t,   gl,  t);
         gVirtualX->DrawLine(fId, GetHilightGC()(), l+1, t+1, gl,  t+1);

         gVirtualX->DrawLine(fId, GetShadowGC()(),  gr,  t,   r-1, t);
         gVirtualX->DrawLine(fId, GetHilightGC()(), gr,  t+1, r-2, t+1);

         gVirtualX->DrawLine(fId, GetShadowGC()(),  r-1, t,   r-1, b-1);
         gVirtualX->DrawLine(fId, GetHilightGC()(), r,   t,   r,   b);

         gVirtualX->DrawLine(fId, GetShadowGC()(),  r-1, b-1, l,   b-1);
         gVirtualX->DrawLine(fId, GetHilightGC()(), r,   b,   l,   b);

         gVirtualX->DrawLine(fId, GetShadowGC()(),  l,   b-1, l,   t);
         gVirtualX->DrawLine(fId, GetHilightGC()(), l+1, b-2, l+1, t+1);
         break;
   }

   x = gl + sep;
   y = 1;

   fText->Draw(fId, fNormGC, x, y + max_ascent);
}

//______________________________________________________________________________
void TGGroupFrame::SetTitle(TGString *title)
{
   // Set or change title of the group frame. Titlte TGString is adopted
   // by the TGGroupFrame.

   if (!title) {
      Warning("SetTitle", "title cannot be 0, try \"\"");
      title = new TGString("");
   }

   delete fText;

   fText = title;
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGGroupFrame::SetTitle(const char *title)
{
   // Set or change title of the group frame.

   if (!title) {
      Error("SetTitle", "title cannot be 0, try \"\"");
      return;
   }

   SetTitle(new TGString(title));
}

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

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

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

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

//______________________________________________________________________________
TGHeaderFrame::TGHeaderFrame(const TGWindow *p, UInt_t w, UInt_t h,
                 UInt_t options, Pixel_t back) :
  TGHorizontalFrame(p, w, h, options | kVerticalFrame, back)
{
   // Header Frame constructor.

   fSplitCursor = kNone;
   fSplitCursor = gVirtualX->CreateCursor(kArrowHor);
   fOverSplitter = false;
   fOverButton = -1;
   fLastButton = -1;
   fNColumns   = 1;
   fColHeader  = 0;
   fSplitHeader = 0;

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

//______________________________________________________________________________
void TGHeaderFrame::SetColumnsInfo(Int_t nColumns, TGTextButton  **colHeader,
               TGVFileSplitter  **splitHeader)
{
   // Set columns information in the header frame.

   fNColumns = nColumns;
   fColHeader = colHeader;
   fSplitHeader = splitHeader;
}

//______________________________________________________________________________
Bool_t TGHeaderFrame::HandleButton(Event_t* event)
{
   // Handle mouse button event in header frame.

   if ( event->fY > 0 &&
        event->fY <= (Int_t) this->GetHeight() ) {
      for (Int_t i = 1; i < fNColumns; ++i ) {
         if ( event->fX < fColHeader[i]->GetX() &&
            event->fX >= fColHeader[i-1]->GetX() ) {
            if ( fOverSplitter ) {
               if ( event->fX <= fColHeader[i-1]->GetX() + 5 )
                  fSplitHeader[i-2]->HandleButton(event);
               else
                  fSplitHeader[i-1]->HandleButton(event);
            } else {
               if ( event->fType == kButtonPress ) {
                  fLastButton = i - 1;
               } else {
                  fLastButton = -1;
               }
               event->fX -= fColHeader[i-1]->GetX();
               fColHeader[i-1]->HandleButton(event);
            }
            break;
         }
      }
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGHeaderFrame::HandleDoubleClick(Event_t *event)
{
   // Handle double click mouse event in header frame.

   if ( event->fY > 0 &&
        event->fY <= (Int_t) this->GetHeight() ) {
      for (Int_t i = 1; i < fNColumns; ++i ) {
         if ( event->fX < fColHeader[i]->GetX() &&
            event->fX >= fColHeader[i-1]->GetX() ) {
            if ( fOverSplitter ) {
               if ( event->fX <= fColHeader[i-1]->GetX() + 5 )
                  fSplitHeader[i-2]->HandleDoubleClick(event);
               else
                  fSplitHeader[i-1]->HandleDoubleClick(event);
            } else {
               event->fX -= fColHeader[i-1]->GetX();
               fColHeader[i-1]->HandleDoubleClick(event);
            }
            break;
         }
      }
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGHeaderFrame::HandleMotion(Event_t* event)
{
   // Handle mouse motion events in header frame.

   if ( event->fY > 0 &&
        event->fY <= (Int_t) this->GetHeight() ) {
      Bool_t inMiddle = false;

      for (Int_t i = 1; i < fNColumns; ++i ) {
         if ( event->fX > fColHeader[i]->GetX() - 5 &&
            event->fX < fColHeader[i]->GetX() + 5 ) {
            inMiddle = true;
         }
         if ( event->fX < fColHeader[i]->GetX() &&
            event->fX >= fColHeader[i-1]->GetX() ) {
            fOverButton = i - 1;
         }
      }
      fOverSplitter = inMiddle;
      if ( fOverSplitter ) {
         gVirtualX->SetCursor(fId, fSplitCursor);
      }
      else {
         gVirtualX->SetCursor(fId, kNone);
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
void TGFrame::SaveUserColor(std::ostream &out, Option_t *option)
{
   // Save a user color in a C++ macro file - used in SavePrimitive().

   char quote = '"';

   if (gROOT->ClassSaved(TGFrame::Class())) {
      out << std::endl;
   } else {
      //  declare a color variable to reflect required user changes
      out << std::endl;
      out << "   ULong_t ucolor;        // will reflect user color changes" << std::endl;
   }
   ULong_t ucolor;
   if (option && !strcmp(option, "slider"))
      ucolor = GetDefaultFrameBackground();
   else
      ucolor = GetBackground();
   if ((ucolor != fgUserColor) || (ucolor == GetWhitePixel())) {
      const char *ucolorname = TColor::PixelAsHexString(ucolor);
      out << "   gClient->GetColorByName(" << quote << ucolorname << quote
          << ",ucolor);" << std::endl;
      fgUserColor = ucolor;
   }
}

//______________________________________________________________________________
TString TGFrame::GetOptionString() const
{
   // Returns a frame option string - used in SavePrimitive().

   TString options;

   if (!GetOptions()) {
      options = "kChildFrame";
   } else {
      if (fOptions & kMainFrame) {
         if (options.Length() == 0) options  = "kMainFrame";
         else                       options += " | kMainFrame";
      }
      if (fOptions & kVerticalFrame) {
         if (options.Length() == 0) options  = "kVerticalFrame";
         else                       options += " | kVerticalFrame";
      }
      if (fOptions & kHorizontalFrame) {
         if (options.Length() == 0) options  = "kHorizontalFrame";
         else                       options += " | kHorizontalFrame";
      }
      if (fOptions & kSunkenFrame) {
         if (options.Length() == 0) options  = "kSunkenFrame";
         else                       options += " | kSunkenFrame";
      }
      if (fOptions & kRaisedFrame) {
         if (options.Length() == 0) options  = "kRaisedFrame";
         else                       options += " | kRaisedFrame";
      }
      if (fOptions & kDoubleBorder) {
         if (options.Length() == 0) options  = "kDoubleBorder";
         else                       options += " | kDoubleBorder";
      }
      if (fOptions & kFitWidth) {
         if (options.Length() == 0) options  = "kFitWidth";
         else                       options += " | kFitWidth";
      }
      if (fOptions & kFixedWidth) {
         if (options.Length() == 0) options  = "kFixedWidth";
         else                       options += " | kFixedWidth";
      }
      if (fOptions & kFitHeight) {
         if (options.Length() == 0) options  = "kFitHeight";
         else                       options += " | kFitHeight";
      }
      if (fOptions & kFixedHeight) {
         if (options.Length() == 0) options  = "kFixedHeight";
         else                       options += " | kFixedHeight";
      }
      if (fOptions & kOwnBackground) {
         if (options.Length() == 0) options  = "kOwnBackground";
         else                       options += " | kOwnBackground";
      }
      if (fOptions & kTransientFrame) {
         if (options.Length() == 0) options  = "kTransientFrame";
         else                       options += " | kTransientFrame";
      }
      if (fOptions & kTempFrame) {
         if (options.Length() == 0) options  = "kTempFrame";
         else                       options += " | kTempFrame";
      }
   }
   return options;
}

//______________________________________________________________________________
TString TGMainFrame::GetMWMvalueString() const
{
   // Returns MWM decoration hints as a string - used in SavePrimitive().

   TString hints;

   if (fMWMValue) {
      if (fMWMValue & kMWMDecorAll) {
         if (hints.Length() == 0) hints  = "kMWMDecorAll";
         else                     hints += " | kMWMDecorAll";
      }
      if (fMWMValue & kMWMDecorBorder) {
         if (hints.Length() == 0) hints  = "kMWMDecorBorder";
         else                     hints += " | kMWMDecorBorder";
      }
      if (fMWMValue & kMWMDecorResizeH) {
         if (hints.Length() == 0) hints  = "kMWMDecorResizeH";
         else                     hints += " | kMWMDecorResizeH";
      }
      if (fMWMValue & kMWMDecorTitle) {
         if (hints.Length() == 0) hints  = "kMWMDecorTitle";
         else                     hints += " | kMWMDecorTitle";
      }
      if (fMWMValue & kMWMDecorMenu) {
         if (hints.Length() == 0) hints  = "kMWMDecorMenu";
         else                     hints += " | kMWMDecorMenu";
      }
      if (fMWMValue & kMWMDecorMinimize) {
         if (hints.Length() == 0) hints  = "kMWMDecorMinimize";
         else                     hints += " | kMWMDecorMinimize";
      }
      if (fMWMValue & kMWMDecorMaximize) {
         if (hints.Length() == 0) hints  = "kMWMDecorMaximize";
         else                     hints += " | kMWMDecorMaximize";
      }
   }
   return hints;
}

//______________________________________________________________________________
TString TGMainFrame::GetMWMfuncString() const
{
   // Returns MWM function hints as a string - used in SavePrimitive().

   TString hints;

   if (fMWMFuncs) {

      if (fMWMFuncs & kMWMFuncAll) {
         if (hints.Length() == 0) hints  = "kMWMFuncAll";
         else                     hints += " | kMWMFuncAll";
      }
      if (fMWMFuncs & kMWMFuncResize) {
         if (hints.Length() == 0) hints  = "kMWMFuncResize";
         else                     hints += " | kMWMFuncResize";
      }
      if (fMWMFuncs & kMWMFuncMove) {
         if (hints.Length() == 0) hints  = "kMWMFuncMove";
         else                     hints += " | kMWMFuncMove";
      }
      if (fMWMFuncs & kMWMFuncMinimize) {
         if (hints.Length() == 0) hints  = "kMWMFuncMinimize";
         else                     hints += " | kMWMFuncMinimize";
      }
      if (fMWMFuncs & kMWMFuncMaximize) {
         if (hints.Length() == 0) hints  = "kMWMFuncMaximize";
         else                     hints += " | kMWMFuncMaximize";
      }
      if (fMWMFuncs & kMWMFuncClose) {
         if (hints.Length() == 0) hints  = "kMWMFuncClose";
         else                     hints += " | kMWMFuncClose";
      }
   }
   return hints;
}

//______________________________________________________________________________
TString TGMainFrame::GetMWMinpString() const
{
   // Returns MWM input mode hints as a string - used in SavePrimitive().

   TString hints;

   if (fMWMInput == 0) hints = "kMWMInputModeless";

   if (fMWMInput == 1) hints = "kMWMInputPrimaryApplicationModal";

   if (fMWMInput == 2) hints = "kMWMInputSystemModal";

   if (fMWMInput == 3) hints = "kMWMInputFullApplicationModal";

   return hints;
}

//______________________________________________________________________________
void TGCompositeFrame::SavePrimitiveSubframes(std::ostream &out, Option_t *option /*= ""*/)
{
   // Auxilary protected method  used to save subframes.

   if (fLayoutBroken)
      out << "   " << GetName() << "->SetLayoutBroken(kTRUE);" << std::endl;

   if (!fList) return;

   char quote = '"';

   TGFrameElement *el;
   static TGHSplitter *hsplit = 0;
   static TGVSplitter *vsplit = 0;
   TList *signalslist;
   TList *connlist;
   TQConnection *conn;
   TString signal_name, slot_name;

   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {

      // Don't save hidden (unmapped) frames having a parent different
      // than this frame. Solves a problem with shared frames
      // (e.g. shared menus in the new Browser)
      if ((!el->fState & kIsVisible) && (el->fFrame->GetParent() != this))
         continue;

      // Remember if the frame to be saved is a TG(H,V)Splitter
      // See comments below and in TG[H/V]Splitter::SavePrimitive()
      if (el->fFrame->InheritsFrom("TGVSplitter")) {
         vsplit = (TGVSplitter *)el->fFrame;
         if (vsplit->GetLeft())
            vsplit = 0;
      }
      else if (el->fFrame->InheritsFrom("TGHSplitter")) {
         hsplit = (TGHSplitter *)el->fFrame;
         if (hsplit->GetAbove())
            hsplit = 0;
      }
      el->fFrame->SavePrimitive(out, option);
      out << "   " << GetName() << "->AddFrame(" << el->fFrame->GetName();
      el->fLayout->SavePrimitive(out, option);
      out << ");"<< std::endl;
      if (IsLayoutBroken()) {
         out << "   " << el->fFrame->GetName() << "->MoveResize(";
         out << el->fFrame->GetX() << "," << el->fFrame->GetY() << ",";
         out << el->fFrame->GetWidth() << ","  << el->fFrame->GetHeight();
         out << ");" << std::endl;
      }
      // TG(H,V)Splitter->SetFrame(theframe) can only be saved _AFTER_
      // having saved "theframe", when "theframe" is either at right
      // or below the splitter (that means after the splitter in the
      // list of frames), otherwise "theframe" would be undefined
      // (aka used before to be created)...
      if (vsplit && el->fFrame == vsplit->GetFrame()) {
         out << "   " << vsplit->GetName() << "->SetFrame(" << vsplit->GetFrame()->GetName();
         if (vsplit->GetLeft()) out << ",kTRUE);" << std::endl;
         else                 out << ",kFALSE);"<< std::endl;
         vsplit = 0;
      }
      if (hsplit && el->fFrame == hsplit->GetFrame()) {
         out << "   " << hsplit->GetName() << "->SetFrame(" << hsplit->GetFrame()->GetName();
         if (hsplit->GetAbove()) out << ",kTRUE);" << std::endl;
         else                  out << ",kFALSE);"<< std::endl;
         hsplit = 0;
      }

      if (!el->fState & kIsVisible) {
         gListOfHiddenFrames->Add(el->fFrame);
      }

      // saving signals/slots
      signalslist = (TList*)el->fFrame->GetListOfSignals();
      if (!signalslist)  continue;
      connlist = (TList*)signalslist->Last();
      if (connlist) {
         conn = (TQConnection*)connlist->Last();
         if (conn) {
            signal_name = connlist->GetName();
            slot_name = conn->GetName();
            Int_t eq = slot_name.First('=');
            Int_t rb = slot_name.First(')');
            if (eq != -1)
               slot_name.Remove(eq, rb-eq);
            out << "   " << el->fFrame->GetName() << "->Connect(" << quote << signal_name
                << quote << ", 0, 0, " << quote << slot_name << quote << ");" << std::endl;

            TList *lsl = (TList *)gROOT->GetListOfSpecials()->FindObject("ListOfSlots");
            if (lsl) {
               TObjString *slotel = (TObjString *)lsl->FindObject(slot_name);
               if (!slotel)
                  lsl->Add(new TObjString(slot_name));
            }
         }
      }
   }
   out << std::endl;
}

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

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

   if (!strcmp(GetName(),"")) {
      SetName(Form("fCompositeframe%d",fgCounter));
      fgCounter++;
   }

   out << std::endl << "   // composite frame" << std::endl;
   out << "   TGCompositeFrame *";
   out << GetName() << " = new TGCompositeFrame(" << fParent->GetName()
       << "," << GetWidth() << "," << GetHeight();

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

   // setting layout manager if it differs from the composite frame type
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager *lm = GetLayoutManager();
   if ((GetOptions() & kHorizontalFrame) &&
       (lm->InheritsFrom(TGHorizontalLayout::Class()))) {
      ;
   } else if ((GetOptions() & kVerticalFrame) &&
              (lm->InheritsFrom(TGVerticalLayout::Class()))) {
      ;
   } else {
      out << "   " << GetName() <<"->SetLayoutManager(";
      lm->SavePrimitive(out, option);
      out << ");"<< std::endl;
   }

   SavePrimitiveSubframes(out, option);
}

//______________________________________________________________________________
void TGMainFrame::SaveSource(const char *filename, Option_t *option)
{
   // Save the GUI main frame widget in a C++ macro file.

   // iteration over all active classes to exclude the base ones
   TString opt = option;
   TBits *bc = new TBits();
   TClass *c1, *c2, *c3;
   UInt_t k = 0;      // will mark k-bit of TBits if the class is a base class

   TIter nextc1(gROOT->GetListOfClasses());
   //gROOT->GetListOfClasses()->ls();    // valid. test
   while((c1 = (TClass *)nextc1())) {

      //   resets bit TClass::kClassSaved for all classes
      c1->ResetBit(TClass::kClassSaved);

      TIter nextc2(gROOT->GetListOfClasses());
      while ((c2 = (TClass *)nextc2())) {
         if (c1==c2) continue;
         else {
            c3 = c2->GetBaseClass(c1);
            if (c3 != 0) {
               bc->SetBitNumber(k, kTRUE);
               break;
            }
         }
      }
      k++;
   }

   TList *ilist = new TList();   // will contain include file names without '.h'
   ilist->SetName("ListOfIncludes");
   gROOT->GetListOfSpecials()->Add(ilist);
   k=0;

   //   completes list of include file names
   TIter nextdo(gROOT->GetListOfClasses());
   while ((c2 = (TClass *)nextdo())) {
      // for used GUI header files
      if (bc->TestBitNumber(k) == 0 && c2->InheritsFrom(TGObject::Class()) == 1) {
         // for any used ROOT header files activate the line below, comment the line above
         //if (bc->TestBitNumber(k) == 0) {
         const char *iname;
         iname = c2->GetDeclFileName();
         if (iname[0] && strstr(iname,".h")) {
            const char *lastsl = strrchr(iname,'/');
            if (lastsl) iname = lastsl + 1;
            char *tname = new char[strlen(iname)+1];
            Int_t i=0;
            while (*iname != '.') {
               tname[i] = *iname;
               i++; iname++;
            }
            tname[i] = 0;    //tname = include file name without '.h'

            TObjString *iel = (TObjString *)ilist->FindObject(tname);
            if (!iel) {
               ilist->Add(new TObjString(tname));
            }
            // Weird, but when saving a canvas, the following two classes
            // may be missing if the toolbar has not been displayed...
            if (strstr(tname, "TRootCanvas")) {
               if (!ilist->FindObject("TGDockableFrame"))
                  ilist->Add(new TObjString("TGDockableFrame"));
               if (!ilist->FindObject("TG3DLine"))
                  ilist->Add(new TObjString("TG3DLine"));
            }
            delete [] tname;
         }
         k++;  continue;
      }
      k++;
   }

   char quote = '"';
   std::ofstream out;

   TString ff = filename && strlen(filename) ? filename : "Rootappl.C";

   // Computes the main method name.
   const char *fname = gSystem->BaseName(ff.Data());
   Int_t lenfname = strlen(fname);
   char *sname = new char[lenfname+1];

   Int_t i = 0;
   while ((*fname != '.') && (i < lenfname)) {
      sname[i] = *fname;
      i++; fname++;
   }
   if (i == lenfname)
      ff += ".C";
   sname[i] = 0;

   out.open(ff.Data(), std::ios::out);
   if (!out.good()) {
      Error("SaveSource", "cannot open file: %s", ff.Data());
      delete [] sname;
      return;
   }

   // writes include files in C++ macro
   TObjString *inc;
   ilist = (TList *)gROOT->GetListOfSpecials()->FindObject("ListOfIncludes");

   if (!ilist) {
      delete [] sname;
      return;
   }

   // write macro header, date/time stamp as string, and the used Root version
   TDatime t;
   out <<"// Mainframe macro generated from application: "<< gApplication->Argv(0) << std::endl;
   out <<"// By ROOT version "<< gROOT->GetVersion() <<" on "<<t.AsSQLString()<< std::endl;
   out << std::endl;

   TIter nexti(ilist);
   while((inc = (TObjString *)nexti())) {
         out << "#ifndef ROOT_" << inc->GetString() << std::endl;
         out << "#include " << quote << inc->GetString() << ".h" << quote << std::endl;
         out << "#endif" << std::endl;
         if (strstr(inc->GetString(),"TRootEmbeddedCanvas")) {
            out << "#ifndef ROOT_TCanvas" << std::endl;
            out << "#include " << quote << "TCanvas.h" << quote << std::endl;
            out << "#endif" << std::endl;
         }
   }
   out << std::endl << "#include " << quote << "Riostream.h" << quote << std::endl;
   // deletes created ListOfIncludes
   gROOT->GetListOfSpecials()->Remove(ilist);
   ilist->Delete();
   delete ilist;
   delete bc;

   // writes the macro entry point equal to the fname
   out << std::endl;
   out << "void " << sname << "()" << std::endl;
   out <<"{"<< std::endl;
   delete [] sname;

   gListOfHiddenFrames->Clear();

   // saivng slots
   TList *lSlots = new TList;
   lSlots->SetName("ListOfSlots");
   gROOT->GetListOfSpecials()->Add(lSlots);

   TGMainFrame::SavePrimitive(out, option);

   GetClassHints((const char *&)fClassName, (const char *&)fResourceName);
   if (strlen(fClassName) || strlen(fResourceName)) {
      out << "   " << GetName() << "->SetClassHints(" << quote << fClassName
          << quote << "," << quote << fResourceName << quote << ");" << std::endl;
   }

   GetMWMHints(fMWMValue, fMWMFuncs, fMWMInput);
   if (fMWMValue || fMWMFuncs || fMWMInput) {
      out << "   " << GetName() << "->SetMWMHints(";
      out << GetMWMvalueString() << "," << std::endl;
      out << "                        ";
      out << GetMWMfuncString() << "," << std::endl;
      out << "                        ";
      out << GetMWMinpString() << ");"<< std::endl;
   }

///   GetWMPosition(fWMX, fWMY);
///   if ((fWMX != -1) || (fWMY != -1)) {
///      out <<"   "<<GetName()<<"->SetWMPosition("<<fWMX<<","<<fWMY<<");"<<std::endl;
///   }   // does not work - fixed via Move() below...

   GetWMSize(fWMWidth, fWMHeight);
   if (fWMWidth != UInt_t(-1) || fWMHeight != UInt_t(-1)) {
      out <<"   "<<GetName()<<"->SetWMSize("<<fWMWidth<<","<<fWMHeight<<");"<<std::endl;
   }

   GetWMSizeHints(fWMMinWidth, fWMMinHeight, fWMMaxWidth, fWMMaxHeight, fWMWidthInc, fWMHeightInc);
   if (fWMMinWidth != UInt_t(-1) || fWMMinHeight != UInt_t(-1) ||
      fWMMaxWidth != UInt_t(-1) || fWMMaxHeight != UInt_t(-1) ||
      fWMWidthInc != UInt_t(-1) || fWMHeightInc != UInt_t(-1)) {
      out <<"   "<<GetName()<<"->SetWMSizeHints("<<fWMMinWidth<<","<<fWMMinHeight
          <<","<<fWMMaxWidth<<","<<fWMMaxHeight
          <<","<<fWMWidthInc<<","<<fWMHeightInc <<");"<<std::endl;
   }

   out << "   " <<GetName()<< "->MapSubwindows();" << std::endl;

   TIter nexth(gListOfHiddenFrames);
   TGFrame *fhidden;
   while ((fhidden = (TGFrame*)nexth())) {
      out << "   " <<fhidden->GetName()<< "->UnmapWindow();" << std::endl;
   }

   out << std::endl;
   gListOfHiddenFrames->Clear();

   Bool_t usexy = kFALSE;
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager * lm = GetLayoutManager();
   if (lm->InheritsFrom("TGXYLayout"))
      usexy = kTRUE;

   if (!usexy)
      out << "   " <<GetName()<< "->Resize("<< GetName()<< "->GetDefaultSize());" << std::endl;
   else
      out << "   " <<GetName()<< "->Resize("<< GetWidth()<<","<<GetHeight()<<");"<<std::endl;

   out << "   " <<GetName()<< "->MapWindow();" <<std::endl;

   GetWMPosition(fWMX, fWMY);
   if ((fWMX != -1) || (fWMY != -1)) {
      out <<"   "<<GetName()<<"->Move("<<fWMX<<","<<fWMY<<");"<<std::endl;
   }

   // needed in case the frame was resized
   // otherwhice the frame became bigger showing all hidden widgets (layout algorithm)
   if (!usexy) out << "   " <<GetName()<< "->Resize("<< GetWidth()<<","<<GetHeight()<<");"<<std::endl;
   out << "}  " << std::endl;

   // writing slots
   TList *sl = (TList *)gROOT->GetListOfSpecials()->FindObject("ListOfSlots");
   if (sl) {
      TIter nextsl(sl);
      TObjString *slobj;
      Int_t pnumber = 1;

      while ((slobj = (TObjString*) nextsl())) {
         TString s = slobj->GetString();
         TString p = "";
         Int_t lb, rb, eq;
         lb = s.First('(');
         rb = s.First(')');
         eq = s.First('=');
         out << std::endl;

         if (rb - lb > 1 && eq == -1) {
            p = TString::Format(" par%d", pnumber);
            s.Insert(rb, p);
            pnumber++;
            out << "void " << s << std::endl;
            out << "{" << std::endl;
            s = slobj->GetString();
            s[rb] = ' ';
            out << "   std::cout << " << quote << "Slot " << s  << quote
                << " <<" << p << " << " << quote << ")" << quote
                << " << std::endl; " << std::endl;
            } else {
               if (eq != -1) {
                  s.Remove(eq, rb-eq);
                  out << "void " << s << std::endl;
                  out << "{" << std::endl;
                  out << "   std::cout << " << quote << "Slot " << s
                      << quote << " << std::endl; " << std::endl;
               } else {
                  out << "void " << slobj->GetString() << std::endl;
                  out << "{" << std::endl;
                  out << "   std::cout << " << quote << "Slot " << slobj->GetString()
                      << quote << " << std::endl; " << std::endl;
               }
            }
         out << "}" << std::endl;
      }
      gROOT->GetListOfSpecials()->Remove(sl);
      sl->Delete();
      delete sl;
   }
   out.close();

   if (!opt.Contains("quiet"))
      printf(" C++ macro file %s has been generated\n", gSystem->BaseName(ff.Data()));

   // reset bit TClass::kClassSaved for all classes
   nextc1.Reset();
   while((c1=(TClass*)nextc1())) {
      c1->ResetBit(TClass::kClassSaved);
   }
}

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

   if (fParent != gClient->GetDefaultRoot()) { // frame is embedded
      fOptions &= ~kMainFrame;
      TGCompositeFrame::SavePrimitive(out, option);
      fOptions |= kMainFrame;
      return;
   }

   char quote = '"';

   out << std::endl << "   // main frame" << std::endl;
   out << "   TGMainFrame *";
   out << GetName() << " = new TGMainFrame(gClient->GetRoot(),10,10,"   // layout alg.
       << GetOptionString() << ");" <<std::endl;
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   // setting layout manager if it differs from the main frame type
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager * lm = GetLayoutManager();
   if ((GetOptions() & kHorizontalFrame) &&
       (lm->InheritsFrom(TGHorizontalLayout::Class()))) {
      ;
   } else if ((GetOptions() & kVerticalFrame) &&
              (lm->InheritsFrom(TGVerticalLayout::Class()))) {
      ;
   } else {
      out << "   " << GetName() <<"->SetLayoutManager(";
      lm->SavePrimitive(out, option);
      out << ");"<< std::endl;
   }

   SavePrimitiveSubframes(out, option);

   if (strlen(fWindowName)) {
      out << "   " << GetName() << "->SetWindowName(" << quote << GetWindowName()
          << quote << ");" << std::endl;
   }
   if (strlen(fIconName)) {
      out <<"   "<<GetName()<< "->SetIconName("<<quote<<GetIconName()<<quote<<");"<<std::endl;
   }
   if (strlen(fIconPixmap)) {
      out << "   " << GetName() << "->SetIconPixmap(" << quote << GetIconPixmap()
          << quote << ");" << std::endl;
   }
}

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

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

   out << std::endl << "   // horizontal frame" << std::endl;
   out << "   TGHorizontalFrame *";
   out << GetName() << " = new TGHorizontalFrame(" << fParent->GetName()
       << "," << GetWidth() << "," << GetHeight();

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

   // setting layout manager if it differs from the main frame type
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager * lm = GetLayoutManager();
   if ((GetOptions() & kHorizontalFrame) &&
       (lm->InheritsFrom(TGHorizontalLayout::Class()))) {
      ;
   } else if ((GetOptions() & kVerticalFrame) &&
              (lm->InheritsFrom(TGVerticalLayout::Class()))) {
      ;
   } else {
      out << "   " << GetName() <<"->SetLayoutManager(";
      lm->SavePrimitive(out, option);
      out << ");"<< std::endl;
   }

   SavePrimitiveSubframes(out, option);
}

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

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

   out << std::endl << "   // vertical frame" << std::endl;
   out << "   TGVerticalFrame *";
   out << GetName() << " = new TGVerticalFrame(" << fParent->GetName()
       << "," << GetWidth() << "," << GetHeight();

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

   // setting layout manager if it differs from the main frame type
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager * lm = GetLayoutManager();
   if ((GetOptions() & kHorizontalFrame) &&
       (lm->InheritsFrom(TGHorizontalLayout::Class()))) {
      ;
   } else if ((GetOptions() & kVerticalFrame) &&
              (lm->InheritsFrom(TGVerticalLayout::Class()))) {
      ;
   } else {
      out << "   " << GetName() <<"->SetLayoutManager(";
      lm->SavePrimitive(out, option);
      out << ");"<< std::endl;
   }

   SavePrimitiveSubframes(out, option);
}

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

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

   out << "   TGFrame *";
   out << GetName() << " = new TGFrame("<< fParent->GetName()
       << "," << GetWidth() << "," << GetHeight();

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

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

   char quote = '"';

   // font + GC
   option = GetName()+5;         // unique digit id of the name
   TString parGC, parFont;
   // coverity[returned_null]
   // coverity[dereference]
   parFont.Form("%s::GetDefaultFontStruct()",IsA()->GetName());
   // coverity[returned_null]
   // coverity[dereference]
   parGC.Form("%s::GetDefaultGC()()",IsA()->GetName());

   if ((GetDefaultFontStruct() != fFontStruct) || (GetDefaultGC()() != fNormGC)) {
      TGFont *ufont = gClient->GetResourcePool()->GetFontPool()->FindFont(fFontStruct);
      if (ufont) {
         ufont->SavePrimitive(out, option);
         parFont.Form("ufont->GetFontStruct()");
      }

      TGGC *userGC = gClient->GetResourcePool()->GetGCPool()->FindGC(fNormGC);
      if (userGC) {
         userGC->SavePrimitive(out, option);
         parGC.Form("uGC->GetGC()");
      }
   }

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

   out << std::endl << "   // " << quote << GetTitle() << quote << " group frame" << std::endl;
   out << "   TGGroupFrame *";
   out << GetName() <<" = new TGGroupFrame("<<fParent->GetName()
       << "," << quote << GetTitle() << quote;

   if (fBackground == GetDefaultFrameBackground()) {
      if (fFontStruct == GetDefaultFontStruct()) {
         if (fNormGC == GetDefaultGC()()) {
            if (GetOptions() & kVerticalFrame) {
               out <<");" << std::endl;
            } else {
               out << "," << GetOptionString() <<");" << std::endl;
            }
         } else {
            out << "," << GetOptionString() << "," << parGC.Data() <<");" << std::endl;
         }
      } else {
         out << "," << GetOptionString() << "," << parGC.Data() << "," << parFont.Data() << ");" << std::endl;
      }
   } else {
      out << "," << GetOptionString() << "," << parGC.Data() << "," << parFont.Data() << ",ucolor);"  << std::endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   if (GetTitlePos() != -1)
      out << "   " << GetName() <<"->SetTitlePos(";
   if (GetTitlePos() == 0)
      out << "TGGroupFrame::kCenter);" << std::endl;
   if (GetTitlePos() == 1)
      out << "TGGroupFrame::kRight);" << std::endl;

   SavePrimitiveSubframes(out, option);

   // setting layout manager
   out << "   " << GetName() <<"->SetLayoutManager(";
   // coverity[returned_null]
   // coverity[dereference]
   GetLayoutManager()->SavePrimitive(out, option);
   out << ");"<< std::endl;

   out << "   " << GetName() <<"->Resize(" << GetWidth() << ","
       << GetHeight() << ");" << std::endl;
}


//______________________________________________________________________________
void TGTransientFrame::SaveSource(const char *filename, Option_t *option)
{
   // Save the GUI tranzient frame widget in a C++ macro file.

   // iterate over all active classes to exclude the base ones

   TString opt = option;
   TBits *bc = new TBits();
   TClass *c1, *c2, *c3;
   UInt_t k = 0;      // will mark k-bit of TBits if the class is a base class

   TIter nextc1(gROOT->GetListOfClasses());
   while((c1 = (TClass *)nextc1())) {

      //   resets bit TClass::kClassSaved for all classes
      c1->ResetBit(TClass::kClassSaved);

      TIter nextc2(gROOT->GetListOfClasses());
      while ((c2 = (TClass *)nextc2())) {
         if (c1==c2) continue;
         else {
            c3 = c2->GetBaseClass(c1);
            if (c3 != 0) {
               bc->SetBitNumber(k, kTRUE);
               break;
            }
         }
      }
      k++;
   }

   TList *ilist = new TList();   // will contain include file names without '.h'
   ilist->SetName("ListOfIncludes");
   gROOT->GetListOfSpecials()->Add(ilist);
   k=0;

   // completes list of include file names
   TIter nextdo(gROOT->GetListOfClasses());
   while ((c2 = (TClass *)nextdo())) {
      // to have only used GUI header files
      if (bc->TestBitNumber(k) == 0 && c2->InheritsFrom(TGObject::Class()) == 1) {
         // for any used ROOT header files activate the line below, comment the line above
         //if (bc->TestBitNumber(k) == 0) {
         const char *iname;
         iname = c2->GetDeclFileName();
         if (iname[0] && strstr(iname,".h")) {
            const char *lastsl = strrchr(iname,'/');
            if (lastsl) iname = lastsl + 1;
            char *tname = new char[strlen(iname)+1];
            Int_t i=0;
            while (*iname != '.') {
               tname[i] = *iname;
               i++; iname++;
            }
            tname[i] = 0;    //tname = include file name without '.h'

            TObjString *iel = (TObjString *)ilist->FindObject(tname);
            if (!iel) {
               ilist->Add(new TObjString(tname));
            }
            delete [] tname;
         }
         k++;  continue;
      }
      k++;
   }

   char quote = '"';
   std::ofstream out;

   TString ff = filename && strlen(filename) ? filename : "Rootdlog.C";

   // Computes the main method name.
   const char *fname = gSystem->BaseName(ff.Data());
   Int_t lenfname = strlen(fname);
   char *sname = new char[lenfname+1];

   Int_t i = 0;
   while ((*fname != '.') && (i < lenfname)) {
      sname[i] = *fname;
      i++; fname++;
   }
   if (i == lenfname)
      ff += ".C";
   sname[i] = 0;

   out.open(ff.Data(), std::ios::out);
   if (!out.good()) {
      Error("SaveSource", "cannot open file: %s", ff.Data());
      delete [] sname;
      return;
   }

   // writes include files in C++ macro
   TObjString *inc;
   ilist = (TList *)gROOT->GetListOfSpecials()->FindObject("ListOfIncludes");

   if (!ilist) {
      delete [] sname;
      return;
   }

   // write macro header, date/time stamp as string, and the used Root version
   TDatime t;
   out <<"// Dialog macro generated from application: "<< gApplication->Argv(0) << std::endl;
   out <<"// By ROOT version "<< gROOT->GetVersion() <<" on "<<t.AsSQLString()<< std::endl;
   out << std::endl;

   out << "#if !defined( __CINT__) || defined (__MAKECINT__)" << std::endl << std::endl;

   TIter nexti(ilist);
   while((inc = (TObjString *)nexti())) {
      out <<"#ifndef ROOT_"<< inc->GetString() << std::endl;
      out <<"#include "<< quote << inc->GetString() <<".h"<< quote << std::endl;
      out <<"#endif" << std::endl;
      if (strstr(inc->GetString(),"TRootEmbeddedCanvas")) {
         out <<"#ifndef ROOT_TCanvas"<< std::endl;
         out <<"#include "<< quote <<"TCanvas.h"<< quote << std::endl;
         out <<"#endif" << std::endl;
      }
   }
   out << std::endl << "#include " << quote << "Riostream.h" << quote << std::endl;
   out << std::endl << "#endif" << std::endl;
   // deletes created ListOfIncludes
   gROOT->GetListOfSpecials()->Remove(ilist);
   ilist->Delete();
   delete ilist;
   delete bc;

   // writes the macro entry point equal to the fname
   out << std::endl;
   out << "void " << sname << "()" << std::endl;
   delete [] sname;

   //  Save GUI widgets as a C++ macro in a file
   out <<"{"<< std::endl;

   gListOfHiddenFrames->Clear();

   // saivng slots
   TList *lSlots = new TList;
   lSlots->SetName("ListOfSlots");
   gROOT->GetListOfSpecials()->Add(lSlots);

   TGTransientFrame::SavePrimitive(out, option);

   GetClassHints((const char *&)fClassName, (const char *&)fResourceName);
   if (strlen(fClassName) || strlen(fResourceName)) {
      out<<"   "<<GetName()<< "->SetClassHints("<<quote<<fClassName<<quote
                                            <<"," <<quote<<fResourceName<<quote
                                            <<");"<<std::endl;
   }

   GetMWMHints(fMWMValue, fMWMFuncs, fMWMInput);
   if (fMWMValue || fMWMFuncs || fMWMInput) {
      out << "   " << GetName() << "->SetMWMHints(";
      out << GetMWMvalueString() << "," << std::endl;
      out << "                        ";
      out << GetMWMfuncString() << "," << std::endl;
      out << "                        ";
      out << GetMWMinpString() << ");"<< std::endl;
   }

   GetWMPosition(fWMX, fWMY);
   if ((fWMX != -1) || (fWMY != -1)) {
      out <<"   "<<GetName()<<"->SetWMPosition("<<fWMX<<","<<fWMY<<");"<<std::endl;
   }

   GetWMSize(fWMWidth, fWMHeight);
   if (fWMWidth != UInt_t(-1) || fWMHeight != UInt_t(-1)) {
      out <<"   "<<GetName()<<"->SetWMSize("<<fWMWidth<<","<<fWMHeight<<");"<<std::endl;
   }

   GetWMSizeHints(fWMMinWidth,fWMMinHeight,fWMMaxWidth,fWMMaxHeight,fWMWidthInc,fWMHeightInc);
   if (fWMMinWidth != UInt_t(-1) || fWMMinHeight != UInt_t(-1) ||
       fWMMaxWidth != UInt_t(-1) || fWMMaxHeight != UInt_t(-1) ||
       fWMWidthInc != UInt_t(-1) || fWMHeightInc != UInt_t(-1)) {

      out <<"   "<<GetName()<<"->SetWMSizeHints("<<fWMMinWidth<<","<<fWMMinHeight
          <<","<<fWMMaxWidth<<","<<fWMMaxHeight <<","<<fWMWidthInc<<","<<fWMHeightInc
          <<");"<<std::endl;
   }

   GetWMPosition(fWMX, fWMY);
   if ((fWMX != -1) || (fWMY != -1)) {
      out <<"   "<<GetName()<<"->Move("<<fWMX<<","<<fWMY<<");"<<std::endl;
   }

   out << "   " <<GetName()<< "->MapSubwindows();" << std::endl;

   TIter nexth(gListOfHiddenFrames);
   TGFrame *fhidden;
   while ((fhidden = (TGFrame*)nexth())) {
      out << "   " <<fhidden->GetName()<< "->UnmapWindow();" << std::endl;
   }
   out << std::endl;
   gListOfHiddenFrames->Clear();

   Bool_t usexy = kFALSE;
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager * lm = GetLayoutManager();
   if (lm->InheritsFrom("TGXYLayout"))
      usexy = kTRUE;

   if (!usexy)
      out << "   " <<GetName()<< "->Resize("<< GetName()<< "->GetDefaultSize());" << std::endl;
   else
      out << "   " <<GetName()<< "->Resize("<< GetWidth()<<","<<GetHeight()<<");"<<std::endl;

   out << "   " <<GetName()<< "->MapWindow();" <<std::endl;
   if (!usexy) out << "   " <<GetName()<< "->Resize();" << std::endl;
   out << "}  " << std::endl;

   // writing slots
   TList *sl = (TList *)gROOT->GetListOfSpecials()->FindObject("ListOfSlots");
   if (sl) {
      TIter nextsl(sl);
      TObjString *slobj;
      Int_t pnumber = 1;

      while ((slobj = (TObjString*) nextsl())) {
         TString s = slobj->GetString();
         TString p = "";
         Int_t lb, rb, eq;
         lb = s.First('(');
         rb = s.First(')');
         eq = s.First('=');
         out << std::endl;

         if (rb - lb > 1 && eq == -1) {
            p = TString::Format(" par%d", pnumber);
            s.Insert(rb, p);
            pnumber++;
            out << "void " << s << std::endl;
            out << "{" << std::endl;
            s = slobj->GetString();
            s[rb] = ' ';
            out << "   std::cout << " << quote << "Slot " << s  << quote
                << " <<" << p << " << " << quote << ")" << quote
                << " << std::endl; " << std::endl;
            } else {
               if (eq != -1) {
                  s.Remove(eq, rb-eq);
                  out << "void " << s << std::endl;
                  out << "{" << std::endl;
                  out << "   std::cout << " << quote << "Slot " << s
                      << quote << " << std::endl; " << std::endl;
               } else {
                  out << "void " << slobj->GetString() << std::endl;
                  out << "{" << std::endl;
                  out << "   std::cout << " << quote << "Slot " << slobj->GetString()
                      << quote << " << std::endl; " << std::endl;
               }
            }
         out << "}" << std::endl;
      }
      gROOT->GetListOfSpecials()->Remove(sl);
      sl->Delete();
      delete sl;
   }

   out.close();

   if (!opt.Contains("quiet"))
      printf(" C++ macro file %s has been generated\n", gSystem->BaseName(ff.Data()));

   // reset bit TClass::kClassSaved for all classes
   nextc1.Reset();
   while((c1=(TClass*)nextc1())) {
      c1->ResetBit(TClass::kClassSaved);
   }
}

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

   char quote = '"';

   out << std::endl << "   // transient frame" << std::endl;
   out << "   TGTransientFrame *";
   out << GetName()<<" = new TGTransientFrame(gClient->GetRoot(),0"
       << "," << GetWidth() << "," << GetHeight() << "," << GetOptionString() <<");" << std::endl;

   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   // setting layout manager if it differs from transient frame type
   // coverity[returned_null]
   // coverity[dereference]
   TGLayoutManager * lm = GetLayoutManager();
   if ((GetOptions() & kHorizontalFrame) &&
       (lm->InheritsFrom(TGHorizontalLayout::Class()))) {
      ;
   } else if ((GetOptions() & kVerticalFrame) &&
              (lm->InheritsFrom(TGVerticalLayout::Class()))) {
      ;
   } else {
      out << "   " << GetName() <<"->SetLayoutManager(";
      lm->SavePrimitive(out, option);
      out << ");"<< std::endl;
   }

   SavePrimitiveSubframes(out, option);

   if (strlen(fWindowName)) {
      out << "   " << GetName() << "->SetWindowName(" << quote << GetWindowName()
          << quote << ");" << std::endl;
   }
   if (strlen(fIconName)) {
      out <<"   "<<GetName()<< "->SetIconName("<<quote<<GetIconName()<<quote<<");"<<std::endl;
   }
   if (strlen(fIconPixmap)) {
      out << "   " << GetName() << "->SetIconPixmap(" << quote << GetIconPixmap()
          << quote << ");" << std::endl;
   }
}
 TGFrame.cxx:1
 TGFrame.cxx:2
 TGFrame.cxx:3
 TGFrame.cxx:4
 TGFrame.cxx:5
 TGFrame.cxx:6
 TGFrame.cxx:7
 TGFrame.cxx:8
 TGFrame.cxx:9
 TGFrame.cxx:10
 TGFrame.cxx:11
 TGFrame.cxx:12
 TGFrame.cxx:13
 TGFrame.cxx:14
 TGFrame.cxx:15
 TGFrame.cxx:16
 TGFrame.cxx:17
 TGFrame.cxx:18
 TGFrame.cxx:19
 TGFrame.cxx:20
 TGFrame.cxx:21
 TGFrame.cxx:22
 TGFrame.cxx:23
 TGFrame.cxx:24
 TGFrame.cxx:25
 TGFrame.cxx:26
 TGFrame.cxx:27
 TGFrame.cxx:28
 TGFrame.cxx:29
 TGFrame.cxx:30
 TGFrame.cxx:31
 TGFrame.cxx:32
 TGFrame.cxx:33
 TGFrame.cxx:34
 TGFrame.cxx:35
 TGFrame.cxx:36
 TGFrame.cxx:37
 TGFrame.cxx:38
 TGFrame.cxx:39
 TGFrame.cxx:40
 TGFrame.cxx:41
 TGFrame.cxx:42
 TGFrame.cxx:43
 TGFrame.cxx:44
 TGFrame.cxx:45
 TGFrame.cxx:46
 TGFrame.cxx:47
 TGFrame.cxx:48
 TGFrame.cxx:49
 TGFrame.cxx:50
 TGFrame.cxx:51
 TGFrame.cxx:52
 TGFrame.cxx:53
 TGFrame.cxx:54
 TGFrame.cxx:55
 TGFrame.cxx:56
 TGFrame.cxx:57
 TGFrame.cxx:58
 TGFrame.cxx:59
 TGFrame.cxx:60
 TGFrame.cxx:61
 TGFrame.cxx:62
 TGFrame.cxx:63
 TGFrame.cxx:64
 TGFrame.cxx:65
 TGFrame.cxx:66
 TGFrame.cxx:67
 TGFrame.cxx:68
 TGFrame.cxx:69
 TGFrame.cxx:70
 TGFrame.cxx:71
 TGFrame.cxx:72
 TGFrame.cxx:73
 TGFrame.cxx:74
 TGFrame.cxx:75
 TGFrame.cxx:76
 TGFrame.cxx:77
 TGFrame.cxx:78
 TGFrame.cxx:79
 TGFrame.cxx:80
 TGFrame.cxx:81
 TGFrame.cxx:82
 TGFrame.cxx:83
 TGFrame.cxx:84
 TGFrame.cxx:85
 TGFrame.cxx:86
 TGFrame.cxx:87
 TGFrame.cxx:88
 TGFrame.cxx:89
 TGFrame.cxx:90
 TGFrame.cxx:91
 TGFrame.cxx:92
 TGFrame.cxx:93
 TGFrame.cxx:94
 TGFrame.cxx:95
 TGFrame.cxx:96
 TGFrame.cxx:97
 TGFrame.cxx:98
 TGFrame.cxx:99
 TGFrame.cxx:100
 TGFrame.cxx:101
 TGFrame.cxx:102
 TGFrame.cxx:103
 TGFrame.cxx:104
 TGFrame.cxx:105
 TGFrame.cxx:106
 TGFrame.cxx:107
 TGFrame.cxx:108
 TGFrame.cxx:109
 TGFrame.cxx:110
 TGFrame.cxx:111
 TGFrame.cxx:112
 TGFrame.cxx:113
 TGFrame.cxx:114
 TGFrame.cxx:115
 TGFrame.cxx:116
 TGFrame.cxx:117
 TGFrame.cxx:118
 TGFrame.cxx:119
 TGFrame.cxx:120
 TGFrame.cxx:121
 TGFrame.cxx:122
 TGFrame.cxx:123
 TGFrame.cxx:124
 TGFrame.cxx:125
 TGFrame.cxx:126
 TGFrame.cxx:127
 TGFrame.cxx:128
 TGFrame.cxx:129
 TGFrame.cxx:130
 TGFrame.cxx:131
 TGFrame.cxx:132
 TGFrame.cxx:133
 TGFrame.cxx:134
 TGFrame.cxx:135
 TGFrame.cxx:136
 TGFrame.cxx:137
 TGFrame.cxx:138
 TGFrame.cxx:139
 TGFrame.cxx:140
 TGFrame.cxx:141
 TGFrame.cxx:142
 TGFrame.cxx:143
 TGFrame.cxx:144
 TGFrame.cxx:145
 TGFrame.cxx:146
 TGFrame.cxx:147
 TGFrame.cxx:148
 TGFrame.cxx:149
 TGFrame.cxx:150
 TGFrame.cxx:151
 TGFrame.cxx:152
 TGFrame.cxx:153
 TGFrame.cxx:154
 TGFrame.cxx:155
 TGFrame.cxx:156
 TGFrame.cxx:157
 TGFrame.cxx:158
 TGFrame.cxx:159
 TGFrame.cxx:160
 TGFrame.cxx:161
 TGFrame.cxx:162
 TGFrame.cxx:163
 TGFrame.cxx:164
 TGFrame.cxx:165
 TGFrame.cxx:166
 TGFrame.cxx:167
 TGFrame.cxx:168
 TGFrame.cxx:169
 TGFrame.cxx:170
 TGFrame.cxx:171
 TGFrame.cxx:172
 TGFrame.cxx:173
 TGFrame.cxx:174
 TGFrame.cxx:175
 TGFrame.cxx:176
 TGFrame.cxx:177
 TGFrame.cxx:178
 TGFrame.cxx:179
 TGFrame.cxx:180
 TGFrame.cxx:181
 TGFrame.cxx:182
 TGFrame.cxx:183
 TGFrame.cxx:184
 TGFrame.cxx:185
 TGFrame.cxx:186
 TGFrame.cxx:187
 TGFrame.cxx:188
 TGFrame.cxx:189
 TGFrame.cxx:190
 TGFrame.cxx:191
 TGFrame.cxx:192
 TGFrame.cxx:193
 TGFrame.cxx:194
 TGFrame.cxx:195
 TGFrame.cxx:196
 TGFrame.cxx:197
 TGFrame.cxx:198
 TGFrame.cxx:199
 TGFrame.cxx:200
 TGFrame.cxx:201
 TGFrame.cxx:202
 TGFrame.cxx:203
 TGFrame.cxx:204
 TGFrame.cxx:205
 TGFrame.cxx:206
 TGFrame.cxx:207
 TGFrame.cxx:208
 TGFrame.cxx:209
 TGFrame.cxx:210
 TGFrame.cxx:211
 TGFrame.cxx:212
 TGFrame.cxx:213
 TGFrame.cxx:214
 TGFrame.cxx:215
 TGFrame.cxx:216
 TGFrame.cxx:217
 TGFrame.cxx:218
 TGFrame.cxx:219
 TGFrame.cxx:220
 TGFrame.cxx:221
 TGFrame.cxx:222
 TGFrame.cxx:223
 TGFrame.cxx:224
 TGFrame.cxx:225
 TGFrame.cxx:226
 TGFrame.cxx:227
 TGFrame.cxx:228
 TGFrame.cxx:229
 TGFrame.cxx:230
 TGFrame.cxx:231
 TGFrame.cxx:232
 TGFrame.cxx:233
 TGFrame.cxx:234
 TGFrame.cxx:235
 TGFrame.cxx:236
 TGFrame.cxx:237
 TGFrame.cxx:238
 TGFrame.cxx:239
 TGFrame.cxx:240
 TGFrame.cxx:241
 TGFrame.cxx:242
 TGFrame.cxx:243
 TGFrame.cxx:244
 TGFrame.cxx:245
 TGFrame.cxx:246
 TGFrame.cxx:247
 TGFrame.cxx:248
 TGFrame.cxx:249
 TGFrame.cxx:250
 TGFrame.cxx:251
 TGFrame.cxx:252
 TGFrame.cxx:253
 TGFrame.cxx:254
 TGFrame.cxx:255
 TGFrame.cxx:256
 TGFrame.cxx:257
 TGFrame.cxx:258
 TGFrame.cxx:259
 TGFrame.cxx:260
 TGFrame.cxx:261
 TGFrame.cxx:262
 TGFrame.cxx:263
 TGFrame.cxx:264
 TGFrame.cxx:265
 TGFrame.cxx:266
 TGFrame.cxx:267
 TGFrame.cxx:268
 TGFrame.cxx:269
 TGFrame.cxx:270
 TGFrame.cxx:271
 TGFrame.cxx:272
 TGFrame.cxx:273
 TGFrame.cxx:274
 TGFrame.cxx:275
 TGFrame.cxx:276
 TGFrame.cxx:277
 TGFrame.cxx:278
 TGFrame.cxx:279
 TGFrame.cxx:280
 TGFrame.cxx:281
 TGFrame.cxx:282
 TGFrame.cxx:283
 TGFrame.cxx:284
 TGFrame.cxx:285
 TGFrame.cxx:286
 TGFrame.cxx:287
 TGFrame.cxx:288
 TGFrame.cxx:289
 TGFrame.cxx:290
 TGFrame.cxx:291
 TGFrame.cxx:292
 TGFrame.cxx:293
 TGFrame.cxx:294
 TGFrame.cxx:295
 TGFrame.cxx:296
 TGFrame.cxx:297
 TGFrame.cxx:298
 TGFrame.cxx:299
 TGFrame.cxx:300
 TGFrame.cxx:301
 TGFrame.cxx:302
 TGFrame.cxx:303
 TGFrame.cxx:304
 TGFrame.cxx:305
 TGFrame.cxx:306
 TGFrame.cxx:307
 TGFrame.cxx:308
 TGFrame.cxx:309
 TGFrame.cxx:310
 TGFrame.cxx:311
 TGFrame.cxx:312
 TGFrame.cxx:313
 TGFrame.cxx:314
 TGFrame.cxx:315
 TGFrame.cxx:316
 TGFrame.cxx:317
 TGFrame.cxx:318
 TGFrame.cxx:319
 TGFrame.cxx:320
 TGFrame.cxx:321
 TGFrame.cxx:322
 TGFrame.cxx:323
 TGFrame.cxx:324
 TGFrame.cxx:325
 TGFrame.cxx:326
 TGFrame.cxx:327
 TGFrame.cxx:328
 TGFrame.cxx:329
 TGFrame.cxx:330
 TGFrame.cxx:331
 TGFrame.cxx:332
 TGFrame.cxx:333
 TGFrame.cxx:334
 TGFrame.cxx:335
 TGFrame.cxx:336
 TGFrame.cxx:337
 TGFrame.cxx:338
 TGFrame.cxx:339
 TGFrame.cxx:340
 TGFrame.cxx:341
 TGFrame.cxx:342
 TGFrame.cxx:343
 TGFrame.cxx:344
 TGFrame.cxx:345
 TGFrame.cxx:346
 TGFrame.cxx:347
 TGFrame.cxx:348
 TGFrame.cxx:349
 TGFrame.cxx:350
 TGFrame.cxx:351
 TGFrame.cxx:352
 TGFrame.cxx:353
 TGFrame.cxx:354
 TGFrame.cxx:355
 TGFrame.cxx:356
 TGFrame.cxx:357
 TGFrame.cxx:358
 TGFrame.cxx:359
 TGFrame.cxx:360
 TGFrame.cxx:361
 TGFrame.cxx:362
 TGFrame.cxx:363
 TGFrame.cxx:364
 TGFrame.cxx:365
 TGFrame.cxx:366
 TGFrame.cxx:367
 TGFrame.cxx:368
 TGFrame.cxx:369
 TGFrame.cxx:370
 TGFrame.cxx:371
 TGFrame.cxx:372
 TGFrame.cxx:373
 TGFrame.cxx:374
 TGFrame.cxx:375
 TGFrame.cxx:376
 TGFrame.cxx:377
 TGFrame.cxx:378
 TGFrame.cxx:379
 TGFrame.cxx:380
 TGFrame.cxx:381
 TGFrame.cxx:382
 TGFrame.cxx:383
 TGFrame.cxx:384
 TGFrame.cxx:385
 TGFrame.cxx:386
 TGFrame.cxx:387
 TGFrame.cxx:388
 TGFrame.cxx:389
 TGFrame.cxx:390
 TGFrame.cxx:391
 TGFrame.cxx:392
 TGFrame.cxx:393
 TGFrame.cxx:394
 TGFrame.cxx:395
 TGFrame.cxx:396
 TGFrame.cxx:397
 TGFrame.cxx:398
 TGFrame.cxx:399
 TGFrame.cxx:400
 TGFrame.cxx:401
 TGFrame.cxx:402
 TGFrame.cxx:403
 TGFrame.cxx:404
 TGFrame.cxx:405
 TGFrame.cxx:406
 TGFrame.cxx:407
 TGFrame.cxx:408
 TGFrame.cxx:409
 TGFrame.cxx:410
 TGFrame.cxx:411
 TGFrame.cxx:412
 TGFrame.cxx:413
 TGFrame.cxx:414
 TGFrame.cxx:415
 TGFrame.cxx:416
 TGFrame.cxx:417
 TGFrame.cxx:418
 TGFrame.cxx:419
 TGFrame.cxx:420
 TGFrame.cxx:421
 TGFrame.cxx:422
 TGFrame.cxx:423
 TGFrame.cxx:424
 TGFrame.cxx:425
 TGFrame.cxx:426
 TGFrame.cxx:427
 TGFrame.cxx:428
 TGFrame.cxx:429
 TGFrame.cxx:430
 TGFrame.cxx:431
 TGFrame.cxx:432
 TGFrame.cxx:433
 TGFrame.cxx:434
 TGFrame.cxx:435
 TGFrame.cxx:436
 TGFrame.cxx:437
 TGFrame.cxx:438
 TGFrame.cxx:439
 TGFrame.cxx:440
 TGFrame.cxx:441
 TGFrame.cxx:442
 TGFrame.cxx:443
 TGFrame.cxx:444
 TGFrame.cxx:445
 TGFrame.cxx:446
 TGFrame.cxx:447
 TGFrame.cxx:448
 TGFrame.cxx:449
 TGFrame.cxx:450
 TGFrame.cxx:451
 TGFrame.cxx:452
 TGFrame.cxx:453
 TGFrame.cxx:454
 TGFrame.cxx:455
 TGFrame.cxx:456
 TGFrame.cxx:457
 TGFrame.cxx:458
 TGFrame.cxx:459
 TGFrame.cxx:460
 TGFrame.cxx:461
 TGFrame.cxx:462
 TGFrame.cxx:463
 TGFrame.cxx:464
 TGFrame.cxx:465
 TGFrame.cxx:466
 TGFrame.cxx:467
 TGFrame.cxx:468
 TGFrame.cxx:469
 TGFrame.cxx:470
 TGFrame.cxx:471
 TGFrame.cxx:472
 TGFrame.cxx:473
 TGFrame.cxx:474
 TGFrame.cxx:475
 TGFrame.cxx:476
 TGFrame.cxx:477
 TGFrame.cxx:478
 TGFrame.cxx:479
 TGFrame.cxx:480
 TGFrame.cxx:481
 TGFrame.cxx:482
 TGFrame.cxx:483
 TGFrame.cxx:484
 TGFrame.cxx:485
 TGFrame.cxx:486
 TGFrame.cxx:487
 TGFrame.cxx:488
 TGFrame.cxx:489
 TGFrame.cxx:490
 TGFrame.cxx:491
 TGFrame.cxx:492
 TGFrame.cxx:493
 TGFrame.cxx:494
 TGFrame.cxx:495
 TGFrame.cxx:496
 TGFrame.cxx:497
 TGFrame.cxx:498
 TGFrame.cxx:499
 TGFrame.cxx:500
 TGFrame.cxx:501
 TGFrame.cxx:502
 TGFrame.cxx:503
 TGFrame.cxx:504
 TGFrame.cxx:505
 TGFrame.cxx:506
 TGFrame.cxx:507
 TGFrame.cxx:508
 TGFrame.cxx:509
 TGFrame.cxx:510
 TGFrame.cxx:511
 TGFrame.cxx:512
 TGFrame.cxx:513
 TGFrame.cxx:514
 TGFrame.cxx:515
 TGFrame.cxx:516
 TGFrame.cxx:517
 TGFrame.cxx:518
 TGFrame.cxx:519
 TGFrame.cxx:520
 TGFrame.cxx:521
 TGFrame.cxx:522
 TGFrame.cxx:523
 TGFrame.cxx:524
 TGFrame.cxx:525
 TGFrame.cxx:526
 TGFrame.cxx:527
 TGFrame.cxx:528
 TGFrame.cxx:529
 TGFrame.cxx:530
 TGFrame.cxx:531
 TGFrame.cxx:532
 TGFrame.cxx:533
 TGFrame.cxx:534
 TGFrame.cxx:535
 TGFrame.cxx:536
 TGFrame.cxx:537
 TGFrame.cxx:538
 TGFrame.cxx:539
 TGFrame.cxx:540
 TGFrame.cxx:541
 TGFrame.cxx:542
 TGFrame.cxx:543
 TGFrame.cxx:544
 TGFrame.cxx:545
 TGFrame.cxx:546
 TGFrame.cxx:547
 TGFrame.cxx:548
 TGFrame.cxx:549
 TGFrame.cxx:550
 TGFrame.cxx:551
 TGFrame.cxx:552
 TGFrame.cxx:553
 TGFrame.cxx:554
 TGFrame.cxx:555
 TGFrame.cxx:556
 TGFrame.cxx:557
 TGFrame.cxx:558
 TGFrame.cxx:559
 TGFrame.cxx:560
 TGFrame.cxx:561
 TGFrame.cxx:562
 TGFrame.cxx:563
 TGFrame.cxx:564
 TGFrame.cxx:565
 TGFrame.cxx:566
 TGFrame.cxx:567
 TGFrame.cxx:568
 TGFrame.cxx:569
 TGFrame.cxx:570
 TGFrame.cxx:571
 TGFrame.cxx:572
 TGFrame.cxx:573
 TGFrame.cxx:574
 TGFrame.cxx:575
 TGFrame.cxx:576
 TGFrame.cxx:577
 TGFrame.cxx:578
 TGFrame.cxx:579
 TGFrame.cxx:580
 TGFrame.cxx:581
 TGFrame.cxx:582
 TGFrame.cxx:583
 TGFrame.cxx:584
 TGFrame.cxx:585
 TGFrame.cxx:586
 TGFrame.cxx:587
 TGFrame.cxx:588
 TGFrame.cxx:589
 TGFrame.cxx:590
 TGFrame.cxx:591
 TGFrame.cxx:592
 TGFrame.cxx:593
 TGFrame.cxx:594
 TGFrame.cxx:595
 TGFrame.cxx:596
 TGFrame.cxx:597
 TGFrame.cxx:598
 TGFrame.cxx:599
 TGFrame.cxx:600
 TGFrame.cxx:601
 TGFrame.cxx:602
 TGFrame.cxx:603
 TGFrame.cxx:604
 TGFrame.cxx:605
 TGFrame.cxx:606
 TGFrame.cxx:607
 TGFrame.cxx:608
 TGFrame.cxx:609
 TGFrame.cxx:610
 TGFrame.cxx:611
 TGFrame.cxx:612
 TGFrame.cxx:613
 TGFrame.cxx:614
 TGFrame.cxx:615
 TGFrame.cxx:616
 TGFrame.cxx:617
 TGFrame.cxx:618
 TGFrame.cxx:619
 TGFrame.cxx:620
 TGFrame.cxx:621
 TGFrame.cxx:622
 TGFrame.cxx:623
 TGFrame.cxx:624
 TGFrame.cxx:625
 TGFrame.cxx:626
 TGFrame.cxx:627
 TGFrame.cxx:628
 TGFrame.cxx:629
 TGFrame.cxx:630
 TGFrame.cxx:631
 TGFrame.cxx:632
 TGFrame.cxx:633
 TGFrame.cxx:634
 TGFrame.cxx:635
 TGFrame.cxx:636
 TGFrame.cxx:637
 TGFrame.cxx:638
 TGFrame.cxx:639
 TGFrame.cxx:640
 TGFrame.cxx:641
 TGFrame.cxx:642
 TGFrame.cxx:643
 TGFrame.cxx:644
 TGFrame.cxx:645
 TGFrame.cxx:646
 TGFrame.cxx:647
 TGFrame.cxx:648
 TGFrame.cxx:649
 TGFrame.cxx:650
 TGFrame.cxx:651
 TGFrame.cxx:652
 TGFrame.cxx:653
 TGFrame.cxx:654
 TGFrame.cxx:655
 TGFrame.cxx:656
 TGFrame.cxx:657
 TGFrame.cxx:658
 TGFrame.cxx:659
 TGFrame.cxx:660
 TGFrame.cxx:661
 TGFrame.cxx:662
 TGFrame.cxx:663
 TGFrame.cxx:664
 TGFrame.cxx:665
 TGFrame.cxx:666
 TGFrame.cxx:667
 TGFrame.cxx:668
 TGFrame.cxx:669
 TGFrame.cxx:670
 TGFrame.cxx:671
 TGFrame.cxx:672
 TGFrame.cxx:673
 TGFrame.cxx:674
 TGFrame.cxx:675
 TGFrame.cxx:676
 TGFrame.cxx:677
 TGFrame.cxx:678
 TGFrame.cxx:679
 TGFrame.cxx:680
 TGFrame.cxx:681
 TGFrame.cxx:682
 TGFrame.cxx:683
 TGFrame.cxx:684
 TGFrame.cxx:685
 TGFrame.cxx:686
 TGFrame.cxx:687
 TGFrame.cxx:688
 TGFrame.cxx:689
 TGFrame.cxx:690
 TGFrame.cxx:691
 TGFrame.cxx:692
 TGFrame.cxx:693
 TGFrame.cxx:694
 TGFrame.cxx:695
 TGFrame.cxx:696
 TGFrame.cxx:697
 TGFrame.cxx:698
 TGFrame.cxx:699
 TGFrame.cxx:700
 TGFrame.cxx:701
 TGFrame.cxx:702
 TGFrame.cxx:703
 TGFrame.cxx:704
 TGFrame.cxx:705
 TGFrame.cxx:706
 TGFrame.cxx:707
 TGFrame.cxx:708
 TGFrame.cxx:709
 TGFrame.cxx:710
 TGFrame.cxx:711
 TGFrame.cxx:712
 TGFrame.cxx:713
 TGFrame.cxx:714
 TGFrame.cxx:715
 TGFrame.cxx:716
 TGFrame.cxx:717
 TGFrame.cxx:718
 TGFrame.cxx:719
 TGFrame.cxx:720
 TGFrame.cxx:721
 TGFrame.cxx:722
 TGFrame.cxx:723
 TGFrame.cxx:724
 TGFrame.cxx:725
 TGFrame.cxx:726
 TGFrame.cxx:727
 TGFrame.cxx:728
 TGFrame.cxx:729
 TGFrame.cxx:730
 TGFrame.cxx:731
 TGFrame.cxx:732
 TGFrame.cxx:733
 TGFrame.cxx:734
 TGFrame.cxx:735
 TGFrame.cxx:736
 TGFrame.cxx:737
 TGFrame.cxx:738
 TGFrame.cxx:739
 TGFrame.cxx:740
 TGFrame.cxx:741
 TGFrame.cxx:742
 TGFrame.cxx:743
 TGFrame.cxx:744
 TGFrame.cxx:745
 TGFrame.cxx:746
 TGFrame.cxx:747
 TGFrame.cxx:748
 TGFrame.cxx:749
 TGFrame.cxx:750
 TGFrame.cxx:751
 TGFrame.cxx:752
 TGFrame.cxx:753
 TGFrame.cxx:754
 TGFrame.cxx:755
 TGFrame.cxx:756
 TGFrame.cxx:757
 TGFrame.cxx:758
 TGFrame.cxx:759
 TGFrame.cxx:760
 TGFrame.cxx:761
 TGFrame.cxx:762
 TGFrame.cxx:763
 TGFrame.cxx:764
 TGFrame.cxx:765
 TGFrame.cxx:766
 TGFrame.cxx:767
 TGFrame.cxx:768
 TGFrame.cxx:769
 TGFrame.cxx:770
 TGFrame.cxx:771
 TGFrame.cxx:772
 TGFrame.cxx:773
 TGFrame.cxx:774
 TGFrame.cxx:775
 TGFrame.cxx:776
 TGFrame.cxx:777
 TGFrame.cxx:778
 TGFrame.cxx:779
 TGFrame.cxx:780
 TGFrame.cxx:781
 TGFrame.cxx:782
 TGFrame.cxx:783
 TGFrame.cxx:784
 TGFrame.cxx:785
 TGFrame.cxx:786
 TGFrame.cxx:787
 TGFrame.cxx:788
 TGFrame.cxx:789
 TGFrame.cxx:790
 TGFrame.cxx:791
 TGFrame.cxx:792
 TGFrame.cxx:793
 TGFrame.cxx:794
 TGFrame.cxx:795
 TGFrame.cxx:796
 TGFrame.cxx:797
 TGFrame.cxx:798
 TGFrame.cxx:799
 TGFrame.cxx:800
 TGFrame.cxx:801
 TGFrame.cxx:802
 TGFrame.cxx:803
 TGFrame.cxx:804
 TGFrame.cxx:805
 TGFrame.cxx:806
 TGFrame.cxx:807
 TGFrame.cxx:808
 TGFrame.cxx:809
 TGFrame.cxx:810
 TGFrame.cxx:811
 TGFrame.cxx:812
 TGFrame.cxx:813
 TGFrame.cxx:814
 TGFrame.cxx:815
 TGFrame.cxx:816
 TGFrame.cxx:817
 TGFrame.cxx:818
 TGFrame.cxx:819
 TGFrame.cxx:820
 TGFrame.cxx:821
 TGFrame.cxx:822
 TGFrame.cxx:823
 TGFrame.cxx:824
 TGFrame.cxx:825
 TGFrame.cxx:826
 TGFrame.cxx:827
 TGFrame.cxx:828
 TGFrame.cxx:829
 TGFrame.cxx:830
 TGFrame.cxx:831
 TGFrame.cxx:832
 TGFrame.cxx:833
 TGFrame.cxx:834
 TGFrame.cxx:835
 TGFrame.cxx:836
 TGFrame.cxx:837
 TGFrame.cxx:838
 TGFrame.cxx:839
 TGFrame.cxx:840
 TGFrame.cxx:841
 TGFrame.cxx:842
 TGFrame.cxx:843
 TGFrame.cxx:844
 TGFrame.cxx:845
 TGFrame.cxx:846
 TGFrame.cxx:847
 TGFrame.cxx:848
 TGFrame.cxx:849
 TGFrame.cxx:850
 TGFrame.cxx:851
 TGFrame.cxx:852
 TGFrame.cxx:853
 TGFrame.cxx:854
 TGFrame.cxx:855
 TGFrame.cxx:856
 TGFrame.cxx:857
 TGFrame.cxx:858
 TGFrame.cxx:859
 TGFrame.cxx:860
 TGFrame.cxx:861
 TGFrame.cxx:862
 TGFrame.cxx:863
 TGFrame.cxx:864
 TGFrame.cxx:865
 TGFrame.cxx:866
 TGFrame.cxx:867
 TGFrame.cxx:868
 TGFrame.cxx:869
 TGFrame.cxx:870
 TGFrame.cxx:871
 TGFrame.cxx:872
 TGFrame.cxx:873
 TGFrame.cxx:874
 TGFrame.cxx:875
 TGFrame.cxx:876
 TGFrame.cxx:877
 TGFrame.cxx:878
 TGFrame.cxx:879
 TGFrame.cxx:880
 TGFrame.cxx:881
 TGFrame.cxx:882
 TGFrame.cxx:883
 TGFrame.cxx:884
 TGFrame.cxx:885
 TGFrame.cxx:886
 TGFrame.cxx:887
 TGFrame.cxx:888
 TGFrame.cxx:889
 TGFrame.cxx:890
 TGFrame.cxx:891
 TGFrame.cxx:892
 TGFrame.cxx:893
 TGFrame.cxx:894
 TGFrame.cxx:895
 TGFrame.cxx:896
 TGFrame.cxx:897
 TGFrame.cxx:898
 TGFrame.cxx:899
 TGFrame.cxx:900
 TGFrame.cxx:901
 TGFrame.cxx:902
 TGFrame.cxx:903
 TGFrame.cxx:904
 TGFrame.cxx:905
 TGFrame.cxx:906
 TGFrame.cxx:907
 TGFrame.cxx:908
 TGFrame.cxx:909
 TGFrame.cxx:910
 TGFrame.cxx:911
 TGFrame.cxx:912
 TGFrame.cxx:913
 TGFrame.cxx:914
 TGFrame.cxx:915
 TGFrame.cxx:916
 TGFrame.cxx:917
 TGFrame.cxx:918
 TGFrame.cxx:919
 TGFrame.cxx:920
 TGFrame.cxx:921
 TGFrame.cxx:922
 TGFrame.cxx:923
 TGFrame.cxx:924
 TGFrame.cxx:925
 TGFrame.cxx:926
 TGFrame.cxx:927
 TGFrame.cxx:928
 TGFrame.cxx:929
 TGFrame.cxx:930
 TGFrame.cxx:931
 TGFrame.cxx:932
 TGFrame.cxx:933
 TGFrame.cxx:934
 TGFrame.cxx:935
 TGFrame.cxx:936
 TGFrame.cxx:937
 TGFrame.cxx:938
 TGFrame.cxx:939
 TGFrame.cxx:940
 TGFrame.cxx:941
 TGFrame.cxx:942
 TGFrame.cxx:943
 TGFrame.cxx:944
 TGFrame.cxx:945
 TGFrame.cxx:946
 TGFrame.cxx:947
 TGFrame.cxx:948
 TGFrame.cxx:949
 TGFrame.cxx:950
 TGFrame.cxx:951
 TGFrame.cxx:952
 TGFrame.cxx:953
 TGFrame.cxx:954
 TGFrame.cxx:955
 TGFrame.cxx:956
 TGFrame.cxx:957
 TGFrame.cxx:958
 TGFrame.cxx:959
 TGFrame.cxx:960
 TGFrame.cxx:961
 TGFrame.cxx:962
 TGFrame.cxx:963
 TGFrame.cxx:964
 TGFrame.cxx:965
 TGFrame.cxx:966
 TGFrame.cxx:967
 TGFrame.cxx:968
 TGFrame.cxx:969
 TGFrame.cxx:970
 TGFrame.cxx:971
 TGFrame.cxx:972
 TGFrame.cxx:973
 TGFrame.cxx:974
 TGFrame.cxx:975
 TGFrame.cxx:976
 TGFrame.cxx:977
 TGFrame.cxx:978
 TGFrame.cxx:979
 TGFrame.cxx:980
 TGFrame.cxx:981
 TGFrame.cxx:982
 TGFrame.cxx:983
 TGFrame.cxx:984
 TGFrame.cxx:985
 TGFrame.cxx:986
 TGFrame.cxx:987
 TGFrame.cxx:988
 TGFrame.cxx:989
 TGFrame.cxx:990
 TGFrame.cxx:991
 TGFrame.cxx:992
 TGFrame.cxx:993
 TGFrame.cxx:994
 TGFrame.cxx:995
 TGFrame.cxx:996
 TGFrame.cxx:997
 TGFrame.cxx:998
 TGFrame.cxx:999
 TGFrame.cxx:1000
 TGFrame.cxx:1001
 TGFrame.cxx:1002
 TGFrame.cxx:1003
 TGFrame.cxx:1004
 TGFrame.cxx:1005
 TGFrame.cxx:1006
 TGFrame.cxx:1007
 TGFrame.cxx:1008
 TGFrame.cxx:1009
 TGFrame.cxx:1010
 TGFrame.cxx:1011
 TGFrame.cxx:1012
 TGFrame.cxx:1013
 TGFrame.cxx:1014
 TGFrame.cxx:1015
 TGFrame.cxx:1016
 TGFrame.cxx:1017
 TGFrame.cxx:1018
 TGFrame.cxx:1019
 TGFrame.cxx:1020
 TGFrame.cxx:1021
 TGFrame.cxx:1022
 TGFrame.cxx:1023
 TGFrame.cxx:1024
 TGFrame.cxx:1025
 TGFrame.cxx:1026
 TGFrame.cxx:1027
 TGFrame.cxx:1028
 TGFrame.cxx:1029
 TGFrame.cxx:1030
 TGFrame.cxx:1031
 TGFrame.cxx:1032
 TGFrame.cxx:1033
 TGFrame.cxx:1034
 TGFrame.cxx:1035
 TGFrame.cxx:1036
 TGFrame.cxx:1037
 TGFrame.cxx:1038
 TGFrame.cxx:1039
 TGFrame.cxx:1040
 TGFrame.cxx:1041
 TGFrame.cxx:1042
 TGFrame.cxx:1043
 TGFrame.cxx:1044
 TGFrame.cxx:1045
 TGFrame.cxx:1046
 TGFrame.cxx:1047
 TGFrame.cxx:1048
 TGFrame.cxx:1049
 TGFrame.cxx:1050
 TGFrame.cxx:1051
 TGFrame.cxx:1052
 TGFrame.cxx:1053
 TGFrame.cxx:1054
 TGFrame.cxx:1055
 TGFrame.cxx:1056
 TGFrame.cxx:1057
 TGFrame.cxx:1058
 TGFrame.cxx:1059
 TGFrame.cxx:1060
 TGFrame.cxx:1061
 TGFrame.cxx:1062
 TGFrame.cxx:1063
 TGFrame.cxx:1064
 TGFrame.cxx:1065
 TGFrame.cxx:1066
 TGFrame.cxx:1067
 TGFrame.cxx:1068
 TGFrame.cxx:1069
 TGFrame.cxx:1070
 TGFrame.cxx:1071
 TGFrame.cxx:1072
 TGFrame.cxx:1073
 TGFrame.cxx:1074
 TGFrame.cxx:1075
 TGFrame.cxx:1076
 TGFrame.cxx:1077
 TGFrame.cxx:1078
 TGFrame.cxx:1079
 TGFrame.cxx:1080
 TGFrame.cxx:1081
 TGFrame.cxx:1082
 TGFrame.cxx:1083
 TGFrame.cxx:1084
 TGFrame.cxx:1085
 TGFrame.cxx:1086
 TGFrame.cxx:1087
 TGFrame.cxx:1088
 TGFrame.cxx:1089
 TGFrame.cxx:1090
 TGFrame.cxx:1091
 TGFrame.cxx:1092
 TGFrame.cxx:1093
 TGFrame.cxx:1094
 TGFrame.cxx:1095
 TGFrame.cxx:1096
 TGFrame.cxx:1097
 TGFrame.cxx:1098
 TGFrame.cxx:1099
 TGFrame.cxx:1100
 TGFrame.cxx:1101
 TGFrame.cxx:1102
 TGFrame.cxx:1103
 TGFrame.cxx:1104
 TGFrame.cxx:1105
 TGFrame.cxx:1106
 TGFrame.cxx:1107
 TGFrame.cxx:1108
 TGFrame.cxx:1109
 TGFrame.cxx:1110
 TGFrame.cxx:1111
 TGFrame.cxx:1112
 TGFrame.cxx:1113
 TGFrame.cxx:1114
 TGFrame.cxx:1115
 TGFrame.cxx:1116
 TGFrame.cxx:1117
 TGFrame.cxx:1118
 TGFrame.cxx:1119
 TGFrame.cxx:1120
 TGFrame.cxx:1121
 TGFrame.cxx:1122
 TGFrame.cxx:1123
 TGFrame.cxx:1124
 TGFrame.cxx:1125
 TGFrame.cxx:1126
 TGFrame.cxx:1127
 TGFrame.cxx:1128
 TGFrame.cxx:1129
 TGFrame.cxx:1130
 TGFrame.cxx:1131
 TGFrame.cxx:1132
 TGFrame.cxx:1133
 TGFrame.cxx:1134
 TGFrame.cxx:1135
 TGFrame.cxx:1136
 TGFrame.cxx:1137
 TGFrame.cxx:1138
 TGFrame.cxx:1139
 TGFrame.cxx:1140
 TGFrame.cxx:1141
 TGFrame.cxx:1142
 TGFrame.cxx:1143
 TGFrame.cxx:1144
 TGFrame.cxx:1145
 TGFrame.cxx:1146
 TGFrame.cxx:1147
 TGFrame.cxx:1148
 TGFrame.cxx:1149
 TGFrame.cxx:1150
 TGFrame.cxx:1151
 TGFrame.cxx:1152
 TGFrame.cxx:1153
 TGFrame.cxx:1154
 TGFrame.cxx:1155
 TGFrame.cxx:1156
 TGFrame.cxx:1157
 TGFrame.cxx:1158
 TGFrame.cxx:1159
 TGFrame.cxx:1160
 TGFrame.cxx:1161
 TGFrame.cxx:1162
 TGFrame.cxx:1163
 TGFrame.cxx:1164
 TGFrame.cxx:1165
 TGFrame.cxx:1166
 TGFrame.cxx:1167
 TGFrame.cxx:1168
 TGFrame.cxx:1169
 TGFrame.cxx:1170
 TGFrame.cxx:1171
 TGFrame.cxx:1172
 TGFrame.cxx:1173
 TGFrame.cxx:1174
 TGFrame.cxx:1175
 TGFrame.cxx:1176
 TGFrame.cxx:1177
 TGFrame.cxx:1178
 TGFrame.cxx:1179
 TGFrame.cxx:1180
 TGFrame.cxx:1181
 TGFrame.cxx:1182
 TGFrame.cxx:1183
 TGFrame.cxx:1184
 TGFrame.cxx:1185
 TGFrame.cxx:1186
 TGFrame.cxx:1187
 TGFrame.cxx:1188
 TGFrame.cxx:1189
 TGFrame.cxx:1190
 TGFrame.cxx:1191
 TGFrame.cxx:1192
 TGFrame.cxx:1193
 TGFrame.cxx:1194
 TGFrame.cxx:1195
 TGFrame.cxx:1196
 TGFrame.cxx:1197
 TGFrame.cxx:1198
 TGFrame.cxx:1199
 TGFrame.cxx:1200
 TGFrame.cxx:1201
 TGFrame.cxx:1202
 TGFrame.cxx:1203
 TGFrame.cxx:1204
 TGFrame.cxx:1205
 TGFrame.cxx:1206
 TGFrame.cxx:1207
 TGFrame.cxx:1208
 TGFrame.cxx:1209
 TGFrame.cxx:1210
 TGFrame.cxx:1211
 TGFrame.cxx:1212
 TGFrame.cxx:1213
 TGFrame.cxx:1214
 TGFrame.cxx:1215
 TGFrame.cxx:1216
 TGFrame.cxx:1217
 TGFrame.cxx:1218
 TGFrame.cxx:1219
 TGFrame.cxx:1220
 TGFrame.cxx:1221
 TGFrame.cxx:1222
 TGFrame.cxx:1223
 TGFrame.cxx:1224
 TGFrame.cxx:1225
 TGFrame.cxx:1226
 TGFrame.cxx:1227
 TGFrame.cxx:1228
 TGFrame.cxx:1229
 TGFrame.cxx:1230
 TGFrame.cxx:1231
 TGFrame.cxx:1232
 TGFrame.cxx:1233
 TGFrame.cxx:1234
 TGFrame.cxx:1235
 TGFrame.cxx:1236
 TGFrame.cxx:1237
 TGFrame.cxx:1238
 TGFrame.cxx:1239
 TGFrame.cxx:1240
 TGFrame.cxx:1241
 TGFrame.cxx:1242
 TGFrame.cxx:1243
 TGFrame.cxx:1244
 TGFrame.cxx:1245
 TGFrame.cxx:1246
 TGFrame.cxx:1247
 TGFrame.cxx:1248
 TGFrame.cxx:1249
 TGFrame.cxx:1250
 TGFrame.cxx:1251
 TGFrame.cxx:1252
 TGFrame.cxx:1253
 TGFrame.cxx:1254
 TGFrame.cxx:1255
 TGFrame.cxx:1256
 TGFrame.cxx:1257
 TGFrame.cxx:1258
 TGFrame.cxx:1259
 TGFrame.cxx:1260
 TGFrame.cxx:1261
 TGFrame.cxx:1262
 TGFrame.cxx:1263
 TGFrame.cxx:1264
 TGFrame.cxx:1265
 TGFrame.cxx:1266
 TGFrame.cxx:1267
 TGFrame.cxx:1268
 TGFrame.cxx:1269
 TGFrame.cxx:1270
 TGFrame.cxx:1271
 TGFrame.cxx:1272
 TGFrame.cxx:1273
 TGFrame.cxx:1274
 TGFrame.cxx:1275
 TGFrame.cxx:1276
 TGFrame.cxx:1277
 TGFrame.cxx:1278
 TGFrame.cxx:1279
 TGFrame.cxx:1280
 TGFrame.cxx:1281
 TGFrame.cxx:1282
 TGFrame.cxx:1283
 TGFrame.cxx:1284
 TGFrame.cxx:1285
 TGFrame.cxx:1286
 TGFrame.cxx:1287
 TGFrame.cxx:1288
 TGFrame.cxx:1289
 TGFrame.cxx:1290
 TGFrame.cxx:1291
 TGFrame.cxx:1292
 TGFrame.cxx:1293
 TGFrame.cxx:1294
 TGFrame.cxx:1295
 TGFrame.cxx:1296
 TGFrame.cxx:1297
 TGFrame.cxx:1298
 TGFrame.cxx:1299
 TGFrame.cxx:1300
 TGFrame.cxx:1301
 TGFrame.cxx:1302
 TGFrame.cxx:1303
 TGFrame.cxx:1304
 TGFrame.cxx:1305
 TGFrame.cxx:1306
 TGFrame.cxx:1307
 TGFrame.cxx:1308
 TGFrame.cxx:1309
 TGFrame.cxx:1310
 TGFrame.cxx:1311
 TGFrame.cxx:1312
 TGFrame.cxx:1313
 TGFrame.cxx:1314
 TGFrame.cxx:1315
 TGFrame.cxx:1316
 TGFrame.cxx:1317
 TGFrame.cxx:1318
 TGFrame.cxx:1319
 TGFrame.cxx:1320
 TGFrame.cxx:1321
 TGFrame.cxx:1322
 TGFrame.cxx:1323
 TGFrame.cxx:1324
 TGFrame.cxx:1325
 TGFrame.cxx:1326
 TGFrame.cxx:1327
 TGFrame.cxx:1328
 TGFrame.cxx:1329
 TGFrame.cxx:1330
 TGFrame.cxx:1331
 TGFrame.cxx:1332
 TGFrame.cxx:1333
 TGFrame.cxx:1334
 TGFrame.cxx:1335
 TGFrame.cxx:1336
 TGFrame.cxx:1337
 TGFrame.cxx:1338
 TGFrame.cxx:1339
 TGFrame.cxx:1340
 TGFrame.cxx:1341
 TGFrame.cxx:1342
 TGFrame.cxx:1343
 TGFrame.cxx:1344
 TGFrame.cxx:1345
 TGFrame.cxx:1346
 TGFrame.cxx:1347
 TGFrame.cxx:1348
 TGFrame.cxx:1349
 TGFrame.cxx:1350
 TGFrame.cxx:1351
 TGFrame.cxx:1352
 TGFrame.cxx:1353
 TGFrame.cxx:1354
 TGFrame.cxx:1355
 TGFrame.cxx:1356
 TGFrame.cxx:1357
 TGFrame.cxx:1358
 TGFrame.cxx:1359
 TGFrame.cxx:1360
 TGFrame.cxx:1361
 TGFrame.cxx:1362
 TGFrame.cxx:1363
 TGFrame.cxx:1364
 TGFrame.cxx:1365
 TGFrame.cxx:1366
 TGFrame.cxx:1367
 TGFrame.cxx:1368
 TGFrame.cxx:1369
 TGFrame.cxx:1370
 TGFrame.cxx:1371
 TGFrame.cxx:1372
 TGFrame.cxx:1373
 TGFrame.cxx:1374
 TGFrame.cxx:1375
 TGFrame.cxx:1376
 TGFrame.cxx:1377
 TGFrame.cxx:1378
 TGFrame.cxx:1379
 TGFrame.cxx:1380
 TGFrame.cxx:1381
 TGFrame.cxx:1382
 TGFrame.cxx:1383
 TGFrame.cxx:1384
 TGFrame.cxx:1385
 TGFrame.cxx:1386
 TGFrame.cxx:1387
 TGFrame.cxx:1388
 TGFrame.cxx:1389
 TGFrame.cxx:1390
 TGFrame.cxx:1391
 TGFrame.cxx:1392
 TGFrame.cxx:1393
 TGFrame.cxx:1394
 TGFrame.cxx:1395
 TGFrame.cxx:1396
 TGFrame.cxx:1397
 TGFrame.cxx:1398
 TGFrame.cxx:1399
 TGFrame.cxx:1400
 TGFrame.cxx:1401
 TGFrame.cxx:1402
 TGFrame.cxx:1403
 TGFrame.cxx:1404
 TGFrame.cxx:1405
 TGFrame.cxx:1406
 TGFrame.cxx:1407
 TGFrame.cxx:1408
 TGFrame.cxx:1409
 TGFrame.cxx:1410
 TGFrame.cxx:1411
 TGFrame.cxx:1412
 TGFrame.cxx:1413
 TGFrame.cxx:1414
 TGFrame.cxx:1415
 TGFrame.cxx:1416
 TGFrame.cxx:1417
 TGFrame.cxx:1418
 TGFrame.cxx:1419
 TGFrame.cxx:1420
 TGFrame.cxx:1421
 TGFrame.cxx:1422
 TGFrame.cxx:1423
 TGFrame.cxx:1424
 TGFrame.cxx:1425
 TGFrame.cxx:1426
 TGFrame.cxx:1427
 TGFrame.cxx:1428
 TGFrame.cxx:1429
 TGFrame.cxx:1430
 TGFrame.cxx:1431
 TGFrame.cxx:1432
 TGFrame.cxx:1433
 TGFrame.cxx:1434
 TGFrame.cxx:1435
 TGFrame.cxx:1436
 TGFrame.cxx:1437
 TGFrame.cxx:1438
 TGFrame.cxx:1439
 TGFrame.cxx:1440
 TGFrame.cxx:1441
 TGFrame.cxx:1442
 TGFrame.cxx:1443
 TGFrame.cxx:1444
 TGFrame.cxx:1445
 TGFrame.cxx:1446
 TGFrame.cxx:1447
 TGFrame.cxx:1448
 TGFrame.cxx:1449
 TGFrame.cxx:1450
 TGFrame.cxx:1451
 TGFrame.cxx:1452
 TGFrame.cxx:1453
 TGFrame.cxx:1454
 TGFrame.cxx:1455
 TGFrame.cxx:1456
 TGFrame.cxx:1457
 TGFrame.cxx:1458
 TGFrame.cxx:1459
 TGFrame.cxx:1460
 TGFrame.cxx:1461
 TGFrame.cxx:1462
 TGFrame.cxx:1463
 TGFrame.cxx:1464
 TGFrame.cxx:1465
 TGFrame.cxx:1466
 TGFrame.cxx:1467
 TGFrame.cxx:1468
 TGFrame.cxx:1469
 TGFrame.cxx:1470
 TGFrame.cxx:1471
 TGFrame.cxx:1472
 TGFrame.cxx:1473
 TGFrame.cxx:1474
 TGFrame.cxx:1475
 TGFrame.cxx:1476
 TGFrame.cxx:1477
 TGFrame.cxx:1478
 TGFrame.cxx:1479
 TGFrame.cxx:1480
 TGFrame.cxx:1481
 TGFrame.cxx:1482
 TGFrame.cxx:1483
 TGFrame.cxx:1484
 TGFrame.cxx:1485
 TGFrame.cxx:1486
 TGFrame.cxx:1487
 TGFrame.cxx:1488
 TGFrame.cxx:1489
 TGFrame.cxx:1490
 TGFrame.cxx:1491
 TGFrame.cxx:1492
 TGFrame.cxx:1493
 TGFrame.cxx:1494
 TGFrame.cxx:1495
 TGFrame.cxx:1496
 TGFrame.cxx:1497
 TGFrame.cxx:1498
 TGFrame.cxx:1499
 TGFrame.cxx:1500
 TGFrame.cxx:1501
 TGFrame.cxx:1502
 TGFrame.cxx:1503
 TGFrame.cxx:1504
 TGFrame.cxx:1505
 TGFrame.cxx:1506
 TGFrame.cxx:1507
 TGFrame.cxx:1508
 TGFrame.cxx:1509
 TGFrame.cxx:1510
 TGFrame.cxx:1511
 TGFrame.cxx:1512
 TGFrame.cxx:1513
 TGFrame.cxx:1514
 TGFrame.cxx:1515
 TGFrame.cxx:1516
 TGFrame.cxx:1517
 TGFrame.cxx:1518
 TGFrame.cxx:1519
 TGFrame.cxx:1520
 TGFrame.cxx:1521
 TGFrame.cxx:1522
 TGFrame.cxx:1523
 TGFrame.cxx:1524
 TGFrame.cxx:1525
 TGFrame.cxx:1526
 TGFrame.cxx:1527
 TGFrame.cxx:1528
 TGFrame.cxx:1529
 TGFrame.cxx:1530
 TGFrame.cxx:1531
 TGFrame.cxx:1532
 TGFrame.cxx:1533
 TGFrame.cxx:1534
 TGFrame.cxx:1535
 TGFrame.cxx:1536
 TGFrame.cxx:1537
 TGFrame.cxx:1538
 TGFrame.cxx:1539
 TGFrame.cxx:1540
 TGFrame.cxx:1541
 TGFrame.cxx:1542
 TGFrame.cxx:1543
 TGFrame.cxx:1544
 TGFrame.cxx:1545
 TGFrame.cxx:1546
 TGFrame.cxx:1547
 TGFrame.cxx:1548
 TGFrame.cxx:1549
 TGFrame.cxx:1550
 TGFrame.cxx:1551
 TGFrame.cxx:1552
 TGFrame.cxx:1553
 TGFrame.cxx:1554
 TGFrame.cxx:1555
 TGFrame.cxx:1556
 TGFrame.cxx:1557
 TGFrame.cxx:1558
 TGFrame.cxx:1559
 TGFrame.cxx:1560
 TGFrame.cxx:1561
 TGFrame.cxx:1562
 TGFrame.cxx:1563
 TGFrame.cxx:1564
 TGFrame.cxx:1565
 TGFrame.cxx:1566
 TGFrame.cxx:1567
 TGFrame.cxx:1568
 TGFrame.cxx:1569
 TGFrame.cxx:1570
 TGFrame.cxx:1571
 TGFrame.cxx:1572
 TGFrame.cxx:1573
 TGFrame.cxx:1574
 TGFrame.cxx:1575
 TGFrame.cxx:1576
 TGFrame.cxx:1577
 TGFrame.cxx:1578
 TGFrame.cxx:1579
 TGFrame.cxx:1580
 TGFrame.cxx:1581
 TGFrame.cxx:1582
 TGFrame.cxx:1583
 TGFrame.cxx:1584
 TGFrame.cxx:1585
 TGFrame.cxx:1586
 TGFrame.cxx:1587
 TGFrame.cxx:1588
 TGFrame.cxx:1589
 TGFrame.cxx:1590
 TGFrame.cxx:1591
 TGFrame.cxx:1592
 TGFrame.cxx:1593
 TGFrame.cxx:1594
 TGFrame.cxx:1595
 TGFrame.cxx:1596
 TGFrame.cxx:1597
 TGFrame.cxx:1598
 TGFrame.cxx:1599
 TGFrame.cxx:1600
 TGFrame.cxx:1601
 TGFrame.cxx:1602
 TGFrame.cxx:1603
 TGFrame.cxx:1604
 TGFrame.cxx:1605
 TGFrame.cxx:1606
 TGFrame.cxx:1607
 TGFrame.cxx:1608
 TGFrame.cxx:1609
 TGFrame.cxx:1610
 TGFrame.cxx:1611
 TGFrame.cxx:1612
 TGFrame.cxx:1613
 TGFrame.cxx:1614
 TGFrame.cxx:1615
 TGFrame.cxx:1616
 TGFrame.cxx:1617
 TGFrame.cxx:1618
 TGFrame.cxx:1619
 TGFrame.cxx:1620
 TGFrame.cxx:1621
 TGFrame.cxx:1622
 TGFrame.cxx:1623
 TGFrame.cxx:1624
 TGFrame.cxx:1625
 TGFrame.cxx:1626
 TGFrame.cxx:1627
 TGFrame.cxx:1628
 TGFrame.cxx:1629
 TGFrame.cxx:1630
 TGFrame.cxx:1631
 TGFrame.cxx:1632
 TGFrame.cxx:1633
 TGFrame.cxx:1634
 TGFrame.cxx:1635
 TGFrame.cxx:1636
 TGFrame.cxx:1637
 TGFrame.cxx:1638
 TGFrame.cxx:1639
 TGFrame.cxx:1640
 TGFrame.cxx:1641
 TGFrame.cxx:1642
 TGFrame.cxx:1643
 TGFrame.cxx:1644
 TGFrame.cxx:1645
 TGFrame.cxx:1646
 TGFrame.cxx:1647
 TGFrame.cxx:1648
 TGFrame.cxx:1649
 TGFrame.cxx:1650
 TGFrame.cxx:1651
 TGFrame.cxx:1652
 TGFrame.cxx:1653
 TGFrame.cxx:1654
 TGFrame.cxx:1655
 TGFrame.cxx:1656
 TGFrame.cxx:1657
 TGFrame.cxx:1658
 TGFrame.cxx:1659
 TGFrame.cxx:1660
 TGFrame.cxx:1661
 TGFrame.cxx:1662
 TGFrame.cxx:1663
 TGFrame.cxx:1664
 TGFrame.cxx:1665
 TGFrame.cxx:1666
 TGFrame.cxx:1667
 TGFrame.cxx:1668
 TGFrame.cxx:1669
 TGFrame.cxx:1670
 TGFrame.cxx:1671
 TGFrame.cxx:1672
 TGFrame.cxx:1673
 TGFrame.cxx:1674
 TGFrame.cxx:1675
 TGFrame.cxx:1676
 TGFrame.cxx:1677
 TGFrame.cxx:1678
 TGFrame.cxx:1679
 TGFrame.cxx:1680
 TGFrame.cxx:1681
 TGFrame.cxx:1682
 TGFrame.cxx:1683
 TGFrame.cxx:1684
 TGFrame.cxx:1685
 TGFrame.cxx:1686
 TGFrame.cxx:1687
 TGFrame.cxx:1688
 TGFrame.cxx:1689
 TGFrame.cxx:1690
 TGFrame.cxx:1691
 TGFrame.cxx:1692
 TGFrame.cxx:1693
 TGFrame.cxx:1694
 TGFrame.cxx:1695
 TGFrame.cxx:1696
 TGFrame.cxx:1697
 TGFrame.cxx:1698
 TGFrame.cxx:1699
 TGFrame.cxx:1700
 TGFrame.cxx:1701
 TGFrame.cxx:1702
 TGFrame.cxx:1703
 TGFrame.cxx:1704
 TGFrame.cxx:1705
 TGFrame.cxx:1706
 TGFrame.cxx:1707
 TGFrame.cxx:1708
 TGFrame.cxx:1709
 TGFrame.cxx:1710
 TGFrame.cxx:1711
 TGFrame.cxx:1712
 TGFrame.cxx:1713
 TGFrame.cxx:1714
 TGFrame.cxx:1715
 TGFrame.cxx:1716
 TGFrame.cxx:1717
 TGFrame.cxx:1718
 TGFrame.cxx:1719
 TGFrame.cxx:1720
 TGFrame.cxx:1721
 TGFrame.cxx:1722
 TGFrame.cxx:1723
 TGFrame.cxx:1724
 TGFrame.cxx:1725
 TGFrame.cxx:1726
 TGFrame.cxx:1727
 TGFrame.cxx:1728
 TGFrame.cxx:1729
 TGFrame.cxx:1730
 TGFrame.cxx:1731
 TGFrame.cxx:1732
 TGFrame.cxx:1733
 TGFrame.cxx:1734
 TGFrame.cxx:1735
 TGFrame.cxx:1736
 TGFrame.cxx:1737
 TGFrame.cxx:1738
 TGFrame.cxx:1739
 TGFrame.cxx:1740
 TGFrame.cxx:1741
 TGFrame.cxx:1742
 TGFrame.cxx:1743
 TGFrame.cxx:1744
 TGFrame.cxx:1745
 TGFrame.cxx:1746
 TGFrame.cxx:1747
 TGFrame.cxx:1748
 TGFrame.cxx:1749
 TGFrame.cxx:1750
 TGFrame.cxx:1751
 TGFrame.cxx:1752
 TGFrame.cxx:1753
 TGFrame.cxx:1754
 TGFrame.cxx:1755
 TGFrame.cxx:1756
 TGFrame.cxx:1757
 TGFrame.cxx:1758
 TGFrame.cxx:1759
 TGFrame.cxx:1760
 TGFrame.cxx:1761
 TGFrame.cxx:1762
 TGFrame.cxx:1763
 TGFrame.cxx:1764
 TGFrame.cxx:1765
 TGFrame.cxx:1766
 TGFrame.cxx:1767
 TGFrame.cxx:1768
 TGFrame.cxx:1769
 TGFrame.cxx:1770
 TGFrame.cxx:1771
 TGFrame.cxx:1772
 TGFrame.cxx:1773
 TGFrame.cxx:1774
 TGFrame.cxx:1775
 TGFrame.cxx:1776
 TGFrame.cxx:1777
 TGFrame.cxx:1778
 TGFrame.cxx:1779
 TGFrame.cxx:1780
 TGFrame.cxx:1781
 TGFrame.cxx:1782
 TGFrame.cxx:1783
 TGFrame.cxx:1784
 TGFrame.cxx:1785
 TGFrame.cxx:1786
 TGFrame.cxx:1787
 TGFrame.cxx:1788
 TGFrame.cxx:1789
 TGFrame.cxx:1790
 TGFrame.cxx:1791
 TGFrame.cxx:1792
 TGFrame.cxx:1793
 TGFrame.cxx:1794
 TGFrame.cxx:1795
 TGFrame.cxx:1796
 TGFrame.cxx:1797
 TGFrame.cxx:1798
 TGFrame.cxx:1799
 TGFrame.cxx:1800
 TGFrame.cxx:1801
 TGFrame.cxx:1802
 TGFrame.cxx:1803
 TGFrame.cxx:1804
 TGFrame.cxx:1805
 TGFrame.cxx:1806
 TGFrame.cxx:1807
 TGFrame.cxx:1808
 TGFrame.cxx:1809
 TGFrame.cxx:1810
 TGFrame.cxx:1811
 TGFrame.cxx:1812
 TGFrame.cxx:1813
 TGFrame.cxx:1814
 TGFrame.cxx:1815
 TGFrame.cxx:1816
 TGFrame.cxx:1817
 TGFrame.cxx:1818
 TGFrame.cxx:1819
 TGFrame.cxx:1820
 TGFrame.cxx:1821
 TGFrame.cxx:1822
 TGFrame.cxx:1823
 TGFrame.cxx:1824
 TGFrame.cxx:1825
 TGFrame.cxx:1826
 TGFrame.cxx:1827
 TGFrame.cxx:1828
 TGFrame.cxx:1829
 TGFrame.cxx:1830
 TGFrame.cxx:1831
 TGFrame.cxx:1832
 TGFrame.cxx:1833
 TGFrame.cxx:1834
 TGFrame.cxx:1835
 TGFrame.cxx:1836
 TGFrame.cxx:1837
 TGFrame.cxx:1838
 TGFrame.cxx:1839
 TGFrame.cxx:1840
 TGFrame.cxx:1841
 TGFrame.cxx:1842
 TGFrame.cxx:1843
 TGFrame.cxx:1844
 TGFrame.cxx:1845
 TGFrame.cxx:1846
 TGFrame.cxx:1847
 TGFrame.cxx:1848
 TGFrame.cxx:1849
 TGFrame.cxx:1850
 TGFrame.cxx:1851
 TGFrame.cxx:1852
 TGFrame.cxx:1853
 TGFrame.cxx:1854
 TGFrame.cxx:1855
 TGFrame.cxx:1856
 TGFrame.cxx:1857
 TGFrame.cxx:1858
 TGFrame.cxx:1859
 TGFrame.cxx:1860
 TGFrame.cxx:1861
 TGFrame.cxx:1862
 TGFrame.cxx:1863
 TGFrame.cxx:1864
 TGFrame.cxx:1865
 TGFrame.cxx:1866
 TGFrame.cxx:1867
 TGFrame.cxx:1868
 TGFrame.cxx:1869
 TGFrame.cxx:1870
 TGFrame.cxx:1871
 TGFrame.cxx:1872
 TGFrame.cxx:1873
 TGFrame.cxx:1874
 TGFrame.cxx:1875
 TGFrame.cxx:1876
 TGFrame.cxx:1877
 TGFrame.cxx:1878
 TGFrame.cxx:1879
 TGFrame.cxx:1880
 TGFrame.cxx:1881
 TGFrame.cxx:1882
 TGFrame.cxx:1883
 TGFrame.cxx:1884
 TGFrame.cxx:1885
 TGFrame.cxx:1886
 TGFrame.cxx:1887
 TGFrame.cxx:1888
 TGFrame.cxx:1889
 TGFrame.cxx:1890
 TGFrame.cxx:1891
 TGFrame.cxx:1892
 TGFrame.cxx:1893
 TGFrame.cxx:1894
 TGFrame.cxx:1895
 TGFrame.cxx:1896
 TGFrame.cxx:1897
 TGFrame.cxx:1898
 TGFrame.cxx:1899
 TGFrame.cxx:1900
 TGFrame.cxx:1901
 TGFrame.cxx:1902
 TGFrame.cxx:1903
 TGFrame.cxx:1904
 TGFrame.cxx:1905
 TGFrame.cxx:1906
 TGFrame.cxx:1907
 TGFrame.cxx:1908
 TGFrame.cxx:1909
 TGFrame.cxx:1910
 TGFrame.cxx:1911
 TGFrame.cxx:1912
 TGFrame.cxx:1913
 TGFrame.cxx:1914
 TGFrame.cxx:1915
 TGFrame.cxx:1916
 TGFrame.cxx:1917
 TGFrame.cxx:1918
 TGFrame.cxx:1919
 TGFrame.cxx:1920
 TGFrame.cxx:1921
 TGFrame.cxx:1922
 TGFrame.cxx:1923
 TGFrame.cxx:1924
 TGFrame.cxx:1925
 TGFrame.cxx:1926
 TGFrame.cxx:1927
 TGFrame.cxx:1928
 TGFrame.cxx:1929
 TGFrame.cxx:1930
 TGFrame.cxx:1931
 TGFrame.cxx:1932
 TGFrame.cxx:1933
 TGFrame.cxx:1934
 TGFrame.cxx:1935
 TGFrame.cxx:1936
 TGFrame.cxx:1937
 TGFrame.cxx:1938
 TGFrame.cxx:1939
 TGFrame.cxx:1940
 TGFrame.cxx:1941
 TGFrame.cxx:1942
 TGFrame.cxx:1943
 TGFrame.cxx:1944
 TGFrame.cxx:1945
 TGFrame.cxx:1946
 TGFrame.cxx:1947
 TGFrame.cxx:1948
 TGFrame.cxx:1949
 TGFrame.cxx:1950
 TGFrame.cxx:1951
 TGFrame.cxx:1952
 TGFrame.cxx:1953
 TGFrame.cxx:1954
 TGFrame.cxx:1955
 TGFrame.cxx:1956
 TGFrame.cxx:1957
 TGFrame.cxx:1958
 TGFrame.cxx:1959
 TGFrame.cxx:1960
 TGFrame.cxx:1961
 TGFrame.cxx:1962
 TGFrame.cxx:1963
 TGFrame.cxx:1964
 TGFrame.cxx:1965
 TGFrame.cxx:1966
 TGFrame.cxx:1967
 TGFrame.cxx:1968
 TGFrame.cxx:1969
 TGFrame.cxx:1970
 TGFrame.cxx:1971
 TGFrame.cxx:1972
 TGFrame.cxx:1973
 TGFrame.cxx:1974
 TGFrame.cxx:1975
 TGFrame.cxx:1976
 TGFrame.cxx:1977
 TGFrame.cxx:1978
 TGFrame.cxx:1979
 TGFrame.cxx:1980
 TGFrame.cxx:1981
 TGFrame.cxx:1982
 TGFrame.cxx:1983
 TGFrame.cxx:1984
 TGFrame.cxx:1985
 TGFrame.cxx:1986
 TGFrame.cxx:1987
 TGFrame.cxx:1988
 TGFrame.cxx:1989
 TGFrame.cxx:1990
 TGFrame.cxx:1991
 TGFrame.cxx:1992
 TGFrame.cxx:1993
 TGFrame.cxx:1994
 TGFrame.cxx:1995
 TGFrame.cxx:1996
 TGFrame.cxx:1997
 TGFrame.cxx:1998
 TGFrame.cxx:1999
 TGFrame.cxx:2000
 TGFrame.cxx:2001
 TGFrame.cxx:2002
 TGFrame.cxx:2003
 TGFrame.cxx:2004
 TGFrame.cxx:2005
 TGFrame.cxx:2006
 TGFrame.cxx:2007
 TGFrame.cxx:2008
 TGFrame.cxx:2009
 TGFrame.cxx:2010
 TGFrame.cxx:2011
 TGFrame.cxx:2012
 TGFrame.cxx:2013
 TGFrame.cxx:2014
 TGFrame.cxx:2015
 TGFrame.cxx:2016
 TGFrame.cxx:2017
 TGFrame.cxx:2018
 TGFrame.cxx:2019
 TGFrame.cxx:2020
 TGFrame.cxx:2021
 TGFrame.cxx:2022
 TGFrame.cxx:2023
 TGFrame.cxx:2024
 TGFrame.cxx:2025
 TGFrame.cxx:2026
 TGFrame.cxx:2027
 TGFrame.cxx:2028
 TGFrame.cxx:2029
 TGFrame.cxx:2030
 TGFrame.cxx:2031
 TGFrame.cxx:2032
 TGFrame.cxx:2033
 TGFrame.cxx:2034
 TGFrame.cxx:2035
 TGFrame.cxx:2036
 TGFrame.cxx:2037
 TGFrame.cxx:2038
 TGFrame.cxx:2039
 TGFrame.cxx:2040
 TGFrame.cxx:2041
 TGFrame.cxx:2042
 TGFrame.cxx:2043
 TGFrame.cxx:2044
 TGFrame.cxx:2045
 TGFrame.cxx:2046
 TGFrame.cxx:2047
 TGFrame.cxx:2048
 TGFrame.cxx:2049
 TGFrame.cxx:2050
 TGFrame.cxx:2051
 TGFrame.cxx:2052
 TGFrame.cxx:2053
 TGFrame.cxx:2054
 TGFrame.cxx:2055
 TGFrame.cxx:2056
 TGFrame.cxx:2057
 TGFrame.cxx:2058
 TGFrame.cxx:2059
 TGFrame.cxx:2060
 TGFrame.cxx:2061
 TGFrame.cxx:2062
 TGFrame.cxx:2063
 TGFrame.cxx:2064
 TGFrame.cxx:2065
 TGFrame.cxx:2066
 TGFrame.cxx:2067
 TGFrame.cxx:2068
 TGFrame.cxx:2069
 TGFrame.cxx:2070
 TGFrame.cxx:2071
 TGFrame.cxx:2072
 TGFrame.cxx:2073
 TGFrame.cxx:2074
 TGFrame.cxx:2075
 TGFrame.cxx:2076
 TGFrame.cxx:2077
 TGFrame.cxx:2078
 TGFrame.cxx:2079
 TGFrame.cxx:2080
 TGFrame.cxx:2081
 TGFrame.cxx:2082
 TGFrame.cxx:2083
 TGFrame.cxx:2084
 TGFrame.cxx:2085
 TGFrame.cxx:2086
 TGFrame.cxx:2087
 TGFrame.cxx:2088
 TGFrame.cxx:2089
 TGFrame.cxx:2090
 TGFrame.cxx:2091
 TGFrame.cxx:2092
 TGFrame.cxx:2093
 TGFrame.cxx:2094
 TGFrame.cxx:2095
 TGFrame.cxx:2096
 TGFrame.cxx:2097
 TGFrame.cxx:2098
 TGFrame.cxx:2099
 TGFrame.cxx:2100
 TGFrame.cxx:2101
 TGFrame.cxx:2102
 TGFrame.cxx:2103
 TGFrame.cxx:2104
 TGFrame.cxx:2105
 TGFrame.cxx:2106
 TGFrame.cxx:2107
 TGFrame.cxx:2108
 TGFrame.cxx:2109
 TGFrame.cxx:2110
 TGFrame.cxx:2111
 TGFrame.cxx:2112
 TGFrame.cxx:2113
 TGFrame.cxx:2114
 TGFrame.cxx:2115
 TGFrame.cxx:2116
 TGFrame.cxx:2117
 TGFrame.cxx:2118
 TGFrame.cxx:2119
 TGFrame.cxx:2120
 TGFrame.cxx:2121
 TGFrame.cxx:2122
 TGFrame.cxx:2123
 TGFrame.cxx:2124
 TGFrame.cxx:2125
 TGFrame.cxx:2126
 TGFrame.cxx:2127
 TGFrame.cxx:2128
 TGFrame.cxx:2129
 TGFrame.cxx:2130
 TGFrame.cxx:2131
 TGFrame.cxx:2132
 TGFrame.cxx:2133
 TGFrame.cxx:2134
 TGFrame.cxx:2135
 TGFrame.cxx:2136
 TGFrame.cxx:2137
 TGFrame.cxx:2138
 TGFrame.cxx:2139
 TGFrame.cxx:2140
 TGFrame.cxx:2141
 TGFrame.cxx:2142
 TGFrame.cxx:2143
 TGFrame.cxx:2144
 TGFrame.cxx:2145
 TGFrame.cxx:2146
 TGFrame.cxx:2147
 TGFrame.cxx:2148
 TGFrame.cxx:2149
 TGFrame.cxx:2150
 TGFrame.cxx:2151
 TGFrame.cxx:2152
 TGFrame.cxx:2153
 TGFrame.cxx:2154
 TGFrame.cxx:2155
 TGFrame.cxx:2156
 TGFrame.cxx:2157
 TGFrame.cxx:2158
 TGFrame.cxx:2159
 TGFrame.cxx:2160
 TGFrame.cxx:2161
 TGFrame.cxx:2162
 TGFrame.cxx:2163
 TGFrame.cxx:2164
 TGFrame.cxx:2165
 TGFrame.cxx:2166
 TGFrame.cxx:2167
 TGFrame.cxx:2168
 TGFrame.cxx:2169
 TGFrame.cxx:2170
 TGFrame.cxx:2171
 TGFrame.cxx:2172
 TGFrame.cxx:2173
 TGFrame.cxx:2174
 TGFrame.cxx:2175
 TGFrame.cxx:2176
 TGFrame.cxx:2177
 TGFrame.cxx:2178
 TGFrame.cxx:2179
 TGFrame.cxx:2180
 TGFrame.cxx:2181
 TGFrame.cxx:2182
 TGFrame.cxx:2183
 TGFrame.cxx:2184
 TGFrame.cxx:2185
 TGFrame.cxx:2186
 TGFrame.cxx:2187
 TGFrame.cxx:2188
 TGFrame.cxx:2189
 TGFrame.cxx:2190
 TGFrame.cxx:2191
 TGFrame.cxx:2192
 TGFrame.cxx:2193
 TGFrame.cxx:2194
 TGFrame.cxx:2195
 TGFrame.cxx:2196
 TGFrame.cxx:2197
 TGFrame.cxx:2198
 TGFrame.cxx:2199
 TGFrame.cxx:2200
 TGFrame.cxx:2201
 TGFrame.cxx:2202
 TGFrame.cxx:2203
 TGFrame.cxx:2204
 TGFrame.cxx:2205
 TGFrame.cxx:2206
 TGFrame.cxx:2207
 TGFrame.cxx:2208
 TGFrame.cxx:2209
 TGFrame.cxx:2210
 TGFrame.cxx:2211
 TGFrame.cxx:2212
 TGFrame.cxx:2213
 TGFrame.cxx:2214
 TGFrame.cxx:2215
 TGFrame.cxx:2216
 TGFrame.cxx:2217
 TGFrame.cxx:2218
 TGFrame.cxx:2219
 TGFrame.cxx:2220
 TGFrame.cxx:2221
 TGFrame.cxx:2222
 TGFrame.cxx:2223
 TGFrame.cxx:2224
 TGFrame.cxx:2225
 TGFrame.cxx:2226
 TGFrame.cxx:2227
 TGFrame.cxx:2228
 TGFrame.cxx:2229
 TGFrame.cxx:2230
 TGFrame.cxx:2231
 TGFrame.cxx:2232
 TGFrame.cxx:2233
 TGFrame.cxx:2234
 TGFrame.cxx:2235
 TGFrame.cxx:2236
 TGFrame.cxx:2237
 TGFrame.cxx:2238
 TGFrame.cxx:2239
 TGFrame.cxx:2240
 TGFrame.cxx:2241
 TGFrame.cxx:2242
 TGFrame.cxx:2243
 TGFrame.cxx:2244
 TGFrame.cxx:2245
 TGFrame.cxx:2246
 TGFrame.cxx:2247
 TGFrame.cxx:2248
 TGFrame.cxx:2249
 TGFrame.cxx:2250
 TGFrame.cxx:2251
 TGFrame.cxx:2252
 TGFrame.cxx:2253
 TGFrame.cxx:2254
 TGFrame.cxx:2255
 TGFrame.cxx:2256
 TGFrame.cxx:2257
 TGFrame.cxx:2258
 TGFrame.cxx:2259
 TGFrame.cxx:2260
 TGFrame.cxx:2261
 TGFrame.cxx:2262
 TGFrame.cxx:2263
 TGFrame.cxx:2264
 TGFrame.cxx:2265
 TGFrame.cxx:2266
 TGFrame.cxx:2267
 TGFrame.cxx:2268
 TGFrame.cxx:2269
 TGFrame.cxx:2270
 TGFrame.cxx:2271
 TGFrame.cxx:2272
 TGFrame.cxx:2273
 TGFrame.cxx:2274
 TGFrame.cxx:2275
 TGFrame.cxx:2276
 TGFrame.cxx:2277
 TGFrame.cxx:2278
 TGFrame.cxx:2279
 TGFrame.cxx:2280
 TGFrame.cxx:2281
 TGFrame.cxx:2282
 TGFrame.cxx:2283
 TGFrame.cxx:2284
 TGFrame.cxx:2285
 TGFrame.cxx:2286
 TGFrame.cxx:2287
 TGFrame.cxx:2288
 TGFrame.cxx:2289
 TGFrame.cxx:2290
 TGFrame.cxx:2291
 TGFrame.cxx:2292
 TGFrame.cxx:2293
 TGFrame.cxx:2294
 TGFrame.cxx:2295
 TGFrame.cxx:2296
 TGFrame.cxx:2297
 TGFrame.cxx:2298
 TGFrame.cxx:2299
 TGFrame.cxx:2300
 TGFrame.cxx:2301
 TGFrame.cxx:2302
 TGFrame.cxx:2303
 TGFrame.cxx:2304
 TGFrame.cxx:2305
 TGFrame.cxx:2306
 TGFrame.cxx:2307
 TGFrame.cxx:2308
 TGFrame.cxx:2309
 TGFrame.cxx:2310
 TGFrame.cxx:2311
 TGFrame.cxx:2312
 TGFrame.cxx:2313
 TGFrame.cxx:2314
 TGFrame.cxx:2315
 TGFrame.cxx:2316
 TGFrame.cxx:2317
 TGFrame.cxx:2318
 TGFrame.cxx:2319
 TGFrame.cxx:2320
 TGFrame.cxx:2321
 TGFrame.cxx:2322
 TGFrame.cxx:2323
 TGFrame.cxx:2324
 TGFrame.cxx:2325
 TGFrame.cxx:2326
 TGFrame.cxx:2327
 TGFrame.cxx:2328
 TGFrame.cxx:2329
 TGFrame.cxx:2330
 TGFrame.cxx:2331
 TGFrame.cxx:2332
 TGFrame.cxx:2333
 TGFrame.cxx:2334
 TGFrame.cxx:2335
 TGFrame.cxx:2336
 TGFrame.cxx:2337
 TGFrame.cxx:2338
 TGFrame.cxx:2339
 TGFrame.cxx:2340
 TGFrame.cxx:2341
 TGFrame.cxx:2342
 TGFrame.cxx:2343
 TGFrame.cxx:2344
 TGFrame.cxx:2345
 TGFrame.cxx:2346
 TGFrame.cxx:2347
 TGFrame.cxx:2348
 TGFrame.cxx:2349
 TGFrame.cxx:2350
 TGFrame.cxx:2351
 TGFrame.cxx:2352
 TGFrame.cxx:2353
 TGFrame.cxx:2354
 TGFrame.cxx:2355
 TGFrame.cxx:2356
 TGFrame.cxx:2357
 TGFrame.cxx:2358
 TGFrame.cxx:2359
 TGFrame.cxx:2360
 TGFrame.cxx:2361
 TGFrame.cxx:2362
 TGFrame.cxx:2363
 TGFrame.cxx:2364
 TGFrame.cxx:2365
 TGFrame.cxx:2366
 TGFrame.cxx:2367
 TGFrame.cxx:2368
 TGFrame.cxx:2369
 TGFrame.cxx:2370
 TGFrame.cxx:2371
 TGFrame.cxx:2372
 TGFrame.cxx:2373
 TGFrame.cxx:2374
 TGFrame.cxx:2375
 TGFrame.cxx:2376
 TGFrame.cxx:2377
 TGFrame.cxx:2378
 TGFrame.cxx:2379
 TGFrame.cxx:2380
 TGFrame.cxx:2381
 TGFrame.cxx:2382
 TGFrame.cxx:2383
 TGFrame.cxx:2384
 TGFrame.cxx:2385
 TGFrame.cxx:2386
 TGFrame.cxx:2387
 TGFrame.cxx:2388
 TGFrame.cxx:2389
 TGFrame.cxx:2390
 TGFrame.cxx:2391
 TGFrame.cxx:2392
 TGFrame.cxx:2393
 TGFrame.cxx:2394
 TGFrame.cxx:2395
 TGFrame.cxx:2396
 TGFrame.cxx:2397
 TGFrame.cxx:2398
 TGFrame.cxx:2399
 TGFrame.cxx:2400
 TGFrame.cxx:2401
 TGFrame.cxx:2402
 TGFrame.cxx:2403
 TGFrame.cxx:2404
 TGFrame.cxx:2405
 TGFrame.cxx:2406
 TGFrame.cxx:2407
 TGFrame.cxx:2408
 TGFrame.cxx:2409
 TGFrame.cxx:2410
 TGFrame.cxx:2411
 TGFrame.cxx:2412
 TGFrame.cxx:2413
 TGFrame.cxx:2414
 TGFrame.cxx:2415
 TGFrame.cxx:2416
 TGFrame.cxx:2417
 TGFrame.cxx:2418
 TGFrame.cxx:2419
 TGFrame.cxx:2420
 TGFrame.cxx:2421
 TGFrame.cxx:2422
 TGFrame.cxx:2423
 TGFrame.cxx:2424
 TGFrame.cxx:2425
 TGFrame.cxx:2426
 TGFrame.cxx:2427
 TGFrame.cxx:2428
 TGFrame.cxx:2429
 TGFrame.cxx:2430
 TGFrame.cxx:2431
 TGFrame.cxx:2432
 TGFrame.cxx:2433
 TGFrame.cxx:2434
 TGFrame.cxx:2435
 TGFrame.cxx:2436
 TGFrame.cxx:2437
 TGFrame.cxx:2438
 TGFrame.cxx:2439
 TGFrame.cxx:2440
 TGFrame.cxx:2441
 TGFrame.cxx:2442
 TGFrame.cxx:2443
 TGFrame.cxx:2444
 TGFrame.cxx:2445
 TGFrame.cxx:2446
 TGFrame.cxx:2447
 TGFrame.cxx:2448
 TGFrame.cxx:2449
 TGFrame.cxx:2450
 TGFrame.cxx:2451
 TGFrame.cxx:2452
 TGFrame.cxx:2453
 TGFrame.cxx:2454
 TGFrame.cxx:2455
 TGFrame.cxx:2456
 TGFrame.cxx:2457
 TGFrame.cxx:2458
 TGFrame.cxx:2459
 TGFrame.cxx:2460
 TGFrame.cxx:2461
 TGFrame.cxx:2462
 TGFrame.cxx:2463
 TGFrame.cxx:2464
 TGFrame.cxx:2465
 TGFrame.cxx:2466
 TGFrame.cxx:2467
 TGFrame.cxx:2468
 TGFrame.cxx:2469
 TGFrame.cxx:2470
 TGFrame.cxx:2471
 TGFrame.cxx:2472
 TGFrame.cxx:2473
 TGFrame.cxx:2474
 TGFrame.cxx:2475
 TGFrame.cxx:2476
 TGFrame.cxx:2477
 TGFrame.cxx:2478
 TGFrame.cxx:2479
 TGFrame.cxx:2480
 TGFrame.cxx:2481
 TGFrame.cxx:2482
 TGFrame.cxx:2483
 TGFrame.cxx:2484
 TGFrame.cxx:2485
 TGFrame.cxx:2486
 TGFrame.cxx:2487
 TGFrame.cxx:2488
 TGFrame.cxx:2489
 TGFrame.cxx:2490
 TGFrame.cxx:2491
 TGFrame.cxx:2492
 TGFrame.cxx:2493
 TGFrame.cxx:2494
 TGFrame.cxx:2495
 TGFrame.cxx:2496
 TGFrame.cxx:2497
 TGFrame.cxx:2498
 TGFrame.cxx:2499
 TGFrame.cxx:2500
 TGFrame.cxx:2501
 TGFrame.cxx:2502
 TGFrame.cxx:2503
 TGFrame.cxx:2504
 TGFrame.cxx:2505
 TGFrame.cxx:2506
 TGFrame.cxx:2507
 TGFrame.cxx:2508
 TGFrame.cxx:2509
 TGFrame.cxx:2510
 TGFrame.cxx:2511
 TGFrame.cxx:2512
 TGFrame.cxx:2513
 TGFrame.cxx:2514
 TGFrame.cxx:2515
 TGFrame.cxx:2516
 TGFrame.cxx:2517
 TGFrame.cxx:2518
 TGFrame.cxx:2519
 TGFrame.cxx:2520
 TGFrame.cxx:2521
 TGFrame.cxx:2522
 TGFrame.cxx:2523
 TGFrame.cxx:2524
 TGFrame.cxx:2525
 TGFrame.cxx:2526
 TGFrame.cxx:2527
 TGFrame.cxx:2528
 TGFrame.cxx:2529
 TGFrame.cxx:2530
 TGFrame.cxx:2531
 TGFrame.cxx:2532
 TGFrame.cxx:2533
 TGFrame.cxx:2534
 TGFrame.cxx:2535
 TGFrame.cxx:2536
 TGFrame.cxx:2537
 TGFrame.cxx:2538
 TGFrame.cxx:2539
 TGFrame.cxx:2540
 TGFrame.cxx:2541
 TGFrame.cxx:2542
 TGFrame.cxx:2543
 TGFrame.cxx:2544
 TGFrame.cxx:2545
 TGFrame.cxx:2546
 TGFrame.cxx:2547
 TGFrame.cxx:2548
 TGFrame.cxx:2549
 TGFrame.cxx:2550
 TGFrame.cxx:2551
 TGFrame.cxx:2552
 TGFrame.cxx:2553
 TGFrame.cxx:2554
 TGFrame.cxx:2555
 TGFrame.cxx:2556
 TGFrame.cxx:2557
 TGFrame.cxx:2558
 TGFrame.cxx:2559
 TGFrame.cxx:2560
 TGFrame.cxx:2561
 TGFrame.cxx:2562
 TGFrame.cxx:2563
 TGFrame.cxx:2564
 TGFrame.cxx:2565
 TGFrame.cxx:2566
 TGFrame.cxx:2567
 TGFrame.cxx:2568
 TGFrame.cxx:2569
 TGFrame.cxx:2570
 TGFrame.cxx:2571
 TGFrame.cxx:2572
 TGFrame.cxx:2573
 TGFrame.cxx:2574
 TGFrame.cxx:2575
 TGFrame.cxx:2576
 TGFrame.cxx:2577
 TGFrame.cxx:2578
 TGFrame.cxx:2579
 TGFrame.cxx:2580
 TGFrame.cxx:2581
 TGFrame.cxx:2582
 TGFrame.cxx:2583
 TGFrame.cxx:2584
 TGFrame.cxx:2585
 TGFrame.cxx:2586
 TGFrame.cxx:2587
 TGFrame.cxx:2588
 TGFrame.cxx:2589
 TGFrame.cxx:2590
 TGFrame.cxx:2591
 TGFrame.cxx:2592
 TGFrame.cxx:2593
 TGFrame.cxx:2594
 TGFrame.cxx:2595
 TGFrame.cxx:2596
 TGFrame.cxx:2597
 TGFrame.cxx:2598
 TGFrame.cxx:2599
 TGFrame.cxx:2600
 TGFrame.cxx:2601
 TGFrame.cxx:2602
 TGFrame.cxx:2603
 TGFrame.cxx:2604
 TGFrame.cxx:2605
 TGFrame.cxx:2606
 TGFrame.cxx:2607
 TGFrame.cxx:2608
 TGFrame.cxx:2609
 TGFrame.cxx:2610
 TGFrame.cxx:2611
 TGFrame.cxx:2612
 TGFrame.cxx:2613
 TGFrame.cxx:2614
 TGFrame.cxx:2615
 TGFrame.cxx:2616
 TGFrame.cxx:2617
 TGFrame.cxx:2618
 TGFrame.cxx:2619
 TGFrame.cxx:2620
 TGFrame.cxx:2621
 TGFrame.cxx:2622
 TGFrame.cxx:2623
 TGFrame.cxx:2624
 TGFrame.cxx:2625
 TGFrame.cxx:2626
 TGFrame.cxx:2627
 TGFrame.cxx:2628
 TGFrame.cxx:2629
 TGFrame.cxx:2630
 TGFrame.cxx:2631
 TGFrame.cxx:2632
 TGFrame.cxx:2633
 TGFrame.cxx:2634
 TGFrame.cxx:2635
 TGFrame.cxx:2636
 TGFrame.cxx:2637
 TGFrame.cxx:2638
 TGFrame.cxx:2639
 TGFrame.cxx:2640
 TGFrame.cxx:2641
 TGFrame.cxx:2642
 TGFrame.cxx:2643
 TGFrame.cxx:2644
 TGFrame.cxx:2645
 TGFrame.cxx:2646
 TGFrame.cxx:2647
 TGFrame.cxx:2648
 TGFrame.cxx:2649
 TGFrame.cxx:2650
 TGFrame.cxx:2651
 TGFrame.cxx:2652
 TGFrame.cxx:2653
 TGFrame.cxx:2654
 TGFrame.cxx:2655
 TGFrame.cxx:2656
 TGFrame.cxx:2657
 TGFrame.cxx:2658
 TGFrame.cxx:2659
 TGFrame.cxx:2660
 TGFrame.cxx:2661
 TGFrame.cxx:2662
 TGFrame.cxx:2663
 TGFrame.cxx:2664
 TGFrame.cxx:2665
 TGFrame.cxx:2666
 TGFrame.cxx:2667
 TGFrame.cxx:2668
 TGFrame.cxx:2669
 TGFrame.cxx:2670
 TGFrame.cxx:2671
 TGFrame.cxx:2672
 TGFrame.cxx:2673
 TGFrame.cxx:2674
 TGFrame.cxx:2675
 TGFrame.cxx:2676
 TGFrame.cxx:2677
 TGFrame.cxx:2678
 TGFrame.cxx:2679
 TGFrame.cxx:2680
 TGFrame.cxx:2681
 TGFrame.cxx:2682
 TGFrame.cxx:2683
 TGFrame.cxx:2684
 TGFrame.cxx:2685
 TGFrame.cxx:2686
 TGFrame.cxx:2687
 TGFrame.cxx:2688
 TGFrame.cxx:2689
 TGFrame.cxx:2690
 TGFrame.cxx:2691
 TGFrame.cxx:2692
 TGFrame.cxx:2693
 TGFrame.cxx:2694
 TGFrame.cxx:2695
 TGFrame.cxx:2696
 TGFrame.cxx:2697
 TGFrame.cxx:2698
 TGFrame.cxx:2699
 TGFrame.cxx:2700
 TGFrame.cxx:2701
 TGFrame.cxx:2702
 TGFrame.cxx:2703
 TGFrame.cxx:2704
 TGFrame.cxx:2705
 TGFrame.cxx:2706
 TGFrame.cxx:2707
 TGFrame.cxx:2708
 TGFrame.cxx:2709
 TGFrame.cxx:2710
 TGFrame.cxx:2711
 TGFrame.cxx:2712
 TGFrame.cxx:2713
 TGFrame.cxx:2714
 TGFrame.cxx:2715
 TGFrame.cxx:2716
 TGFrame.cxx:2717
 TGFrame.cxx:2718
 TGFrame.cxx:2719
 TGFrame.cxx:2720
 TGFrame.cxx:2721
 TGFrame.cxx:2722
 TGFrame.cxx:2723
 TGFrame.cxx:2724
 TGFrame.cxx:2725
 TGFrame.cxx:2726
 TGFrame.cxx:2727
 TGFrame.cxx:2728
 TGFrame.cxx:2729
 TGFrame.cxx:2730
 TGFrame.cxx:2731
 TGFrame.cxx:2732
 TGFrame.cxx:2733
 TGFrame.cxx:2734
 TGFrame.cxx:2735
 TGFrame.cxx:2736
 TGFrame.cxx:2737
 TGFrame.cxx:2738
 TGFrame.cxx:2739
 TGFrame.cxx:2740
 TGFrame.cxx:2741
 TGFrame.cxx:2742
 TGFrame.cxx:2743
 TGFrame.cxx:2744
 TGFrame.cxx:2745
 TGFrame.cxx:2746
 TGFrame.cxx:2747
 TGFrame.cxx:2748
 TGFrame.cxx:2749
 TGFrame.cxx:2750
 TGFrame.cxx:2751
 TGFrame.cxx:2752
 TGFrame.cxx:2753
 TGFrame.cxx:2754
 TGFrame.cxx:2755
 TGFrame.cxx:2756
 TGFrame.cxx:2757
 TGFrame.cxx:2758
 TGFrame.cxx:2759
 TGFrame.cxx:2760
 TGFrame.cxx:2761
 TGFrame.cxx:2762
 TGFrame.cxx:2763
 TGFrame.cxx:2764
 TGFrame.cxx:2765
 TGFrame.cxx:2766
 TGFrame.cxx:2767
 TGFrame.cxx:2768
 TGFrame.cxx:2769
 TGFrame.cxx:2770
 TGFrame.cxx:2771
 TGFrame.cxx:2772
 TGFrame.cxx:2773
 TGFrame.cxx:2774
 TGFrame.cxx:2775
 TGFrame.cxx:2776
 TGFrame.cxx:2777
 TGFrame.cxx:2778
 TGFrame.cxx:2779
 TGFrame.cxx:2780
 TGFrame.cxx:2781
 TGFrame.cxx:2782
 TGFrame.cxx:2783
 TGFrame.cxx:2784
 TGFrame.cxx:2785
 TGFrame.cxx:2786
 TGFrame.cxx:2787
 TGFrame.cxx:2788
 TGFrame.cxx:2789
 TGFrame.cxx:2790
 TGFrame.cxx:2791
 TGFrame.cxx:2792
 TGFrame.cxx:2793
 TGFrame.cxx:2794
 TGFrame.cxx:2795
 TGFrame.cxx:2796
 TGFrame.cxx:2797
 TGFrame.cxx:2798
 TGFrame.cxx:2799
 TGFrame.cxx:2800
 TGFrame.cxx:2801
 TGFrame.cxx:2802
 TGFrame.cxx:2803
 TGFrame.cxx:2804
 TGFrame.cxx:2805
 TGFrame.cxx:2806
 TGFrame.cxx:2807
 TGFrame.cxx:2808
 TGFrame.cxx:2809
 TGFrame.cxx:2810
 TGFrame.cxx:2811
 TGFrame.cxx:2812
 TGFrame.cxx:2813
 TGFrame.cxx:2814
 TGFrame.cxx:2815
 TGFrame.cxx:2816
 TGFrame.cxx:2817
 TGFrame.cxx:2818
 TGFrame.cxx:2819
 TGFrame.cxx:2820
 TGFrame.cxx:2821
 TGFrame.cxx:2822
 TGFrame.cxx:2823
 TGFrame.cxx:2824
 TGFrame.cxx:2825
 TGFrame.cxx:2826
 TGFrame.cxx:2827
 TGFrame.cxx:2828
 TGFrame.cxx:2829
 TGFrame.cxx:2830
 TGFrame.cxx:2831
 TGFrame.cxx:2832
 TGFrame.cxx:2833
 TGFrame.cxx:2834
 TGFrame.cxx:2835
 TGFrame.cxx:2836
 TGFrame.cxx:2837
 TGFrame.cxx:2838
 TGFrame.cxx:2839
 TGFrame.cxx:2840
 TGFrame.cxx:2841
 TGFrame.cxx:2842
 TGFrame.cxx:2843
 TGFrame.cxx:2844
 TGFrame.cxx:2845
 TGFrame.cxx:2846
 TGFrame.cxx:2847
 TGFrame.cxx:2848
 TGFrame.cxx:2849
 TGFrame.cxx:2850
 TGFrame.cxx:2851
 TGFrame.cxx:2852
 TGFrame.cxx:2853
 TGFrame.cxx:2854
 TGFrame.cxx:2855
 TGFrame.cxx:2856
 TGFrame.cxx:2857
 TGFrame.cxx:2858
 TGFrame.cxx:2859
 TGFrame.cxx:2860
 TGFrame.cxx:2861
 TGFrame.cxx:2862
 TGFrame.cxx:2863
 TGFrame.cxx:2864
 TGFrame.cxx:2865
 TGFrame.cxx:2866
 TGFrame.cxx:2867
 TGFrame.cxx:2868
 TGFrame.cxx:2869
 TGFrame.cxx:2870
 TGFrame.cxx:2871
 TGFrame.cxx:2872
 TGFrame.cxx:2873
 TGFrame.cxx:2874
 TGFrame.cxx:2875
 TGFrame.cxx:2876
 TGFrame.cxx:2877
 TGFrame.cxx:2878
 TGFrame.cxx:2879
 TGFrame.cxx:2880
 TGFrame.cxx:2881
 TGFrame.cxx:2882
 TGFrame.cxx:2883
 TGFrame.cxx:2884
 TGFrame.cxx:2885
 TGFrame.cxx:2886
 TGFrame.cxx:2887
 TGFrame.cxx:2888
 TGFrame.cxx:2889
 TGFrame.cxx:2890
 TGFrame.cxx:2891
 TGFrame.cxx:2892
 TGFrame.cxx:2893
 TGFrame.cxx:2894
 TGFrame.cxx:2895
 TGFrame.cxx:2896
 TGFrame.cxx:2897
 TGFrame.cxx:2898
 TGFrame.cxx:2899
 TGFrame.cxx:2900
 TGFrame.cxx:2901
 TGFrame.cxx:2902
 TGFrame.cxx:2903
 TGFrame.cxx:2904
 TGFrame.cxx:2905
 TGFrame.cxx:2906
 TGFrame.cxx:2907
 TGFrame.cxx:2908
 TGFrame.cxx:2909
 TGFrame.cxx:2910
 TGFrame.cxx:2911
 TGFrame.cxx:2912
 TGFrame.cxx:2913
 TGFrame.cxx:2914
 TGFrame.cxx:2915
 TGFrame.cxx:2916
 TGFrame.cxx:2917
 TGFrame.cxx:2918
 TGFrame.cxx:2919
 TGFrame.cxx:2920
 TGFrame.cxx:2921
 TGFrame.cxx:2922
 TGFrame.cxx:2923
 TGFrame.cxx:2924
 TGFrame.cxx:2925
 TGFrame.cxx:2926
 TGFrame.cxx:2927
 TGFrame.cxx:2928
 TGFrame.cxx:2929
 TGFrame.cxx:2930
 TGFrame.cxx:2931
 TGFrame.cxx:2932
 TGFrame.cxx:2933
 TGFrame.cxx:2934
 TGFrame.cxx:2935
 TGFrame.cxx:2936
 TGFrame.cxx:2937
 TGFrame.cxx:2938
 TGFrame.cxx:2939
 TGFrame.cxx:2940
 TGFrame.cxx:2941
 TGFrame.cxx:2942
 TGFrame.cxx:2943
 TGFrame.cxx:2944
 TGFrame.cxx:2945
 TGFrame.cxx:2946
 TGFrame.cxx:2947
 TGFrame.cxx:2948
 TGFrame.cxx:2949
 TGFrame.cxx:2950
 TGFrame.cxx:2951
 TGFrame.cxx:2952
 TGFrame.cxx:2953
 TGFrame.cxx:2954
 TGFrame.cxx:2955
 TGFrame.cxx:2956
 TGFrame.cxx:2957
 TGFrame.cxx:2958
 TGFrame.cxx:2959
 TGFrame.cxx:2960
 TGFrame.cxx:2961
 TGFrame.cxx:2962
 TGFrame.cxx:2963
 TGFrame.cxx:2964
 TGFrame.cxx:2965
 TGFrame.cxx:2966
 TGFrame.cxx:2967
 TGFrame.cxx:2968
 TGFrame.cxx:2969
 TGFrame.cxx:2970
 TGFrame.cxx:2971
 TGFrame.cxx:2972
 TGFrame.cxx:2973
 TGFrame.cxx:2974
 TGFrame.cxx:2975
 TGFrame.cxx:2976
 TGFrame.cxx:2977
 TGFrame.cxx:2978
 TGFrame.cxx:2979
 TGFrame.cxx:2980
 TGFrame.cxx:2981
 TGFrame.cxx:2982
 TGFrame.cxx:2983
 TGFrame.cxx:2984
 TGFrame.cxx:2985
 TGFrame.cxx:2986
 TGFrame.cxx:2987
 TGFrame.cxx:2988
 TGFrame.cxx:2989
 TGFrame.cxx:2990
 TGFrame.cxx:2991
 TGFrame.cxx:2992
 TGFrame.cxx:2993
 TGFrame.cxx:2994
 TGFrame.cxx:2995
 TGFrame.cxx:2996
 TGFrame.cxx:2997
 TGFrame.cxx:2998
 TGFrame.cxx:2999
 TGFrame.cxx:3000
 TGFrame.cxx:3001
 TGFrame.cxx:3002
 TGFrame.cxx:3003
 TGFrame.cxx:3004
 TGFrame.cxx:3005
 TGFrame.cxx:3006
 TGFrame.cxx:3007
 TGFrame.cxx:3008
 TGFrame.cxx:3009
 TGFrame.cxx:3010
 TGFrame.cxx:3011
 TGFrame.cxx:3012
 TGFrame.cxx:3013
 TGFrame.cxx:3014
 TGFrame.cxx:3015
 TGFrame.cxx:3016
 TGFrame.cxx:3017
 TGFrame.cxx:3018
 TGFrame.cxx:3019
 TGFrame.cxx:3020
 TGFrame.cxx:3021
 TGFrame.cxx:3022
 TGFrame.cxx:3023
 TGFrame.cxx:3024
 TGFrame.cxx:3025
 TGFrame.cxx:3026
 TGFrame.cxx:3027
 TGFrame.cxx:3028
 TGFrame.cxx:3029
 TGFrame.cxx:3030
 TGFrame.cxx:3031
 TGFrame.cxx:3032
 TGFrame.cxx:3033
 TGFrame.cxx:3034
 TGFrame.cxx:3035
 TGFrame.cxx:3036
 TGFrame.cxx:3037
 TGFrame.cxx:3038
 TGFrame.cxx:3039
 TGFrame.cxx:3040
 TGFrame.cxx:3041
 TGFrame.cxx:3042
 TGFrame.cxx:3043
 TGFrame.cxx:3044
 TGFrame.cxx:3045
 TGFrame.cxx:3046
 TGFrame.cxx:3047
 TGFrame.cxx:3048
 TGFrame.cxx:3049
 TGFrame.cxx:3050
 TGFrame.cxx:3051
 TGFrame.cxx:3052
 TGFrame.cxx:3053
 TGFrame.cxx:3054
 TGFrame.cxx:3055
 TGFrame.cxx:3056
 TGFrame.cxx:3057
 TGFrame.cxx:3058
 TGFrame.cxx:3059
 TGFrame.cxx:3060
 TGFrame.cxx:3061
 TGFrame.cxx:3062
 TGFrame.cxx:3063
 TGFrame.cxx:3064
 TGFrame.cxx:3065
 TGFrame.cxx:3066
 TGFrame.cxx:3067
 TGFrame.cxx:3068
 TGFrame.cxx:3069
 TGFrame.cxx:3070
 TGFrame.cxx:3071
 TGFrame.cxx:3072
 TGFrame.cxx:3073
 TGFrame.cxx:3074
 TGFrame.cxx:3075
 TGFrame.cxx:3076
 TGFrame.cxx:3077
 TGFrame.cxx:3078
 TGFrame.cxx:3079
 TGFrame.cxx:3080
 TGFrame.cxx:3081
 TGFrame.cxx:3082
 TGFrame.cxx:3083
 TGFrame.cxx:3084
 TGFrame.cxx:3085
 TGFrame.cxx:3086
 TGFrame.cxx:3087
 TGFrame.cxx:3088
 TGFrame.cxx:3089
 TGFrame.cxx:3090
 TGFrame.cxx:3091
 TGFrame.cxx:3092
 TGFrame.cxx:3093
 TGFrame.cxx:3094
 TGFrame.cxx:3095
 TGFrame.cxx:3096
 TGFrame.cxx:3097
 TGFrame.cxx:3098
 TGFrame.cxx:3099
 TGFrame.cxx:3100
 TGFrame.cxx:3101
 TGFrame.cxx:3102
 TGFrame.cxx:3103
 TGFrame.cxx:3104
 TGFrame.cxx:3105
 TGFrame.cxx:3106
 TGFrame.cxx:3107
 TGFrame.cxx:3108
 TGFrame.cxx:3109
 TGFrame.cxx:3110
 TGFrame.cxx:3111
 TGFrame.cxx:3112
 TGFrame.cxx:3113
 TGFrame.cxx:3114
 TGFrame.cxx:3115
 TGFrame.cxx:3116
 TGFrame.cxx:3117
 TGFrame.cxx:3118
 TGFrame.cxx:3119
 TGFrame.cxx:3120
 TGFrame.cxx:3121
 TGFrame.cxx:3122
 TGFrame.cxx:3123
 TGFrame.cxx:3124
 TGFrame.cxx:3125
 TGFrame.cxx:3126
 TGFrame.cxx:3127
 TGFrame.cxx:3128
 TGFrame.cxx:3129
 TGFrame.cxx:3130
 TGFrame.cxx:3131
 TGFrame.cxx:3132
 TGFrame.cxx:3133
 TGFrame.cxx:3134
 TGFrame.cxx:3135
 TGFrame.cxx:3136
 TGFrame.cxx:3137
 TGFrame.cxx:3138
 TGFrame.cxx:3139
 TGFrame.cxx:3140
 TGFrame.cxx:3141
 TGFrame.cxx:3142
 TGFrame.cxx:3143
 TGFrame.cxx:3144
 TGFrame.cxx:3145
 TGFrame.cxx:3146
 TGFrame.cxx:3147
 TGFrame.cxx:3148
 TGFrame.cxx:3149
 TGFrame.cxx:3150
 TGFrame.cxx:3151
 TGFrame.cxx:3152
 TGFrame.cxx:3153
 TGFrame.cxx:3154
 TGFrame.cxx:3155
 TGFrame.cxx:3156
 TGFrame.cxx:3157
 TGFrame.cxx:3158
 TGFrame.cxx:3159
 TGFrame.cxx:3160
 TGFrame.cxx:3161
 TGFrame.cxx:3162
 TGFrame.cxx:3163
 TGFrame.cxx:3164
 TGFrame.cxx:3165
 TGFrame.cxx:3166
 TGFrame.cxx:3167
 TGFrame.cxx:3168
 TGFrame.cxx:3169
 TGFrame.cxx:3170
 TGFrame.cxx:3171
 TGFrame.cxx:3172
 TGFrame.cxx:3173
 TGFrame.cxx:3174
 TGFrame.cxx:3175
 TGFrame.cxx:3176
 TGFrame.cxx:3177
 TGFrame.cxx:3178
 TGFrame.cxx:3179
 TGFrame.cxx:3180
 TGFrame.cxx:3181
 TGFrame.cxx:3182
 TGFrame.cxx:3183
 TGFrame.cxx:3184
 TGFrame.cxx:3185
 TGFrame.cxx:3186
 TGFrame.cxx:3187
 TGFrame.cxx:3188
 TGFrame.cxx:3189
 TGFrame.cxx:3190
 TGFrame.cxx:3191
 TGFrame.cxx:3192
 TGFrame.cxx:3193
 TGFrame.cxx:3194
 TGFrame.cxx:3195
 TGFrame.cxx:3196
 TGFrame.cxx:3197
 TGFrame.cxx:3198
 TGFrame.cxx:3199
 TGFrame.cxx:3200
 TGFrame.cxx:3201
 TGFrame.cxx:3202
 TGFrame.cxx:3203
 TGFrame.cxx:3204
 TGFrame.cxx:3205
 TGFrame.cxx:3206
 TGFrame.cxx:3207
 TGFrame.cxx:3208
 TGFrame.cxx:3209
 TGFrame.cxx:3210
 TGFrame.cxx:3211
 TGFrame.cxx:3212
 TGFrame.cxx:3213
 TGFrame.cxx:3214
 TGFrame.cxx:3215
 TGFrame.cxx:3216
 TGFrame.cxx:3217
 TGFrame.cxx:3218
 TGFrame.cxx:3219
 TGFrame.cxx:3220
 TGFrame.cxx:3221
 TGFrame.cxx:3222
 TGFrame.cxx:3223
 TGFrame.cxx:3224
 TGFrame.cxx:3225
 TGFrame.cxx:3226
 TGFrame.cxx:3227
 TGFrame.cxx:3228
 TGFrame.cxx:3229
 TGFrame.cxx:3230
 TGFrame.cxx:3231
 TGFrame.cxx:3232
 TGFrame.cxx:3233
 TGFrame.cxx:3234
 TGFrame.cxx:3235
 TGFrame.cxx:3236
 TGFrame.cxx:3237
 TGFrame.cxx:3238
 TGFrame.cxx:3239
 TGFrame.cxx:3240
 TGFrame.cxx:3241
 TGFrame.cxx:3242
 TGFrame.cxx:3243
 TGFrame.cxx:3244
 TGFrame.cxx:3245
 TGFrame.cxx:3246
 TGFrame.cxx:3247
 TGFrame.cxx:3248
 TGFrame.cxx:3249
 TGFrame.cxx:3250
 TGFrame.cxx:3251
 TGFrame.cxx:3252
 TGFrame.cxx:3253
 TGFrame.cxx:3254
 TGFrame.cxx:3255
 TGFrame.cxx:3256
 TGFrame.cxx:3257
 TGFrame.cxx:3258
 TGFrame.cxx:3259
 TGFrame.cxx:3260
 TGFrame.cxx:3261
 TGFrame.cxx:3262
 TGFrame.cxx:3263
 TGFrame.cxx:3264
 TGFrame.cxx:3265
 TGFrame.cxx:3266
 TGFrame.cxx:3267
 TGFrame.cxx:3268
 TGFrame.cxx:3269
 TGFrame.cxx:3270
 TGFrame.cxx:3271
 TGFrame.cxx:3272
 TGFrame.cxx:3273
 TGFrame.cxx:3274
 TGFrame.cxx:3275
 TGFrame.cxx:3276
 TGFrame.cxx:3277
 TGFrame.cxx:3278
 TGFrame.cxx:3279
 TGFrame.cxx:3280
 TGFrame.cxx:3281
 TGFrame.cxx:3282
 TGFrame.cxx:3283
 TGFrame.cxx:3284
 TGFrame.cxx:3285
 TGFrame.cxx:3286
 TGFrame.cxx:3287
 TGFrame.cxx:3288
 TGFrame.cxx:3289
 TGFrame.cxx:3290
 TGFrame.cxx:3291
 TGFrame.cxx:3292
 TGFrame.cxx:3293
 TGFrame.cxx:3294
 TGFrame.cxx:3295
 TGFrame.cxx:3296
 TGFrame.cxx:3297
 TGFrame.cxx:3298
 TGFrame.cxx:3299
 TGFrame.cxx:3300
 TGFrame.cxx:3301
 TGFrame.cxx:3302
 TGFrame.cxx:3303
 TGFrame.cxx:3304
 TGFrame.cxx:3305
 TGFrame.cxx:3306
 TGFrame.cxx:3307
 TGFrame.cxx:3308
 TGFrame.cxx:3309
 TGFrame.cxx:3310
 TGFrame.cxx:3311
 TGFrame.cxx:3312
 TGFrame.cxx:3313
 TGFrame.cxx:3314
 TGFrame.cxx:3315
 TGFrame.cxx:3316
 TGFrame.cxx:3317
 TGFrame.cxx:3318
 TGFrame.cxx:3319
 TGFrame.cxx:3320
 TGFrame.cxx:3321
 TGFrame.cxx:3322
 TGFrame.cxx:3323
 TGFrame.cxx:3324
 TGFrame.cxx:3325
 TGFrame.cxx:3326
 TGFrame.cxx:3327
 TGFrame.cxx:3328
 TGFrame.cxx:3329
 TGFrame.cxx:3330
 TGFrame.cxx:3331
 TGFrame.cxx:3332
 TGFrame.cxx:3333
 TGFrame.cxx:3334
 TGFrame.cxx:3335
 TGFrame.cxx:3336
 TGFrame.cxx:3337
 TGFrame.cxx:3338
 TGFrame.cxx:3339
 TGFrame.cxx:3340
 TGFrame.cxx:3341
 TGFrame.cxx:3342
 TGFrame.cxx:3343
 TGFrame.cxx:3344
 TGFrame.cxx:3345
 TGFrame.cxx:3346
 TGFrame.cxx:3347
 TGFrame.cxx:3348
 TGFrame.cxx:3349
 TGFrame.cxx:3350
 TGFrame.cxx:3351
 TGFrame.cxx:3352
 TGFrame.cxx:3353
 TGFrame.cxx:3354
 TGFrame.cxx:3355
 TGFrame.cxx:3356
 TGFrame.cxx:3357
 TGFrame.cxx:3358
 TGFrame.cxx:3359
 TGFrame.cxx:3360
 TGFrame.cxx:3361
 TGFrame.cxx:3362
 TGFrame.cxx:3363
 TGFrame.cxx:3364
 TGFrame.cxx:3365
 TGFrame.cxx:3366
 TGFrame.cxx:3367
 TGFrame.cxx:3368
 TGFrame.cxx:3369
 TGFrame.cxx:3370
 TGFrame.cxx:3371
 TGFrame.cxx:3372
 TGFrame.cxx:3373
 TGFrame.cxx:3374
 TGFrame.cxx:3375
 TGFrame.cxx:3376
 TGFrame.cxx:3377
 TGFrame.cxx:3378
 TGFrame.cxx:3379
 TGFrame.cxx:3380
 TGFrame.cxx:3381
 TGFrame.cxx:3382
 TGFrame.cxx:3383
 TGFrame.cxx:3384
 TGFrame.cxx:3385
 TGFrame.cxx:3386
 TGFrame.cxx:3387
 TGFrame.cxx:3388
 TGFrame.cxx:3389
 TGFrame.cxx:3390
 TGFrame.cxx:3391
 TGFrame.cxx:3392
 TGFrame.cxx:3393
 TGFrame.cxx:3394
 TGFrame.cxx:3395
 TGFrame.cxx:3396
 TGFrame.cxx:3397
 TGFrame.cxx:3398
 TGFrame.cxx:3399
 TGFrame.cxx:3400
 TGFrame.cxx:3401
 TGFrame.cxx:3402
 TGFrame.cxx:3403
 TGFrame.cxx:3404
 TGFrame.cxx:3405
 TGFrame.cxx:3406
 TGFrame.cxx:3407
 TGFrame.cxx:3408
 TGFrame.cxx:3409
 TGFrame.cxx:3410
 TGFrame.cxx:3411
 TGFrame.cxx:3412
 TGFrame.cxx:3413
 TGFrame.cxx:3414
 TGFrame.cxx:3415
 TGFrame.cxx:3416
 TGFrame.cxx:3417
 TGFrame.cxx:3418
 TGFrame.cxx:3419
 TGFrame.cxx:3420
 TGFrame.cxx:3421
 TGFrame.cxx:3422
 TGFrame.cxx:3423
 TGFrame.cxx:3424
 TGFrame.cxx:3425
 TGFrame.cxx:3426
 TGFrame.cxx:3427
 TGFrame.cxx:3428
 TGFrame.cxx:3429
 TGFrame.cxx:3430
 TGFrame.cxx:3431
 TGFrame.cxx:3432
 TGFrame.cxx:3433
 TGFrame.cxx:3434
 TGFrame.cxx:3435
 TGFrame.cxx:3436
 TGFrame.cxx:3437
 TGFrame.cxx:3438
 TGFrame.cxx:3439
 TGFrame.cxx:3440
 TGFrame.cxx:3441
 TGFrame.cxx:3442
 TGFrame.cxx:3443
 TGFrame.cxx:3444
 TGFrame.cxx:3445
 TGFrame.cxx:3446
 TGFrame.cxx:3447
 TGFrame.cxx:3448
 TGFrame.cxx:3449
 TGFrame.cxx:3450
 TGFrame.cxx:3451
 TGFrame.cxx:3452
 TGFrame.cxx:3453
 TGFrame.cxx:3454
 TGFrame.cxx:3455
 TGFrame.cxx:3456
 TGFrame.cxx:3457
 TGFrame.cxx:3458
 TGFrame.cxx:3459
 TGFrame.cxx:3460
 TGFrame.cxx:3461
 TGFrame.cxx:3462
 TGFrame.cxx:3463
 TGFrame.cxx:3464
 TGFrame.cxx:3465
 TGFrame.cxx:3466
 TGFrame.cxx:3467
 TGFrame.cxx:3468
 TGFrame.cxx:3469
 TGFrame.cxx:3470
 TGFrame.cxx:3471
 TGFrame.cxx:3472
 TGFrame.cxx:3473
 TGFrame.cxx:3474
 TGFrame.cxx:3475
 TGFrame.cxx:3476
 TGFrame.cxx:3477
 TGFrame.cxx:3478
 TGFrame.cxx:3479
 TGFrame.cxx:3480
 TGFrame.cxx:3481
 TGFrame.cxx:3482
 TGFrame.cxx:3483
 TGFrame.cxx:3484
 TGFrame.cxx:3485
 TGFrame.cxx:3486
 TGFrame.cxx:3487
 TGFrame.cxx:3488
 TGFrame.cxx:3489
 TGFrame.cxx:3490
 TGFrame.cxx:3491
 TGFrame.cxx:3492
 TGFrame.cxx:3493
 TGFrame.cxx:3494
 TGFrame.cxx:3495
 TGFrame.cxx:3496
 TGFrame.cxx:3497
 TGFrame.cxx:3498
 TGFrame.cxx:3499
 TGFrame.cxx:3500
 TGFrame.cxx:3501
 TGFrame.cxx:3502
 TGFrame.cxx:3503
 TGFrame.cxx:3504
 TGFrame.cxx:3505
 TGFrame.cxx:3506
 TGFrame.cxx:3507
 TGFrame.cxx:3508
 TGFrame.cxx:3509
 TGFrame.cxx:3510
 TGFrame.cxx:3511
 TGFrame.cxx:3512
 TGFrame.cxx:3513
 TGFrame.cxx:3514
 TGFrame.cxx:3515
 TGFrame.cxx:3516
 TGFrame.cxx:3517
 TGFrame.cxx:3518
 TGFrame.cxx:3519
 TGFrame.cxx:3520
 TGFrame.cxx:3521
 TGFrame.cxx:3522
 TGFrame.cxx:3523
 TGFrame.cxx:3524
 TGFrame.cxx:3525
 TGFrame.cxx:3526
 TGFrame.cxx:3527
 TGFrame.cxx:3528
 TGFrame.cxx:3529
 TGFrame.cxx:3530
 TGFrame.cxx:3531
 TGFrame.cxx:3532
 TGFrame.cxx:3533
 TGFrame.cxx:3534
 TGFrame.cxx:3535
 TGFrame.cxx:3536
 TGFrame.cxx:3537
 TGFrame.cxx:3538
 TGFrame.cxx:3539
 TGFrame.cxx:3540
 TGFrame.cxx:3541
 TGFrame.cxx:3542
 TGFrame.cxx:3543
 TGFrame.cxx:3544
 TGFrame.cxx:3545
 TGFrame.cxx:3546
 TGFrame.cxx:3547
 TGFrame.cxx:3548
 TGFrame.cxx:3549
 TGFrame.cxx:3550
 TGFrame.cxx:3551
 TGFrame.cxx:3552
 TGFrame.cxx:3553
 TGFrame.cxx:3554
 TGFrame.cxx:3555
 TGFrame.cxx:3556
 TGFrame.cxx:3557
 TGFrame.cxx:3558
 TGFrame.cxx:3559
 TGFrame.cxx:3560
 TGFrame.cxx:3561
 TGFrame.cxx:3562
 TGFrame.cxx:3563
 TGFrame.cxx:3564
 TGFrame.cxx:3565
 TGFrame.cxx:3566
 TGFrame.cxx:3567
 TGFrame.cxx:3568
 TGFrame.cxx:3569
 TGFrame.cxx:3570
 TGFrame.cxx:3571
 TGFrame.cxx:3572
 TGFrame.cxx:3573
 TGFrame.cxx:3574
 TGFrame.cxx:3575
 TGFrame.cxx:3576
 TGFrame.cxx:3577
 TGFrame.cxx:3578
 TGFrame.cxx:3579
 TGFrame.cxx:3580
 TGFrame.cxx:3581
 TGFrame.cxx:3582
 TGFrame.cxx:3583
 TGFrame.cxx:3584
 TGFrame.cxx:3585
 TGFrame.cxx:3586
 TGFrame.cxx:3587