ROOT logo
// @(#)root/gui:$Id: TGMdiDecorFrame.cxx 23115 2008-04-10 13:35:37Z rdm $
// Author: Bertrand Bellenot   20/08/2004

/*************************************************************************
 * Copyright (C) 1995-2004, 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 file is part of TGMdi an extension to the xclass toolkit.
    Copyright (C) 1998-2002 by Harald Radke, Hector Peraza.

    This application 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.

    This application is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGMdiDecorFrame, TGMdiTitleBar, TGMdiButtons, TGMdiTitleIcon,        //
// TGMdiWinResizer, TGMdiVerticalWinResizer, TGMdiHorizontalWinResizer, //
// and TGMdiCornerWinResizer.                                           //
//                                                                      //
// This file contains all different MDI frame decoration classes.       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>

#include "TROOT.h"
#include "KeySymbols.h"
#include "TGResourcePool.h"
#include "TGDimension.h"
#include "WidgetMessageTypes.h"
#include "TGMdiFrame.h"
#include "TGMdiDecorFrame.h"
#include "TGMdiMainFrame.h"

ClassImp(TGMdiDecorFrame)
ClassImp(TGMdiTitleBar)
ClassImp(TGMdiButtons)
ClassImp(TGMdiTitleIcon)
ClassImp(TGMdiWinResizer)
ClassImp(TGMdiVerticalWinResizer)
ClassImp(TGMdiHorizontalWinResizer)
ClassImp(TGMdiCornerWinResizer)

//______________________________________________________________________________
TGMdiDecorFrame::TGMdiDecorFrame(TGMdiMainFrame *main, TGMdiFrame *frame,
                                 Int_t w, Int_t h, const TGGC *boxGC,
                                 UInt_t options, Pixel_t back) :
  TGCompositeFrame(main->GetContainer(), w, h,
                   options | kOwnBackground | kVerticalFrame | kFixedSize, back)
{
   // TGMdiDecorFrame constructor.
   // The TGMdiDecorFrame is the frame containing MDI decorations like
   // title bar, minimize, maximize, restore and close buttons, and resizers.


   fMdiMainFrame = main;
   fEditDisabled = 1;
   fFrame = frame;
   fIsMinimized = fIsMaximized = kFALSE;
   fMinimizedX = fMinimizedY = 0;
   fMinimizedUserPlacement = kFALSE;
   fButtonMask = kMdiDefaultHints;
   SetCleanup(kDeepCleanup);

   SetDecorBorderWidth(kMdiBorderWidth);

   fTitlebar = new TGMdiTitleBar(this, fMdiMainFrame);

   fLHint = new TGLayoutHints(kLHintsExpandX);
   fExpandHint = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);

   AddFrame(fTitlebar, fLHint);
   fTitlebar->LayoutButtons(fButtonMask, kFALSE, kFALSE);

   fUpperHR = new TGMdiVerticalWinResizer(this, main, kMdiResizerTop,
                                         boxGC, kMdiBorderWidth);
   fLowerHR = new TGMdiVerticalWinResizer(this, main, kMdiResizerBottom,
                                         boxGC, kMdiBorderWidth);
   fLeftVR = new TGMdiHorizontalWinResizer(this, main, kMdiResizerLeft,
                                          boxGC, kMdiBorderWidth);
   fRightVR = new TGMdiHorizontalWinResizer(this, main, kMdiResizerRight,
                                           boxGC, kMdiBorderWidth);

   fUpperLeftCR = new TGMdiCornerWinResizer(this, main,
                                kMdiResizerTop | kMdiResizerLeft,
                                boxGC, kMdiBorderWidth);
   fLowerLeftCR = new TGMdiCornerWinResizer(this, main,
                                kMdiResizerBottom | kMdiResizerLeft,
                                boxGC, kMdiBorderWidth);
   fUpperRightCR = new TGMdiCornerWinResizer(this, main,
                                 kMdiResizerTop | kMdiResizerRight,
                                 boxGC, kMdiBorderWidth);
   fLowerRightCR = new TGMdiCornerWinResizer(this, main,
                                 kMdiResizerBottom | kMdiResizerRight,
                                 boxGC, kMdiBorderWidth);

   fUpperHR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);
   fLowerHR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);
   fLeftVR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);
   fRightVR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);
   fUpperLeftCR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);
   fLowerLeftCR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);
   fUpperRightCR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);
   fLowerRightCR->SetMinSize(50, fTitlebar->GetDefaultHeight() + 2 * fBorderWidth);

   AddInput(kStructureNotifyMask | kButtonPressMask);

   fFrame->ReparentWindow(this, fBorderWidth, fTitlebar->GetDefaultHeight());
   fFrame->fParent = this;
   AddFrame(fFrame, fExpandHint);

   MapSubwindows();
   Resize(GetDefaultSize());
   Layout();

   MapWindow();
   TGFrame::SetWindowName();

   fFrame->RaiseWindow();
   fTitlebar->RaiseWindow();
}

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

   if (!MustCleanup()) {
      delete fUpperHR;
      delete fLowerHR;
      delete fLeftVR;
      delete fRightVR;
      delete fUpperLeftCR;
      delete fLowerLeftCR;
      delete fUpperRightCR;
      delete fLowerRightCR;
   }
   DestroyWindow();
}

//______________________________________________________________________________
void TGMdiDecorFrame::SetDecorBorderWidth(Int_t bw)
{
   // Set border width of the decor.

   fBorderWidth = bw;
}

//______________________________________________________________________________
void TGMdiDecorFrame::SetMdiButtons(ULong_t buttons)
{
   // Set-up MDI buttons.

   fButtonMask = buttons;
   fTitlebar->LayoutButtons(fButtonMask, fIsMinimized, fIsMaximized);
   if (fButtonMask & kMdiSize) {
      fUpperHR->Activate(kTRUE);
      fLowerHR->Activate(kTRUE);
      fLeftVR->Activate(kTRUE);
      fRightVR->Activate(kTRUE);
      fUpperLeftCR->Activate(kTRUE);
      fLowerLeftCR->Activate(kTRUE);
      fUpperRightCR->Activate(kTRUE);
      fLowerRightCR->Activate(kTRUE);
   } else {
      fUpperHR->Activate(kFALSE);
      fLowerHR->Activate(kFALSE);
      fLeftVR->Activate(kFALSE);
      fRightVR->Activate(kFALSE);
      fUpperLeftCR->Activate(kFALSE);
      fLowerLeftCR->Activate(kFALSE);
      fUpperRightCR->Activate(kFALSE);
      fLowerRightCR->Activate(kFALSE);
   }
}

//______________________________________________________________________________
void TGMdiDecorFrame::SetResizeMode(Int_t mode)
{
   // Set resize mode (opaque or transparent)

   fUpperHR->SetResizeMode(mode);
   fLowerHR->SetResizeMode(mode);
   fLeftVR->SetResizeMode(mode);
   fRightVR->SetResizeMode(mode);
   fUpperLeftCR->SetResizeMode(mode);
   fLowerLeftCR->SetResizeMode(mode);
   fUpperRightCR->SetResizeMode(mode);
   fLowerRightCR->SetResizeMode(mode);
}

//______________________________________________________________________________
void TGMdiDecorFrame::Layout()
{
   // Recalculates the postion and the size of all decor frame components.

   RemoveInput(kStructureNotifyMask);
   TGCompositeFrame::Layout();
   AddInput(kStructureNotifyMask);

   if (fIsMaximized == kFALSE) {
      fUpperLeftCR->Move(0, 0);
      fUpperRightCR->Move(fWidth - fUpperRightCR->GetWidth(), 0);
      fLowerLeftCR->Move(0, fHeight - fLowerLeftCR->GetHeight());
      fLowerRightCR->Move(fWidth - fLowerRightCR->GetWidth(),
                          fHeight - fLowerRightCR->GetHeight());

      fLeftVR->MoveResize(0, fUpperLeftCR->GetHeight(), fLeftVR->GetWidth(),
                          fHeight - fUpperLeftCR->GetHeight() -
                          fLowerLeftCR->GetHeight());
      fUpperHR->MoveResize(fUpperLeftCR->GetWidth(), 0,
                           fWidth - fUpperRightCR->GetWidth() -
                           fUpperLeftCR->GetWidth(), fUpperHR->GetHeight());
      fRightVR->MoveResize(fWidth - fRightVR->GetWidth(),
                           fUpperRightCR->GetHeight(), fRightVR->GetWidth(),
                           fHeight - fUpperLeftCR->GetHeight() -
                           fLowerLeftCR->GetHeight());
      fLowerHR->MoveResize(fLowerLeftCR->GetWidth(), fHeight -
                           fLowerHR->GetHeight(),
                           fWidth - fLowerRightCR->GetWidth() -
                           fLowerLeftCR->GetWidth(), fLowerHR->GetHeight());
   }
}

//______________________________________________________________________________
void TGMdiDecorFrame::SetWindowName(const char *name)
{
   // Set MDI Window name (appearing in the title bar)

   fTitlebar->GetWinName()->SetText(new TGString(name));
   fTitlebar->Layout();
}

//______________________________________________________________________________
void TGMdiDecorFrame::SetWindowIcon(const TGPicture *icon)
{
   // Set Window icon (appearing in the title bar)

   fTitlebar->GetWinIcon()->SetPicture(icon);
   fClient->NeedRedraw(fTitlebar->GetWinIcon());
}

//______________________________________________________________________________
void TGMdiDecorFrame::Move(Int_t x, Int_t y)
{
   // Move the MDI window at position x, y.

   if (x < 0) {
      fMdiMainFrame->SetHsbPosition(fMdiMainFrame->GetViewPort()->GetWidth());
   }

   if (y < 0) {
      fMdiMainFrame->SetVsbPosition(fMdiMainFrame->GetViewPort()->GetHeight());
   }
   TGCompositeFrame::Move(x, y);
   if (IsMinimized()) fMinimizedUserPlacement = kTRUE;
}

//______________________________________________________________________________
void TGMdiDecorFrame::MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h)
{
   // Move the MDI window at position x, y and set size to w, h.

   if (x < 0) {
      fMdiMainFrame->SetHsbPosition(fMdiMainFrame->GetViewPort()->GetWidth());
   }

   if (y < 0) {
      fMdiMainFrame->SetVsbPosition(fMdiMainFrame->GetViewPort()->GetHeight());
   }

   TGCompositeFrame::MoveResize(x, y, w, h);
   if (IsMinimized()) fMinimizedUserPlacement = kTRUE;
}

//______________________________________________________________________________
Bool_t TGMdiDecorFrame::HandleConfigureNotify(Event_t *event)
{
   // Handle configure notify event.

   if ((event->fX < 0) || (event->fY < 0) ||
       (event->fX + event->fWidth > fMdiMainFrame->GetViewPort()->GetWidth()) ||
       (event->fY + event->fHeight > fMdiMainFrame->GetViewPort()->GetHeight())) {
      fMdiMainFrame->Resize();
   }

   if (event->fWindow == fFrame->GetId()) {
      UInt_t newW = event->fWidth + 2 * fBorderWidth;
      UInt_t newH = event->fHeight + 2 * fBorderWidth +
                    fTitlebar->GetDefaultHeight();

      if ((fWidth != newW) || (fHeight != newH)) {
         Resize(newW, newH);
      }
      return kTRUE;
   }
   return kFALSE;
}

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

   if (event->fType == kButtonPress) {
      void *ud;
      fTitlebar->GetWinIcon()->GetPopup()->EndMenu(ud);
      SendMessage(fMdiMainFrame, MK_MSG(kC_MDI, kMDI_CURRENT), fId, 0);
   }
   return kTRUE;
}


//______________________________________________________________________________
TGMdiTitleBar::TGMdiTitleBar(const TGWindow *p, const TGWindow *mdiwin,
                             const char *name) :
   TGCompositeFrame(p, 10, 10, kOwnBackground | kHorizontalFrame)
{
   // TGMdiTitleBar constructor.
   // the TGMdiTitleBar is the frame containing a title (window name)
   // an icon and MDI picture buttons as minimize, maximize, restore,
   // close and help.

   fMdiWin = mdiwin;
   fEditDisabled = kTRUE;
   fWinName = 0;
   fMidButPressed = fLeftButPressed = fRightButPressed = kFALSE;

   AddInput(kButtonPressMask | kButtonReleaseMask | kButtonMotionMask);

   fLHint = new TGLayoutHints(kLHintsNormal);
   fLeftHint = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 1, 1, 1);
   //fMiddleHint = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 1, 1, 1);
   fMiddleHint = new TGLayoutHints(kLHintsLeft | kLHintsCenterY | kLHintsExpandX, 1, 1, 1, 1);
   fRightHint = new TGLayoutHints(kLHintsRight | kLHintsCenterY, 1, 2, 1, 1);

   fLFrame = new TGCompositeFrame(this, 10, 10, kHorizontalFrame);
   fMFrame = new TGCompositeFrame(this, 10, 10, kHorizontalFrame);
   fRFrame = new TGCompositeFrame(this, 10, 10, kHorizontalFrame);
   AddFrame(fLFrame, fLeftHint);
   AddFrame(fMFrame, fMiddleHint);
   AddFrame(fRFrame, fRightHint);

   fWinIcon = new TGMdiTitleIcon(fLFrame, this,
                 fClient->GetPicture("mdi_default.xpm"),
                 16, 16);
   fLFrame->AddFrame(fWinIcon, fLHint);

   fWinName = new TGLabel(fMFrame, new TGString(name));
   fWinName->SetTextJustify(kTextLeft);
   fMFrame->AddFrame(fWinName, fLHint);

   fButtons = new TGMdiButtons(fRFrame, this);
   fRFrame->AddFrame(fButtons, fLHint);

   MapWindow();
   MapSubwindows();
   Layout();
   SetWindowName();
}

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

   if (!MustCleanup()) {
      delete fLHint;
      delete fLeftHint;
      delete fMiddleHint;
      delete fRightHint;
   }
}

//______________________________________________________________________________
void TGMdiTitleBar::LayoutButtons(UInt_t buttonmask,Bool_t isMinimized,
                                  Bool_t isMaximized)
{
   // Recalculates the position of every enabled (displayed) buttons.

   fWinIcon->GetPopup()->EnableEntry(kMdiMove);

   if (buttonmask & kMdiSize) {
      fWinIcon->GetPopup()->EnableEntry(kMdiSize);
   } else {
      fWinIcon->GetPopup()->DisableEntry(kMdiSize);
   }

   if (buttonmask & kMdiMenu) {
      fLFrame->ShowFrame(fWinIcon);
   } else {
      fLFrame->HideFrame(fWinIcon);
   }

   if (buttonmask & kMdiClose) {
      fButtons->ShowFrame(fButtons->GetButton(4));
      fWinIcon->GetPopup()->EnableEntry(kMdiClose);
   } else {
      fButtons->HideFrame(fButtons->GetButton(4));
      fWinIcon->GetPopup()->DisableEntry(kMdiClose);
   }

   if (buttonmask & kMdiHelp) {
      fButtons->ShowFrame(fButtons->GetButton(3));
   } else {
      fButtons->HideFrame(fButtons->GetButton(3));
   }

   if ((buttonmask & kMdiMaximize) && (!isMaximized)) {
      fButtons->ShowFrame(fButtons->GetButton(2));
      fWinIcon->GetPopup()->EnableEntry(kMdiMaximize);
   } else {
      fButtons->HideFrame(fButtons->GetButton(2));
      fWinIcon->GetPopup()->DisableEntry(kMdiMaximize);
   }

   if (isMinimized | isMaximized) {
      fButtons->ShowFrame(fButtons->GetButton(1));
      fWinIcon->GetPopup()->EnableEntry(kMdiRestore);
      fWinIcon->GetPopup()->DisableEntry(kMdiSize);
      if (isMaximized) fWinIcon->GetPopup()->DisableEntry(kMdiMove);
   } else {
      fButtons->HideFrame(fButtons->GetButton(1));
      fWinIcon->GetPopup()->DisableEntry(kMdiRestore);
   }

   if ((buttonmask & kMdiMinimize) && (!isMinimized)) {
      fButtons->ShowFrame(fButtons->GetButton(0));
      fWinIcon->GetPopup()->EnableEntry(kMdiMinimize);
   } else {
      fButtons->HideFrame(fButtons->GetButton(0));
      fWinIcon->GetPopup()->DisableEntry(kMdiMinimize);
   }

   Layout();
}

//______________________________________________________________________________
void TGMdiTitleBar::SetTitleBarColors(UInt_t fore, UInt_t back, TGFont *font)
{
   // Set title bar color (blue or grey, depends on active state).

   SetBackgroundColor(back);

   fClient->GetFont(font->GetName());
   fWinName->SetTextFont(font);
   fWinName->SetTextColor(fore, kFALSE);
   fMFrame->SetBackgroundColor(back);
   fWinName->SetBackgroundColor(back);
   fWinIcon->SetBackgroundColor(back);
   fButtons->SetBackgroundColor(back);
   Layout();
   fClient->NeedRedraw(this);
   fClient->NeedRedraw(fWinName);
   fClient->NeedRedraw(fMFrame);
   fClient->NeedRedraw(fButtons);
   fClient->NeedRedraw(fWinIcon);
   fWinIcon->DoRedraw();
}

//______________________________________________________________________________
Bool_t TGMdiTitleBar::HandleDoubleClick(Event_t *event)
{
   // Handle double click in title bar (maximize window)

   if ((event->fType == kButtonPress) && (event->fCode == kButton1)) {
      SendMessage(fMdiWin, MK_MSG(kC_MDI, kMDI_MAXIMIZE), fParent->GetId(), 0);
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGMdiTitleBar::HandleButton(Event_t *event)
{
   // Handle mouse click on title bar.

   if (event->fType == kButtonPress) {
      void *ud;
      GetWinIcon()->GetPopup()->EndMenu(ud);
      gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kMove));
      switch (event->fCode) {
         case kButton1:
            fX0 = event->fX;
            fY0 = event->fY;
            fLeftButPressed = kTRUE;
            SendMessage(fMdiWin, MK_MSG(kC_MDI, kMDI_CURRENT), fParent->GetId(), 0);
            break;

         case kButton2:
            fMidButPressed = kTRUE;
            break;

         case kButton3:
            gVirtualX->LowerWindow(fParent->GetId());
            fRightButPressed = kTRUE;
            break;
      }
   } else {
      gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE);
      gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kPointer));
      switch (event->fCode) {

         case kButton1:
            //if (!fClient->IsEditable()) ((TGMainFrame *)((TGMdiMainFrame *)fMdiWin)->GetMainFrame())->Layout();
            fLeftButPressed = kFALSE;
            break;

         case kButton2:
            fMidButPressed = kFALSE;
            break;

         case kButton3:
            fRightButPressed = kFALSE;
            break;
      }

      TGFrame *f = GetFrameFromPoint(event->fX, event->fY);
      if (f && (f != this)) {
         TranslateCoordinates(f, event->fX, event->fY, event->fX, event->fY);
         f->HandleButton(event);
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGMdiTitleBar::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
   // Process messages for title bar.

   switch (GET_MSG(msg)) {
      case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
            case kCM_BUTTON:
            case kCM_MENU:
               SendMessage(fMdiWin, MK_MSG(kC_MDI, (EWidgetMessageTypes)parm1),
                           fParent->GetId(), parm2);
               break;
         }
         break;
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGMdiTitleBar::HandleMotion(Event_t *event)
{
   // Handle mouse motion events in title bar (used to move MDI window).

   if (event->fWindow != fId) return kTRUE;
   if (!fLeftButPressed) return kTRUE;

   Int_t x = ((TGFrame *)fParent)->GetX();
   Int_t y = ((TGFrame *)fParent)->GetY();
   ((TGFrame *)fParent)->Move(x + event->fX - fX0, y + event->fY - fY0);

   return kTRUE;
}


//______________________________________________________________________________
void TGMdiTitleBar::AddFrames(TGMdiTitleIcon *icon, TGMdiButtons *buttons)
{
   // This is called from TGMdiMainFrame on Restore().

   icon->ReparentWindow(fLFrame);
   buttons->ReparentWindow(fRFrame);
   fLFrame->AddFrame(icon, fLHint);
   fLFrame->ShowFrame(icon);
   fRFrame->AddFrame(buttons, fLHint);
   fRFrame->ShowFrame(buttons);
}


//______________________________________________________________________________
void TGMdiTitleBar::RemoveFrames(TGMdiTitleIcon *icon, TGMdiButtons *buttons)
{
   // This is called from TGMdiMainFrame on Maximize().

   fLFrame->RemoveFrame(icon);
   fRFrame->RemoveFrame(buttons);
}


//______________________________________________________________________________
TGMdiButtons::TGMdiButtons(const TGWindow *p, const TGWindow *titlebar) :
   TGCompositeFrame(p, 10, 10, kHorizontalFrame)
{
   // TGMdiButtons constructor.
   // the TGMdiButtons is the frame containing MDI picture buttons like
   // minimize, maximize, restore, close and help.

   fDefaultHint = new TGLayoutHints(kLHintsNormal, 0, 0, 1, 0);
   fCloseHint = new TGLayoutHints(kLHintsNormal, 2, 0, 1, 0);
   fEditDisabled = kTRUE;

   //--- Minimize button

   fButton[0] = new TGPictureButton(this,
                     fClient->GetPicture("mdi_minimize.xpm"),
                     kMdiMinimize);
   fButton[0]->SetToolTipText("Minimize");
   AddFrame(fButton[0], fDefaultHint);
   fButton[0]->SetBackgroundColor(GetDefaultFrameBackground());
   fButton[0]->Associate(titlebar);

   //--- Restore button

   fButton[1] = new TGPictureButton(this,
                     fClient->GetPicture("mdi_restore.xpm"),
                     kMdiRestore);
   fButton[1]->SetToolTipText("Restore");
   AddFrame(fButton[1], fDefaultHint);
   fButton[1]->SetBackgroundColor(GetDefaultFrameBackground());
   fButton[1]->Associate(titlebar);

   //--- Maximize button

   fButton[2] = new TGPictureButton(this,
                     fClient->GetPicture("mdi_maximize.xpm"),
                     kMdiMaximize);
   fButton[2]->SetToolTipText("Maximize");
   AddFrame(fButton[2], fDefaultHint);
   fButton[2]->SetBackgroundColor(GetDefaultFrameBackground());
   fButton[2]->Associate(titlebar);

   //--- Help button

   fButton[3] = new TGPictureButton(this,
                     fClient->GetPicture("mdi_help.xpm"),
                     kMdiHelp);
   fButton[3]->SetToolTipText("Help");
   AddFrame(fButton[3], fDefaultHint);
   fButton[3]->SetBackgroundColor(GetDefaultFrameBackground());
   fButton[3]->Associate(titlebar);

   //--- Close button

   fButton[4] = new TGPictureButton(this,
                     fClient->GetPicture("mdi_close.xpm"),
                     kMdiClose);
   fButton[4]->SetToolTipText("Close");
   AddFrame(fButton[4], fCloseHint);
   fButton[4]->SetBackgroundColor(GetDefaultFrameBackground());
   fButton[4]->Associate(titlebar);
   SetWindowName();
}

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

   if (!MustCleanup()) {
      delete fDefaultHint;
      delete fCloseHint;
   }
}

//______________________________________________________________________________
TGMdiTitleIcon::TGMdiTitleIcon(const TGWindow *p, const TGWindow *titlebar,
                               const TGPicture *pic, Int_t w, Int_t h) :
   TGIcon(p, pic, w, h)
{
   // TGMdiTitleIcon constructor.
   // the TGMdiTitleIcon is the left icon used also for the MDI
   // popup menu allowing access to MDI commands as : restore,
   // move, size, minimize and close.

   fMsgWindow = titlebar;
   fEditDisabled = kTRUE;

   //--- MDI system menu

   fPopup = new TGPopupMenu(fClient->GetDefaultRoot());// fClient->GetRoot());
   fPopup->AddEntry(new TGHotString("&Restore"), kMdiRestore);
   fPopup->AddEntry(new TGHotString("&Move"), kMdiMove);
   fPopup->AddEntry(new TGHotString("&Size"), kMdiSize);
   fPopup->AddEntry(new TGHotString("Mi&nimize"), kMdiMinimize);
   fPopup->AddEntry(new TGHotString("Ma&ximize"), kMdiMaximize);
   fPopup->AddSeparator();
   fPopup->AddEntry(new TGHotString("&Close  Ctrl+F4"), kMdiClose);
   fPopup->DisableEntry(kMdiRestore);
   fPopup->Associate(titlebar);

   AddInput(kButtonPressMask | kButtonReleaseMask);
   SetWindowName();
}

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

   delete fPopup;
}

//______________________________________________________________________________
void TGMdiTitleIcon::DoRedraw()
{
   // Redraw icon.

   gVirtualX->ClearArea(fId, 0, 0, fWidth, fHeight);
   TGIcon::DoRedraw();
}

//______________________________________________________________________________
Bool_t TGMdiTitleIcon::HandleDoubleClick(Event_t *event)
{
   // Handle double click event on MDI icon (close the window)

   if (event->fCode == kButton1) {
      void *ud;
      fPopup->EndMenu(ud);
      gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE);
      SendMessage(fMsgWindow, MK_MSG(kC_COMMAND, kCM_MENU), kMDI_CLOSE, 0);
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGMdiTitleIcon::HandleButton(Event_t *event)
{
   // Handle button event on MDI icon (popup menu)

   SendMessage(fMsgWindow, MK_MSG(kC_COMMAND, kCM_MENU), kMDI_CURRENT, 0);

   if (event->fType == kButtonPress) {
      fPopup->PlaceMenu(event->fXRoot - event->fX,
                        event->fYRoot + (fHeight - event->fY),
                        kTRUE, kTRUE);
   }
   return kTRUE;
}


//______________________________________________________________________________
TGMdiWinResizer::TGMdiWinResizer(const TGWindow *p, const TGWindow *mdiwin,
                   Int_t pos, const TGGC *boxgc, Int_t linew,
                   Int_t mdioptions, Int_t w, Int_t h, UInt_t options) :
   TGFrame(p, w, h, options)
{
   // TGMdiWinResizer constructor.
   // The TGMdiWinResizer is a frame allowing to resize MDI window.
   // Could be horizontal, vertical or corner resizer (see derived classes
   // TGMdiVerticalWinResizer, TGMdiHorizontalWinResizer, and
   // TGMdiCornerWinResizer).

   fWidgetFlags = kWidgetIsEnabled;

   fMdiWin = mdiwin;
   fMdiOptions = mdioptions;
   fPos = pos;

   fBoxGC = boxgc;
   fLineW = linew;

   fMinW = 50;
   fMinH = 20;

   fMidButPressed = fLeftButPressed = fRightButPressed = kFALSE;

   gVirtualX->GrabButton(fId, kButton1, kAnyModifier,
                         kButtonPressMask | kButtonReleaseMask | kButtonMotionMask,
                         kNone, kNone);
   SetWindowName();
}

//______________________________________________________________________________
Bool_t TGMdiWinResizer::HandleButton(Event_t *event)
{
   // Handle button events in resizer (grab button and resize).

   if (!IsEnabled()) return kTRUE;

   if (event->fType == kButtonPress) {
      void *ud;
      ((TGMdiDecorFrame *)fParent)->GetTitleBar()->GetWinIcon()->GetPopup()->EndMenu(ud);
      switch (event->fCode) {
         case kButton1:
            SendMessage(fMdiWin, MK_MSG(kC_MDI, kMDI_CURRENT), fParent->GetId(), 0);
            fNewX = fOldX = fWinX = ((TGFrame *)fParent)->GetX();
            fNewY = fOldY = fWinY = ((TGFrame *)fParent)->GetY();
            fWinW = ((TGFrame *)fParent)->GetWidth();
            fWinH = ((TGFrame *)fParent)->GetHeight();
            fX0 = event->fXRoot;
            fY0 = event->fYRoot;
            fNewW = fWinW;
            fNewH = fWinH;
            if (fMdiOptions != kMdiOpaque) {
               DrawBox(fNewX, fNewY, fNewW, fNewH);
            }
            fLeftButPressed = kTRUE;
            gVirtualX->GrabPointer(fId, kButtonReleaseMask | kPointerMotionMask,
                                   kNone, kNone, kTRUE, kFALSE);
            break;

         case kButton2:
            fMidButPressed = kTRUE;
            break;

         case kButton3:
            fRightButPressed = kTRUE;
            break;
      }
   } else {
      gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE);
      switch (event->fCode) {
         case kButton1:
            if (fMdiOptions != kMdiOpaque) {
               DrawBox(fNewX, fNewY, fNewW, fNewH);
               ((TGFrame *)fParent)->MoveResize(fNewX, fNewY, fNewW, fNewH);
            }
            //if (!fClient->IsEditable()) ((TGMainFrame *)((TGMdiMainFrame *)fMdiWin)->GetMainFrame())->Layout();
            fLeftButPressed = kFALSE;
            break;

         case kButton2:
            fMidButPressed = kFALSE;
            break;

         case kButton3:
            fRightButPressed = kFALSE;
            break;
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
void TGMdiWinResizer::DrawBox(Int_t x, Int_t y, UInt_t width, UInt_t height)
{
   // Draw resize box (rectangle).

   TGMdiMainFrame *m = (TGMdiMainFrame *) fMdiWin;

   gVirtualX->DrawRectangle(m->GetContainer()->GetId(), fBoxGC->GetGC(),
       x + fLineW / 2, y + fLineW / 2, width - fLineW, height - fLineW);
}

//______________________________________________________________________________
void TGMdiWinResizer::MoveResizeIt()
{
   // Move (resize) parent MDI window.

   if (fMdiOptions == kMdiOpaque) {
      ((TGFrame *)fParent)->MoveResize(fNewX, fNewY, fNewW, fNewH);
   } else {
      DrawBox(fOldX, fOldY, fOldW, fOldH);
      DrawBox(fNewX, fNewY, fNewW, fNewH);
   }
}


//______________________________________________________________________________
TGMdiVerticalWinResizer::TGMdiVerticalWinResizer(const TGWindow *p,
             const TGWindow *mdiwin, Int_t pos, const TGGC *boxGC, Int_t linew,
             Int_t mdioptions, Int_t w, Int_t h) :
   TGMdiWinResizer(p, mdiwin, pos, boxGC, linew, mdioptions,
                   w, h, kFixedHeight | kOwnBackground)
{
   // TGMdiVerticalWinResizer constructor.

   gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kArrowVer));
}

//______________________________________________________________________________
Bool_t TGMdiVerticalWinResizer::HandleMotion(Event_t *event)
{
   // Handle motion events in resizer (resize associated MDI window).

   if (((TGMdiDecorFrame *)fParent)->IsMinimized()) return kTRUE;

   fOldX = fNewX;
   fOldY = fNewY;
   fOldW = fNewW;
   fOldH = fNewH;

   Int_t dy = event->fYRoot - fY0;

   if (!fLeftButPressed) return kTRUE;

   switch (fPos) {
      case kMdiResizerTop:
         if (fWinH - dy < fMinH) dy = fWinH - fMinH;
         fNewY = fWinY + dy;
         fNewH = fWinH - dy;
         break;

      case kMdiResizerBottom:
         if (fWinH + dy < fMinH) dy = fMinH - fWinH;
         fNewY = fWinY;
         fNewH = fWinH + dy;
         break;
   }

   MoveResizeIt();

   return kTRUE;
}

//______________________________________________________________________________
void TGMdiVerticalWinResizer::DrawBorder()
{
   // Draw vertical resizer frame border.

   gVirtualX->ClearArea(fId, 0, 0, fWidth, fHeight);
   if (fPos == kMdiResizerTop) {
      gVirtualX->DrawLine(fId, GetHilightGC()(), 0, 1, fWidth - 1, 1);
   } else {
      gVirtualX->DrawLine(fId, GetShadowGC()(), 0, fHeight - 2, fWidth - 1,
          fHeight - 2);
      gVirtualX->DrawLine(fId, GetBlackGC()(), 0, fHeight - 1, fWidth - 1,
          fHeight - 1);
   }
}


//______________________________________________________________________________
TGMdiCornerWinResizer::TGMdiCornerWinResizer(const TGWindow *p,
           const TGWindow *mdiwin, Int_t pos, const TGGC *boxGC, Int_t linew,
           Int_t mdioptions, Int_t w, Int_t h) :
   TGMdiWinResizer(p, mdiwin, pos, boxGC, linew, mdioptions,
                   w, h, kFixedSize | kOwnBackground)
{
   // TGMdiCornerWinResizer constructor.

   Cursor_t defaultCursor = kNone;
   fEditDisabled = kTRUE;

   switch (fPos) {
      case (kMdiResizerTop | kMdiResizerLeft):
         defaultCursor = gVirtualX->CreateCursor(kTopLeft);
         break;

      case (kMdiResizerBottom | kMdiResizerLeft):
         defaultCursor = gVirtualX->CreateCursor(kBottomLeft);
         break;

      case (kMdiResizerTop | kMdiResizerRight):
         defaultCursor = gVirtualX->CreateCursor(kTopRight);
         break;

      case (kMdiResizerBottom | kMdiResizerRight):
         defaultCursor = gVirtualX->CreateCursor(kBottomRight);
         break;
   }
   gVirtualX->SetCursor(fId, defaultCursor);
}

//______________________________________________________________________________
Bool_t TGMdiCornerWinResizer::HandleMotion(Event_t *event)
{
   // Handle motion events in resizer (resize associated MDI window).

   if (((TGMdiDecorFrame *)fParent)->IsMinimized()) return kTRUE;

   fOldX = fNewX;
   fOldY = fNewY;
   fOldW = fNewW;
   fOldH = fNewH;

   Int_t dx = event->fXRoot - fX0;
   Int_t dy = event->fYRoot - fY0;

   if (!fLeftButPressed) return kTRUE;

   switch (fPos) {
      case (kMdiResizerTop | kMdiResizerLeft):
         if (fWinW - dx < fMinW) dx = fWinW - fMinW;
         if (fWinH - dy < fMinH) dy = fWinH - fMinH;
         fNewX = fWinX + dx;
         fNewW = fWinW - dx;
         fNewY = fWinY + dy;
         fNewH = fWinH - dy;
         break;

      case (kMdiResizerBottom | kMdiResizerLeft):
         if (fWinW - dx < fMinW) dx = fWinW - fMinW;
         if (fWinH + dy < fMinH) dy = fMinH - fWinH;
         fNewX = fWinX + dx;
         fNewW = fWinW - dx;
         fNewY = fWinY;
         fNewH = fWinH + dy;
         break;

      case (kMdiResizerTop | kMdiResizerRight):
         if (fWinW + dx < fMinW) dx = fMinW - fWinW;
         if (fWinH - dy < fMinH) dy = fWinH - fMinH;
         fNewX = fWinX;
         fNewW = fWinW + dx;
         fNewY = fWinY + dy;
         fNewH = fWinH - dy;
         break;

      case (kMdiResizerBottom | kMdiResizerRight):
         if (fWinW + dx < fMinW) dx = fMinW - fWinW;
         if (fWinH + dy < fMinH) dy = fMinH - fWinH;
         fNewX = fWinX;
         fNewW = fWinW + dx;
         fNewY = fWinY;
         fNewH = fWinH + dy;
         break;
   }

   MoveResizeIt();

   return kTRUE;
}

//______________________________________________________________________________
void TGMdiCornerWinResizer::DrawBorder()
{
   // Draw corner resizer frame border.

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

   switch (fPos) {
      case (kMdiResizerTop | kMdiResizerLeft):
         gVirtualX->DrawLine(fId, GetHilightGC()(), 1, 1, fWidth - 1, 1);
         gVirtualX->DrawLine(fId, GetHilightGC()(), 1, 1, 1, fHeight - 1);
         break;

      case (kMdiResizerBottom | kMdiResizerLeft):
         gVirtualX->DrawLine(fId, GetHilightGC()(), 1, 0, 1, fHeight - 1);
         gVirtualX->DrawLine(fId, GetShadowGC()(), 1, fHeight - 2,
             fWidth - 1, fHeight - 2);
         gVirtualX->DrawLine(fId, GetBlackGC()(), 0, fHeight - 1,
             fWidth - 1, fHeight - 1);
         break;

      case (kMdiResizerTop | kMdiResizerRight):
         gVirtualX->DrawLine(fId, GetHilightGC()(), 0, 1, fWidth - 1, 1);
         gVirtualX->DrawLine(fId, GetShadowGC()(), fWidth - 2, 1,
             fWidth - 2, fHeight - 1);
         gVirtualX->DrawLine(fId, GetBlackGC()(), fWidth - 1, 0,
             fWidth - 1, fHeight - 1);
         break;

      case (kMdiResizerBottom | kMdiResizerRight):
         gVirtualX->DrawLine(fId, GetShadowGC()(), fWidth - 2, 0,
             fWidth - 2, fHeight - 2);
         gVirtualX->DrawLine(fId, GetShadowGC()(), 0, fHeight - 2,
             fWidth - 1, fHeight - 2);
         gVirtualX->DrawLine(fId, GetBlackGC()(), fWidth - 1, 0,
             fWidth - 1, fHeight - 1);
         gVirtualX->DrawLine(fId, GetBlackGC()(), 0, fHeight - 1,
             fWidth - 1, fHeight - 1);
         break;
   }
}


//______________________________________________________________________________
TGMdiHorizontalWinResizer::TGMdiHorizontalWinResizer(const TGWindow *p,
               const TGWindow *mdiwin, Int_t pos, const TGGC *boxGC, Int_t linew,
               Int_t mdioptions, Int_t w, Int_t h) :
   TGMdiWinResizer(p, mdiwin, pos, boxGC, linew, mdioptions,
                   w, h, kFixedWidth | kOwnBackground)
{
   // TGMdiHorizontalWinResizer constructor.

   fEditDisabled = kTRUE;
   gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kArrowHor));
   SetWindowName();
}

//______________________________________________________________________________
Bool_t TGMdiHorizontalWinResizer::HandleMotion(Event_t *event)
{
   // Handle motion events in resizer (resize associated MDI window).

   if (((TGMdiDecorFrame *)fParent)->IsMinimized()) return kTRUE;

   fOldX = fNewX;
   fOldY = fNewY;
   fOldW = fNewW;
   fOldH = fNewH;

   Int_t dx = event->fXRoot - fX0;

   if (!fLeftButPressed) return kTRUE;

   switch (fPos) {
      case (kMdiResizerLeft):
         if (fWinW - dx < fMinW) dx = fWinW - fMinW;
         fNewX = fWinX + dx;
         fNewW = fWinW - dx;
         break;

      case (kMdiResizerRight):
         if (fWinW + dx < fMinW) dx = fMinW - fWinW;
         fNewX = fWinX;
         fNewW = fWinW + dx;
         break;
   }

   MoveResizeIt();

   return kTRUE;
}

//______________________________________________________________________________
void TGMdiHorizontalWinResizer::DrawBorder()
{
   // Draw horizontal resizer frame border.

   gVirtualX->ClearArea(fId, 0, 0, fWidth, fHeight);
   if (fPos == kMdiResizerLeft) {
      gVirtualX->DrawLine(fId, GetHilightGC()(), 1, 0, 1, fHeight - 1);
   } else {
      gVirtualX->DrawLine(fId, GetShadowGC()(), fWidth - 2, 0, fWidth - 2, fHeight - 1);
      gVirtualX->DrawLine(fId, GetBlackGC()(), fWidth - 1, 0, fWidth - 1, fHeight - 1);
   }
}
 TGMdiDecorFrame.cxx:1
 TGMdiDecorFrame.cxx:2
 TGMdiDecorFrame.cxx:3
 TGMdiDecorFrame.cxx:4
 TGMdiDecorFrame.cxx:5
 TGMdiDecorFrame.cxx:6
 TGMdiDecorFrame.cxx:7
 TGMdiDecorFrame.cxx:8
 TGMdiDecorFrame.cxx:9
 TGMdiDecorFrame.cxx:10
 TGMdiDecorFrame.cxx:11
 TGMdiDecorFrame.cxx:12
 TGMdiDecorFrame.cxx:13
 TGMdiDecorFrame.cxx:14
 TGMdiDecorFrame.cxx:15
 TGMdiDecorFrame.cxx:16
 TGMdiDecorFrame.cxx:17
 TGMdiDecorFrame.cxx:18
 TGMdiDecorFrame.cxx:19
 TGMdiDecorFrame.cxx:20
 TGMdiDecorFrame.cxx:21
 TGMdiDecorFrame.cxx:22
 TGMdiDecorFrame.cxx:23
 TGMdiDecorFrame.cxx:24
 TGMdiDecorFrame.cxx:25
 TGMdiDecorFrame.cxx:26
 TGMdiDecorFrame.cxx:27
 TGMdiDecorFrame.cxx:28
 TGMdiDecorFrame.cxx:29
 TGMdiDecorFrame.cxx:30
 TGMdiDecorFrame.cxx:31
 TGMdiDecorFrame.cxx:32
 TGMdiDecorFrame.cxx:33
 TGMdiDecorFrame.cxx:34
 TGMdiDecorFrame.cxx:35
 TGMdiDecorFrame.cxx:36
 TGMdiDecorFrame.cxx:37
 TGMdiDecorFrame.cxx:38
 TGMdiDecorFrame.cxx:39
 TGMdiDecorFrame.cxx:40
 TGMdiDecorFrame.cxx:41
 TGMdiDecorFrame.cxx:42
 TGMdiDecorFrame.cxx:43
 TGMdiDecorFrame.cxx:44
 TGMdiDecorFrame.cxx:45
 TGMdiDecorFrame.cxx:46
 TGMdiDecorFrame.cxx:47
 TGMdiDecorFrame.cxx:48
 TGMdiDecorFrame.cxx:49
 TGMdiDecorFrame.cxx:50
 TGMdiDecorFrame.cxx:51
 TGMdiDecorFrame.cxx:52
 TGMdiDecorFrame.cxx:53
 TGMdiDecorFrame.cxx:54
 TGMdiDecorFrame.cxx:55
 TGMdiDecorFrame.cxx:56
 TGMdiDecorFrame.cxx:57
 TGMdiDecorFrame.cxx:58
 TGMdiDecorFrame.cxx:59
 TGMdiDecorFrame.cxx:60
 TGMdiDecorFrame.cxx:61
 TGMdiDecorFrame.cxx:62
 TGMdiDecorFrame.cxx:63
 TGMdiDecorFrame.cxx:64
 TGMdiDecorFrame.cxx:65
 TGMdiDecorFrame.cxx:66
 TGMdiDecorFrame.cxx:67
 TGMdiDecorFrame.cxx:68
 TGMdiDecorFrame.cxx:69
 TGMdiDecorFrame.cxx:70
 TGMdiDecorFrame.cxx:71
 TGMdiDecorFrame.cxx:72
 TGMdiDecorFrame.cxx:73
 TGMdiDecorFrame.cxx:74
 TGMdiDecorFrame.cxx:75
 TGMdiDecorFrame.cxx:76
 TGMdiDecorFrame.cxx:77
 TGMdiDecorFrame.cxx:78
 TGMdiDecorFrame.cxx:79
 TGMdiDecorFrame.cxx:80
 TGMdiDecorFrame.cxx:81
 TGMdiDecorFrame.cxx:82
 TGMdiDecorFrame.cxx:83
 TGMdiDecorFrame.cxx:84
 TGMdiDecorFrame.cxx:85
 TGMdiDecorFrame.cxx:86
 TGMdiDecorFrame.cxx:87
 TGMdiDecorFrame.cxx:88
 TGMdiDecorFrame.cxx:89
 TGMdiDecorFrame.cxx:90
 TGMdiDecorFrame.cxx:91
 TGMdiDecorFrame.cxx:92
 TGMdiDecorFrame.cxx:93
 TGMdiDecorFrame.cxx:94
 TGMdiDecorFrame.cxx:95
 TGMdiDecorFrame.cxx:96
 TGMdiDecorFrame.cxx:97
 TGMdiDecorFrame.cxx:98
 TGMdiDecorFrame.cxx:99
 TGMdiDecorFrame.cxx:100
 TGMdiDecorFrame.cxx:101
 TGMdiDecorFrame.cxx:102
 TGMdiDecorFrame.cxx:103
 TGMdiDecorFrame.cxx:104
 TGMdiDecorFrame.cxx:105
 TGMdiDecorFrame.cxx:106
 TGMdiDecorFrame.cxx:107
 TGMdiDecorFrame.cxx:108
 TGMdiDecorFrame.cxx:109
 TGMdiDecorFrame.cxx:110
 TGMdiDecorFrame.cxx:111
 TGMdiDecorFrame.cxx:112
 TGMdiDecorFrame.cxx:113
 TGMdiDecorFrame.cxx:114
 TGMdiDecorFrame.cxx:115
 TGMdiDecorFrame.cxx:116
 TGMdiDecorFrame.cxx:117
 TGMdiDecorFrame.cxx:118
 TGMdiDecorFrame.cxx:119
 TGMdiDecorFrame.cxx:120
 TGMdiDecorFrame.cxx:121
 TGMdiDecorFrame.cxx:122
 TGMdiDecorFrame.cxx:123
 TGMdiDecorFrame.cxx:124
 TGMdiDecorFrame.cxx:125
 TGMdiDecorFrame.cxx:126
 TGMdiDecorFrame.cxx:127
 TGMdiDecorFrame.cxx:128
 TGMdiDecorFrame.cxx:129
 TGMdiDecorFrame.cxx:130
 TGMdiDecorFrame.cxx:131
 TGMdiDecorFrame.cxx:132
 TGMdiDecorFrame.cxx:133
 TGMdiDecorFrame.cxx:134
 TGMdiDecorFrame.cxx:135
 TGMdiDecorFrame.cxx:136
 TGMdiDecorFrame.cxx:137
 TGMdiDecorFrame.cxx:138
 TGMdiDecorFrame.cxx:139
 TGMdiDecorFrame.cxx:140
 TGMdiDecorFrame.cxx:141
 TGMdiDecorFrame.cxx:142
 TGMdiDecorFrame.cxx:143
 TGMdiDecorFrame.cxx:144
 TGMdiDecorFrame.cxx:145
 TGMdiDecorFrame.cxx:146
 TGMdiDecorFrame.cxx:147
 TGMdiDecorFrame.cxx:148
 TGMdiDecorFrame.cxx:149
 TGMdiDecorFrame.cxx:150
 TGMdiDecorFrame.cxx:151
 TGMdiDecorFrame.cxx:152
 TGMdiDecorFrame.cxx:153
 TGMdiDecorFrame.cxx:154
 TGMdiDecorFrame.cxx:155
 TGMdiDecorFrame.cxx:156
 TGMdiDecorFrame.cxx:157
 TGMdiDecorFrame.cxx:158
 TGMdiDecorFrame.cxx:159
 TGMdiDecorFrame.cxx:160
 TGMdiDecorFrame.cxx:161
 TGMdiDecorFrame.cxx:162
 TGMdiDecorFrame.cxx:163
 TGMdiDecorFrame.cxx:164
 TGMdiDecorFrame.cxx:165
 TGMdiDecorFrame.cxx:166
 TGMdiDecorFrame.cxx:167
 TGMdiDecorFrame.cxx:168
 TGMdiDecorFrame.cxx:169
 TGMdiDecorFrame.cxx:170
 TGMdiDecorFrame.cxx:171
 TGMdiDecorFrame.cxx:172
 TGMdiDecorFrame.cxx:173
 TGMdiDecorFrame.cxx:174
 TGMdiDecorFrame.cxx:175
 TGMdiDecorFrame.cxx:176
 TGMdiDecorFrame.cxx:177
 TGMdiDecorFrame.cxx:178
 TGMdiDecorFrame.cxx:179
 TGMdiDecorFrame.cxx:180
 TGMdiDecorFrame.cxx:181
 TGMdiDecorFrame.cxx:182
 TGMdiDecorFrame.cxx:183
 TGMdiDecorFrame.cxx:184
 TGMdiDecorFrame.cxx:185
 TGMdiDecorFrame.cxx:186
 TGMdiDecorFrame.cxx:187
 TGMdiDecorFrame.cxx:188
 TGMdiDecorFrame.cxx:189
 TGMdiDecorFrame.cxx:190
 TGMdiDecorFrame.cxx:191
 TGMdiDecorFrame.cxx:192
 TGMdiDecorFrame.cxx:193
 TGMdiDecorFrame.cxx:194
 TGMdiDecorFrame.cxx:195
 TGMdiDecorFrame.cxx:196
 TGMdiDecorFrame.cxx:197
 TGMdiDecorFrame.cxx:198
 TGMdiDecorFrame.cxx:199
 TGMdiDecorFrame.cxx:200
 TGMdiDecorFrame.cxx:201
 TGMdiDecorFrame.cxx:202
 TGMdiDecorFrame.cxx:203
 TGMdiDecorFrame.cxx:204
 TGMdiDecorFrame.cxx:205
 TGMdiDecorFrame.cxx:206
 TGMdiDecorFrame.cxx:207
 TGMdiDecorFrame.cxx:208
 TGMdiDecorFrame.cxx:209
 TGMdiDecorFrame.cxx:210
 TGMdiDecorFrame.cxx:211
 TGMdiDecorFrame.cxx:212
 TGMdiDecorFrame.cxx:213
 TGMdiDecorFrame.cxx:214
 TGMdiDecorFrame.cxx:215
 TGMdiDecorFrame.cxx:216
 TGMdiDecorFrame.cxx:217
 TGMdiDecorFrame.cxx:218
 TGMdiDecorFrame.cxx:219
 TGMdiDecorFrame.cxx:220
 TGMdiDecorFrame.cxx:221
 TGMdiDecorFrame.cxx:222
 TGMdiDecorFrame.cxx:223
 TGMdiDecorFrame.cxx:224
 TGMdiDecorFrame.cxx:225
 TGMdiDecorFrame.cxx:226
 TGMdiDecorFrame.cxx:227
 TGMdiDecorFrame.cxx:228
 TGMdiDecorFrame.cxx:229
 TGMdiDecorFrame.cxx:230
 TGMdiDecorFrame.cxx:231
 TGMdiDecorFrame.cxx:232
 TGMdiDecorFrame.cxx:233
 TGMdiDecorFrame.cxx:234
 TGMdiDecorFrame.cxx:235
 TGMdiDecorFrame.cxx:236
 TGMdiDecorFrame.cxx:237
 TGMdiDecorFrame.cxx:238
 TGMdiDecorFrame.cxx:239
 TGMdiDecorFrame.cxx:240
 TGMdiDecorFrame.cxx:241
 TGMdiDecorFrame.cxx:242
 TGMdiDecorFrame.cxx:243
 TGMdiDecorFrame.cxx:244
 TGMdiDecorFrame.cxx:245
 TGMdiDecorFrame.cxx:246
 TGMdiDecorFrame.cxx:247
 TGMdiDecorFrame.cxx:248
 TGMdiDecorFrame.cxx:249
 TGMdiDecorFrame.cxx:250
 TGMdiDecorFrame.cxx:251
 TGMdiDecorFrame.cxx:252
 TGMdiDecorFrame.cxx:253
 TGMdiDecorFrame.cxx:254
 TGMdiDecorFrame.cxx:255
 TGMdiDecorFrame.cxx:256
 TGMdiDecorFrame.cxx:257
 TGMdiDecorFrame.cxx:258
 TGMdiDecorFrame.cxx:259
 TGMdiDecorFrame.cxx:260
 TGMdiDecorFrame.cxx:261
 TGMdiDecorFrame.cxx:262
 TGMdiDecorFrame.cxx:263
 TGMdiDecorFrame.cxx:264
 TGMdiDecorFrame.cxx:265
 TGMdiDecorFrame.cxx:266
 TGMdiDecorFrame.cxx:267
 TGMdiDecorFrame.cxx:268
 TGMdiDecorFrame.cxx:269
 TGMdiDecorFrame.cxx:270
 TGMdiDecorFrame.cxx:271
 TGMdiDecorFrame.cxx:272
 TGMdiDecorFrame.cxx:273
 TGMdiDecorFrame.cxx:274
 TGMdiDecorFrame.cxx:275
 TGMdiDecorFrame.cxx:276
 TGMdiDecorFrame.cxx:277
 TGMdiDecorFrame.cxx:278
 TGMdiDecorFrame.cxx:279
 TGMdiDecorFrame.cxx:280
 TGMdiDecorFrame.cxx:281
 TGMdiDecorFrame.cxx:282
 TGMdiDecorFrame.cxx:283
 TGMdiDecorFrame.cxx:284
 TGMdiDecorFrame.cxx:285
 TGMdiDecorFrame.cxx:286
 TGMdiDecorFrame.cxx:287
 TGMdiDecorFrame.cxx:288
 TGMdiDecorFrame.cxx:289
 TGMdiDecorFrame.cxx:290
 TGMdiDecorFrame.cxx:291
 TGMdiDecorFrame.cxx:292
 TGMdiDecorFrame.cxx:293
 TGMdiDecorFrame.cxx:294
 TGMdiDecorFrame.cxx:295
 TGMdiDecorFrame.cxx:296
 TGMdiDecorFrame.cxx:297
 TGMdiDecorFrame.cxx:298
 TGMdiDecorFrame.cxx:299
 TGMdiDecorFrame.cxx:300
 TGMdiDecorFrame.cxx:301
 TGMdiDecorFrame.cxx:302
 TGMdiDecorFrame.cxx:303
 TGMdiDecorFrame.cxx:304
 TGMdiDecorFrame.cxx:305
 TGMdiDecorFrame.cxx:306
 TGMdiDecorFrame.cxx:307
 TGMdiDecorFrame.cxx:308
 TGMdiDecorFrame.cxx:309
 TGMdiDecorFrame.cxx:310
 TGMdiDecorFrame.cxx:311
 TGMdiDecorFrame.cxx:312
 TGMdiDecorFrame.cxx:313
 TGMdiDecorFrame.cxx:314
 TGMdiDecorFrame.cxx:315
 TGMdiDecorFrame.cxx:316
 TGMdiDecorFrame.cxx:317
 TGMdiDecorFrame.cxx:318
 TGMdiDecorFrame.cxx:319
 TGMdiDecorFrame.cxx:320
 TGMdiDecorFrame.cxx:321
 TGMdiDecorFrame.cxx:322
 TGMdiDecorFrame.cxx:323
 TGMdiDecorFrame.cxx:324
 TGMdiDecorFrame.cxx:325
 TGMdiDecorFrame.cxx:326
 TGMdiDecorFrame.cxx:327
 TGMdiDecorFrame.cxx:328
 TGMdiDecorFrame.cxx:329
 TGMdiDecorFrame.cxx:330
 TGMdiDecorFrame.cxx:331
 TGMdiDecorFrame.cxx:332
 TGMdiDecorFrame.cxx:333
 TGMdiDecorFrame.cxx:334
 TGMdiDecorFrame.cxx:335
 TGMdiDecorFrame.cxx:336
 TGMdiDecorFrame.cxx:337
 TGMdiDecorFrame.cxx:338
 TGMdiDecorFrame.cxx:339
 TGMdiDecorFrame.cxx:340
 TGMdiDecorFrame.cxx:341
 TGMdiDecorFrame.cxx:342
 TGMdiDecorFrame.cxx:343
 TGMdiDecorFrame.cxx:344
 TGMdiDecorFrame.cxx:345
 TGMdiDecorFrame.cxx:346
 TGMdiDecorFrame.cxx:347
 TGMdiDecorFrame.cxx:348
 TGMdiDecorFrame.cxx:349
 TGMdiDecorFrame.cxx:350
 TGMdiDecorFrame.cxx:351
 TGMdiDecorFrame.cxx:352
 TGMdiDecorFrame.cxx:353
 TGMdiDecorFrame.cxx:354
 TGMdiDecorFrame.cxx:355
 TGMdiDecorFrame.cxx:356
 TGMdiDecorFrame.cxx:357
 TGMdiDecorFrame.cxx:358
 TGMdiDecorFrame.cxx:359
 TGMdiDecorFrame.cxx:360
 TGMdiDecorFrame.cxx:361
 TGMdiDecorFrame.cxx:362
 TGMdiDecorFrame.cxx:363
 TGMdiDecorFrame.cxx:364
 TGMdiDecorFrame.cxx:365
 TGMdiDecorFrame.cxx:366
 TGMdiDecorFrame.cxx:367
 TGMdiDecorFrame.cxx:368
 TGMdiDecorFrame.cxx:369
 TGMdiDecorFrame.cxx:370
 TGMdiDecorFrame.cxx:371
 TGMdiDecorFrame.cxx:372
 TGMdiDecorFrame.cxx:373
 TGMdiDecorFrame.cxx:374
 TGMdiDecorFrame.cxx:375
 TGMdiDecorFrame.cxx:376
 TGMdiDecorFrame.cxx:377
 TGMdiDecorFrame.cxx:378
 TGMdiDecorFrame.cxx:379
 TGMdiDecorFrame.cxx:380
 TGMdiDecorFrame.cxx:381
 TGMdiDecorFrame.cxx:382
 TGMdiDecorFrame.cxx:383
 TGMdiDecorFrame.cxx:384
 TGMdiDecorFrame.cxx:385
 TGMdiDecorFrame.cxx:386
 TGMdiDecorFrame.cxx:387
 TGMdiDecorFrame.cxx:388
 TGMdiDecorFrame.cxx:389
 TGMdiDecorFrame.cxx:390
 TGMdiDecorFrame.cxx:391
 TGMdiDecorFrame.cxx:392
 TGMdiDecorFrame.cxx:393
 TGMdiDecorFrame.cxx:394
 TGMdiDecorFrame.cxx:395
 TGMdiDecorFrame.cxx:396
 TGMdiDecorFrame.cxx:397
 TGMdiDecorFrame.cxx:398
 TGMdiDecorFrame.cxx:399
 TGMdiDecorFrame.cxx:400
 TGMdiDecorFrame.cxx:401
 TGMdiDecorFrame.cxx:402
 TGMdiDecorFrame.cxx:403
 TGMdiDecorFrame.cxx:404
 TGMdiDecorFrame.cxx:405
 TGMdiDecorFrame.cxx:406
 TGMdiDecorFrame.cxx:407
 TGMdiDecorFrame.cxx:408
 TGMdiDecorFrame.cxx:409
 TGMdiDecorFrame.cxx:410
 TGMdiDecorFrame.cxx:411
 TGMdiDecorFrame.cxx:412
 TGMdiDecorFrame.cxx:413
 TGMdiDecorFrame.cxx:414
 TGMdiDecorFrame.cxx:415
 TGMdiDecorFrame.cxx:416
 TGMdiDecorFrame.cxx:417
 TGMdiDecorFrame.cxx:418
 TGMdiDecorFrame.cxx:419
 TGMdiDecorFrame.cxx:420
 TGMdiDecorFrame.cxx:421
 TGMdiDecorFrame.cxx:422
 TGMdiDecorFrame.cxx:423
 TGMdiDecorFrame.cxx:424
 TGMdiDecorFrame.cxx:425
 TGMdiDecorFrame.cxx:426
 TGMdiDecorFrame.cxx:427
 TGMdiDecorFrame.cxx:428
 TGMdiDecorFrame.cxx:429
 TGMdiDecorFrame.cxx:430
 TGMdiDecorFrame.cxx:431
 TGMdiDecorFrame.cxx:432
 TGMdiDecorFrame.cxx:433
 TGMdiDecorFrame.cxx:434
 TGMdiDecorFrame.cxx:435
 TGMdiDecorFrame.cxx:436
 TGMdiDecorFrame.cxx:437
 TGMdiDecorFrame.cxx:438
 TGMdiDecorFrame.cxx:439
 TGMdiDecorFrame.cxx:440
 TGMdiDecorFrame.cxx:441
 TGMdiDecorFrame.cxx:442
 TGMdiDecorFrame.cxx:443
 TGMdiDecorFrame.cxx:444
 TGMdiDecorFrame.cxx:445
 TGMdiDecorFrame.cxx:446
 TGMdiDecorFrame.cxx:447
 TGMdiDecorFrame.cxx:448
 TGMdiDecorFrame.cxx:449
 TGMdiDecorFrame.cxx:450
 TGMdiDecorFrame.cxx:451
 TGMdiDecorFrame.cxx:452
 TGMdiDecorFrame.cxx:453
 TGMdiDecorFrame.cxx:454
 TGMdiDecorFrame.cxx:455
 TGMdiDecorFrame.cxx:456
 TGMdiDecorFrame.cxx:457
 TGMdiDecorFrame.cxx:458
 TGMdiDecorFrame.cxx:459
 TGMdiDecorFrame.cxx:460
 TGMdiDecorFrame.cxx:461
 TGMdiDecorFrame.cxx:462
 TGMdiDecorFrame.cxx:463
 TGMdiDecorFrame.cxx:464
 TGMdiDecorFrame.cxx:465
 TGMdiDecorFrame.cxx:466
 TGMdiDecorFrame.cxx:467
 TGMdiDecorFrame.cxx:468
 TGMdiDecorFrame.cxx:469
 TGMdiDecorFrame.cxx:470
 TGMdiDecorFrame.cxx:471
 TGMdiDecorFrame.cxx:472
 TGMdiDecorFrame.cxx:473
 TGMdiDecorFrame.cxx:474
 TGMdiDecorFrame.cxx:475
 TGMdiDecorFrame.cxx:476
 TGMdiDecorFrame.cxx:477
 TGMdiDecorFrame.cxx:478
 TGMdiDecorFrame.cxx:479
 TGMdiDecorFrame.cxx:480
 TGMdiDecorFrame.cxx:481
 TGMdiDecorFrame.cxx:482
 TGMdiDecorFrame.cxx:483
 TGMdiDecorFrame.cxx:484
 TGMdiDecorFrame.cxx:485
 TGMdiDecorFrame.cxx:486
 TGMdiDecorFrame.cxx:487
 TGMdiDecorFrame.cxx:488
 TGMdiDecorFrame.cxx:489
 TGMdiDecorFrame.cxx:490
 TGMdiDecorFrame.cxx:491
 TGMdiDecorFrame.cxx:492
 TGMdiDecorFrame.cxx:493
 TGMdiDecorFrame.cxx:494
 TGMdiDecorFrame.cxx:495
 TGMdiDecorFrame.cxx:496
 TGMdiDecorFrame.cxx:497
 TGMdiDecorFrame.cxx:498
 TGMdiDecorFrame.cxx:499
 TGMdiDecorFrame.cxx:500
 TGMdiDecorFrame.cxx:501
 TGMdiDecorFrame.cxx:502
 TGMdiDecorFrame.cxx:503
 TGMdiDecorFrame.cxx:504
 TGMdiDecorFrame.cxx:505
 TGMdiDecorFrame.cxx:506
 TGMdiDecorFrame.cxx:507
 TGMdiDecorFrame.cxx:508
 TGMdiDecorFrame.cxx:509
 TGMdiDecorFrame.cxx:510
 TGMdiDecorFrame.cxx:511
 TGMdiDecorFrame.cxx:512
 TGMdiDecorFrame.cxx:513
 TGMdiDecorFrame.cxx:514
 TGMdiDecorFrame.cxx:515
 TGMdiDecorFrame.cxx:516
 TGMdiDecorFrame.cxx:517
 TGMdiDecorFrame.cxx:518
 TGMdiDecorFrame.cxx:519
 TGMdiDecorFrame.cxx:520
 TGMdiDecorFrame.cxx:521
 TGMdiDecorFrame.cxx:522
 TGMdiDecorFrame.cxx:523
 TGMdiDecorFrame.cxx:524
 TGMdiDecorFrame.cxx:525
 TGMdiDecorFrame.cxx:526
 TGMdiDecorFrame.cxx:527
 TGMdiDecorFrame.cxx:528
 TGMdiDecorFrame.cxx:529
 TGMdiDecorFrame.cxx:530
 TGMdiDecorFrame.cxx:531
 TGMdiDecorFrame.cxx:532
 TGMdiDecorFrame.cxx:533
 TGMdiDecorFrame.cxx:534
 TGMdiDecorFrame.cxx:535
 TGMdiDecorFrame.cxx:536
 TGMdiDecorFrame.cxx:537
 TGMdiDecorFrame.cxx:538
 TGMdiDecorFrame.cxx:539
 TGMdiDecorFrame.cxx:540
 TGMdiDecorFrame.cxx:541
 TGMdiDecorFrame.cxx:542
 TGMdiDecorFrame.cxx:543
 TGMdiDecorFrame.cxx:544
 TGMdiDecorFrame.cxx:545
 TGMdiDecorFrame.cxx:546
 TGMdiDecorFrame.cxx:547
 TGMdiDecorFrame.cxx:548
 TGMdiDecorFrame.cxx:549
 TGMdiDecorFrame.cxx:550
 TGMdiDecorFrame.cxx:551
 TGMdiDecorFrame.cxx:552
 TGMdiDecorFrame.cxx:553
 TGMdiDecorFrame.cxx:554
 TGMdiDecorFrame.cxx:555
 TGMdiDecorFrame.cxx:556
 TGMdiDecorFrame.cxx:557
 TGMdiDecorFrame.cxx:558
 TGMdiDecorFrame.cxx:559
 TGMdiDecorFrame.cxx:560
 TGMdiDecorFrame.cxx:561
 TGMdiDecorFrame.cxx:562
 TGMdiDecorFrame.cxx:563
 TGMdiDecorFrame.cxx:564
 TGMdiDecorFrame.cxx:565
 TGMdiDecorFrame.cxx:566
 TGMdiDecorFrame.cxx:567
 TGMdiDecorFrame.cxx:568
 TGMdiDecorFrame.cxx:569
 TGMdiDecorFrame.cxx:570
 TGMdiDecorFrame.cxx:571
 TGMdiDecorFrame.cxx:572
 TGMdiDecorFrame.cxx:573
 TGMdiDecorFrame.cxx:574
 TGMdiDecorFrame.cxx:575
 TGMdiDecorFrame.cxx:576
 TGMdiDecorFrame.cxx:577
 TGMdiDecorFrame.cxx:578
 TGMdiDecorFrame.cxx:579
 TGMdiDecorFrame.cxx:580
 TGMdiDecorFrame.cxx:581
 TGMdiDecorFrame.cxx:582
 TGMdiDecorFrame.cxx:583
 TGMdiDecorFrame.cxx:584
 TGMdiDecorFrame.cxx:585
 TGMdiDecorFrame.cxx:586
 TGMdiDecorFrame.cxx:587
 TGMdiDecorFrame.cxx:588
 TGMdiDecorFrame.cxx:589
 TGMdiDecorFrame.cxx:590
 TGMdiDecorFrame.cxx:591
 TGMdiDecorFrame.cxx:592
 TGMdiDecorFrame.cxx:593
 TGMdiDecorFrame.cxx:594
 TGMdiDecorFrame.cxx:595
 TGMdiDecorFrame.cxx:596
 TGMdiDecorFrame.cxx:597
 TGMdiDecorFrame.cxx:598
 TGMdiDecorFrame.cxx:599
 TGMdiDecorFrame.cxx:600
 TGMdiDecorFrame.cxx:601
 TGMdiDecorFrame.cxx:602
 TGMdiDecorFrame.cxx:603
 TGMdiDecorFrame.cxx:604
 TGMdiDecorFrame.cxx:605
 TGMdiDecorFrame.cxx:606
 TGMdiDecorFrame.cxx:607
 TGMdiDecorFrame.cxx:608
 TGMdiDecorFrame.cxx:609
 TGMdiDecorFrame.cxx:610
 TGMdiDecorFrame.cxx:611
 TGMdiDecorFrame.cxx:612
 TGMdiDecorFrame.cxx:613
 TGMdiDecorFrame.cxx:614
 TGMdiDecorFrame.cxx:615
 TGMdiDecorFrame.cxx:616
 TGMdiDecorFrame.cxx:617
 TGMdiDecorFrame.cxx:618
 TGMdiDecorFrame.cxx:619
 TGMdiDecorFrame.cxx:620
 TGMdiDecorFrame.cxx:621
 TGMdiDecorFrame.cxx:622
 TGMdiDecorFrame.cxx:623
 TGMdiDecorFrame.cxx:624
 TGMdiDecorFrame.cxx:625
 TGMdiDecorFrame.cxx:626
 TGMdiDecorFrame.cxx:627
 TGMdiDecorFrame.cxx:628
 TGMdiDecorFrame.cxx:629
 TGMdiDecorFrame.cxx:630
 TGMdiDecorFrame.cxx:631
 TGMdiDecorFrame.cxx:632
 TGMdiDecorFrame.cxx:633
 TGMdiDecorFrame.cxx:634
 TGMdiDecorFrame.cxx:635
 TGMdiDecorFrame.cxx:636
 TGMdiDecorFrame.cxx:637
 TGMdiDecorFrame.cxx:638
 TGMdiDecorFrame.cxx:639
 TGMdiDecorFrame.cxx:640
 TGMdiDecorFrame.cxx:641
 TGMdiDecorFrame.cxx:642
 TGMdiDecorFrame.cxx:643
 TGMdiDecorFrame.cxx:644
 TGMdiDecorFrame.cxx:645
 TGMdiDecorFrame.cxx:646
 TGMdiDecorFrame.cxx:647
 TGMdiDecorFrame.cxx:648
 TGMdiDecorFrame.cxx:649
 TGMdiDecorFrame.cxx:650
 TGMdiDecorFrame.cxx:651
 TGMdiDecorFrame.cxx:652
 TGMdiDecorFrame.cxx:653
 TGMdiDecorFrame.cxx:654
 TGMdiDecorFrame.cxx:655
 TGMdiDecorFrame.cxx:656
 TGMdiDecorFrame.cxx:657
 TGMdiDecorFrame.cxx:658
 TGMdiDecorFrame.cxx:659
 TGMdiDecorFrame.cxx:660
 TGMdiDecorFrame.cxx:661
 TGMdiDecorFrame.cxx:662
 TGMdiDecorFrame.cxx:663
 TGMdiDecorFrame.cxx:664
 TGMdiDecorFrame.cxx:665
 TGMdiDecorFrame.cxx:666
 TGMdiDecorFrame.cxx:667
 TGMdiDecorFrame.cxx:668
 TGMdiDecorFrame.cxx:669
 TGMdiDecorFrame.cxx:670
 TGMdiDecorFrame.cxx:671
 TGMdiDecorFrame.cxx:672
 TGMdiDecorFrame.cxx:673
 TGMdiDecorFrame.cxx:674
 TGMdiDecorFrame.cxx:675
 TGMdiDecorFrame.cxx:676
 TGMdiDecorFrame.cxx:677
 TGMdiDecorFrame.cxx:678
 TGMdiDecorFrame.cxx:679
 TGMdiDecorFrame.cxx:680
 TGMdiDecorFrame.cxx:681
 TGMdiDecorFrame.cxx:682
 TGMdiDecorFrame.cxx:683
 TGMdiDecorFrame.cxx:684
 TGMdiDecorFrame.cxx:685
 TGMdiDecorFrame.cxx:686
 TGMdiDecorFrame.cxx:687
 TGMdiDecorFrame.cxx:688
 TGMdiDecorFrame.cxx:689
 TGMdiDecorFrame.cxx:690
 TGMdiDecorFrame.cxx:691
 TGMdiDecorFrame.cxx:692
 TGMdiDecorFrame.cxx:693
 TGMdiDecorFrame.cxx:694
 TGMdiDecorFrame.cxx:695
 TGMdiDecorFrame.cxx:696
 TGMdiDecorFrame.cxx:697
 TGMdiDecorFrame.cxx:698
 TGMdiDecorFrame.cxx:699
 TGMdiDecorFrame.cxx:700
 TGMdiDecorFrame.cxx:701
 TGMdiDecorFrame.cxx:702
 TGMdiDecorFrame.cxx:703
 TGMdiDecorFrame.cxx:704
 TGMdiDecorFrame.cxx:705
 TGMdiDecorFrame.cxx:706
 TGMdiDecorFrame.cxx:707
 TGMdiDecorFrame.cxx:708
 TGMdiDecorFrame.cxx:709
 TGMdiDecorFrame.cxx:710
 TGMdiDecorFrame.cxx:711
 TGMdiDecorFrame.cxx:712
 TGMdiDecorFrame.cxx:713
 TGMdiDecorFrame.cxx:714
 TGMdiDecorFrame.cxx:715
 TGMdiDecorFrame.cxx:716
 TGMdiDecorFrame.cxx:717
 TGMdiDecorFrame.cxx:718
 TGMdiDecorFrame.cxx:719
 TGMdiDecorFrame.cxx:720
 TGMdiDecorFrame.cxx:721
 TGMdiDecorFrame.cxx:722
 TGMdiDecorFrame.cxx:723
 TGMdiDecorFrame.cxx:724
 TGMdiDecorFrame.cxx:725
 TGMdiDecorFrame.cxx:726
 TGMdiDecorFrame.cxx:727
 TGMdiDecorFrame.cxx:728
 TGMdiDecorFrame.cxx:729
 TGMdiDecorFrame.cxx:730
 TGMdiDecorFrame.cxx:731
 TGMdiDecorFrame.cxx:732
 TGMdiDecorFrame.cxx:733
 TGMdiDecorFrame.cxx:734
 TGMdiDecorFrame.cxx:735
 TGMdiDecorFrame.cxx:736
 TGMdiDecorFrame.cxx:737
 TGMdiDecorFrame.cxx:738
 TGMdiDecorFrame.cxx:739
 TGMdiDecorFrame.cxx:740
 TGMdiDecorFrame.cxx:741
 TGMdiDecorFrame.cxx:742
 TGMdiDecorFrame.cxx:743
 TGMdiDecorFrame.cxx:744
 TGMdiDecorFrame.cxx:745
 TGMdiDecorFrame.cxx:746
 TGMdiDecorFrame.cxx:747
 TGMdiDecorFrame.cxx:748
 TGMdiDecorFrame.cxx:749
 TGMdiDecorFrame.cxx:750
 TGMdiDecorFrame.cxx:751
 TGMdiDecorFrame.cxx:752
 TGMdiDecorFrame.cxx:753
 TGMdiDecorFrame.cxx:754
 TGMdiDecorFrame.cxx:755
 TGMdiDecorFrame.cxx:756
 TGMdiDecorFrame.cxx:757
 TGMdiDecorFrame.cxx:758
 TGMdiDecorFrame.cxx:759
 TGMdiDecorFrame.cxx:760
 TGMdiDecorFrame.cxx:761
 TGMdiDecorFrame.cxx:762
 TGMdiDecorFrame.cxx:763
 TGMdiDecorFrame.cxx:764
 TGMdiDecorFrame.cxx:765
 TGMdiDecorFrame.cxx:766
 TGMdiDecorFrame.cxx:767
 TGMdiDecorFrame.cxx:768
 TGMdiDecorFrame.cxx:769
 TGMdiDecorFrame.cxx:770
 TGMdiDecorFrame.cxx:771
 TGMdiDecorFrame.cxx:772
 TGMdiDecorFrame.cxx:773
 TGMdiDecorFrame.cxx:774
 TGMdiDecorFrame.cxx:775
 TGMdiDecorFrame.cxx:776
 TGMdiDecorFrame.cxx:777
 TGMdiDecorFrame.cxx:778
 TGMdiDecorFrame.cxx:779
 TGMdiDecorFrame.cxx:780
 TGMdiDecorFrame.cxx:781
 TGMdiDecorFrame.cxx:782
 TGMdiDecorFrame.cxx:783
 TGMdiDecorFrame.cxx:784
 TGMdiDecorFrame.cxx:785
 TGMdiDecorFrame.cxx:786
 TGMdiDecorFrame.cxx:787
 TGMdiDecorFrame.cxx:788
 TGMdiDecorFrame.cxx:789
 TGMdiDecorFrame.cxx:790
 TGMdiDecorFrame.cxx:791
 TGMdiDecorFrame.cxx:792
 TGMdiDecorFrame.cxx:793
 TGMdiDecorFrame.cxx:794
 TGMdiDecorFrame.cxx:795
 TGMdiDecorFrame.cxx:796
 TGMdiDecorFrame.cxx:797
 TGMdiDecorFrame.cxx:798
 TGMdiDecorFrame.cxx:799
 TGMdiDecorFrame.cxx:800
 TGMdiDecorFrame.cxx:801
 TGMdiDecorFrame.cxx:802
 TGMdiDecorFrame.cxx:803
 TGMdiDecorFrame.cxx:804
 TGMdiDecorFrame.cxx:805
 TGMdiDecorFrame.cxx:806
 TGMdiDecorFrame.cxx:807
 TGMdiDecorFrame.cxx:808
 TGMdiDecorFrame.cxx:809
 TGMdiDecorFrame.cxx:810
 TGMdiDecorFrame.cxx:811
 TGMdiDecorFrame.cxx:812
 TGMdiDecorFrame.cxx:813
 TGMdiDecorFrame.cxx:814
 TGMdiDecorFrame.cxx:815
 TGMdiDecorFrame.cxx:816
 TGMdiDecorFrame.cxx:817
 TGMdiDecorFrame.cxx:818
 TGMdiDecorFrame.cxx:819
 TGMdiDecorFrame.cxx:820
 TGMdiDecorFrame.cxx:821
 TGMdiDecorFrame.cxx:822
 TGMdiDecorFrame.cxx:823
 TGMdiDecorFrame.cxx:824
 TGMdiDecorFrame.cxx:825
 TGMdiDecorFrame.cxx:826
 TGMdiDecorFrame.cxx:827
 TGMdiDecorFrame.cxx:828
 TGMdiDecorFrame.cxx:829
 TGMdiDecorFrame.cxx:830
 TGMdiDecorFrame.cxx:831
 TGMdiDecorFrame.cxx:832
 TGMdiDecorFrame.cxx:833
 TGMdiDecorFrame.cxx:834
 TGMdiDecorFrame.cxx:835
 TGMdiDecorFrame.cxx:836
 TGMdiDecorFrame.cxx:837
 TGMdiDecorFrame.cxx:838
 TGMdiDecorFrame.cxx:839
 TGMdiDecorFrame.cxx:840
 TGMdiDecorFrame.cxx:841
 TGMdiDecorFrame.cxx:842
 TGMdiDecorFrame.cxx:843
 TGMdiDecorFrame.cxx:844
 TGMdiDecorFrame.cxx:845
 TGMdiDecorFrame.cxx:846
 TGMdiDecorFrame.cxx:847
 TGMdiDecorFrame.cxx:848
 TGMdiDecorFrame.cxx:849
 TGMdiDecorFrame.cxx:850
 TGMdiDecorFrame.cxx:851
 TGMdiDecorFrame.cxx:852
 TGMdiDecorFrame.cxx:853
 TGMdiDecorFrame.cxx:854
 TGMdiDecorFrame.cxx:855
 TGMdiDecorFrame.cxx:856
 TGMdiDecorFrame.cxx:857
 TGMdiDecorFrame.cxx:858
 TGMdiDecorFrame.cxx:859
 TGMdiDecorFrame.cxx:860
 TGMdiDecorFrame.cxx:861
 TGMdiDecorFrame.cxx:862
 TGMdiDecorFrame.cxx:863
 TGMdiDecorFrame.cxx:864
 TGMdiDecorFrame.cxx:865
 TGMdiDecorFrame.cxx:866
 TGMdiDecorFrame.cxx:867
 TGMdiDecorFrame.cxx:868
 TGMdiDecorFrame.cxx:869
 TGMdiDecorFrame.cxx:870
 TGMdiDecorFrame.cxx:871
 TGMdiDecorFrame.cxx:872
 TGMdiDecorFrame.cxx:873
 TGMdiDecorFrame.cxx:874
 TGMdiDecorFrame.cxx:875
 TGMdiDecorFrame.cxx:876
 TGMdiDecorFrame.cxx:877
 TGMdiDecorFrame.cxx:878
 TGMdiDecorFrame.cxx:879
 TGMdiDecorFrame.cxx:880
 TGMdiDecorFrame.cxx:881
 TGMdiDecorFrame.cxx:882
 TGMdiDecorFrame.cxx:883
 TGMdiDecorFrame.cxx:884
 TGMdiDecorFrame.cxx:885
 TGMdiDecorFrame.cxx:886
 TGMdiDecorFrame.cxx:887
 TGMdiDecorFrame.cxx:888
 TGMdiDecorFrame.cxx:889
 TGMdiDecorFrame.cxx:890
 TGMdiDecorFrame.cxx:891
 TGMdiDecorFrame.cxx:892
 TGMdiDecorFrame.cxx:893
 TGMdiDecorFrame.cxx:894
 TGMdiDecorFrame.cxx:895
 TGMdiDecorFrame.cxx:896
 TGMdiDecorFrame.cxx:897
 TGMdiDecorFrame.cxx:898
 TGMdiDecorFrame.cxx:899
 TGMdiDecorFrame.cxx:900
 TGMdiDecorFrame.cxx:901
 TGMdiDecorFrame.cxx:902
 TGMdiDecorFrame.cxx:903
 TGMdiDecorFrame.cxx:904
 TGMdiDecorFrame.cxx:905
 TGMdiDecorFrame.cxx:906
 TGMdiDecorFrame.cxx:907
 TGMdiDecorFrame.cxx:908
 TGMdiDecorFrame.cxx:909
 TGMdiDecorFrame.cxx:910
 TGMdiDecorFrame.cxx:911
 TGMdiDecorFrame.cxx:912
 TGMdiDecorFrame.cxx:913
 TGMdiDecorFrame.cxx:914
 TGMdiDecorFrame.cxx:915
 TGMdiDecorFrame.cxx:916
 TGMdiDecorFrame.cxx:917
 TGMdiDecorFrame.cxx:918
 TGMdiDecorFrame.cxx:919
 TGMdiDecorFrame.cxx:920
 TGMdiDecorFrame.cxx:921
 TGMdiDecorFrame.cxx:922
 TGMdiDecorFrame.cxx:923
 TGMdiDecorFrame.cxx:924
 TGMdiDecorFrame.cxx:925
 TGMdiDecorFrame.cxx:926
 TGMdiDecorFrame.cxx:927
 TGMdiDecorFrame.cxx:928
 TGMdiDecorFrame.cxx:929
 TGMdiDecorFrame.cxx:930
 TGMdiDecorFrame.cxx:931
 TGMdiDecorFrame.cxx:932
 TGMdiDecorFrame.cxx:933
 TGMdiDecorFrame.cxx:934
 TGMdiDecorFrame.cxx:935
 TGMdiDecorFrame.cxx:936
 TGMdiDecorFrame.cxx:937
 TGMdiDecorFrame.cxx:938
 TGMdiDecorFrame.cxx:939
 TGMdiDecorFrame.cxx:940
 TGMdiDecorFrame.cxx:941
 TGMdiDecorFrame.cxx:942
 TGMdiDecorFrame.cxx:943
 TGMdiDecorFrame.cxx:944
 TGMdiDecorFrame.cxx:945
 TGMdiDecorFrame.cxx:946
 TGMdiDecorFrame.cxx:947
 TGMdiDecorFrame.cxx:948
 TGMdiDecorFrame.cxx:949
 TGMdiDecorFrame.cxx:950
 TGMdiDecorFrame.cxx:951
 TGMdiDecorFrame.cxx:952
 TGMdiDecorFrame.cxx:953
 TGMdiDecorFrame.cxx:954
 TGMdiDecorFrame.cxx:955
 TGMdiDecorFrame.cxx:956
 TGMdiDecorFrame.cxx:957
 TGMdiDecorFrame.cxx:958
 TGMdiDecorFrame.cxx:959
 TGMdiDecorFrame.cxx:960
 TGMdiDecorFrame.cxx:961
 TGMdiDecorFrame.cxx:962
 TGMdiDecorFrame.cxx:963
 TGMdiDecorFrame.cxx:964
 TGMdiDecorFrame.cxx:965
 TGMdiDecorFrame.cxx:966
 TGMdiDecorFrame.cxx:967
 TGMdiDecorFrame.cxx:968
 TGMdiDecorFrame.cxx:969
 TGMdiDecorFrame.cxx:970
 TGMdiDecorFrame.cxx:971
 TGMdiDecorFrame.cxx:972
 TGMdiDecorFrame.cxx:973
 TGMdiDecorFrame.cxx:974
 TGMdiDecorFrame.cxx:975
 TGMdiDecorFrame.cxx:976
 TGMdiDecorFrame.cxx:977
 TGMdiDecorFrame.cxx:978
 TGMdiDecorFrame.cxx:979
 TGMdiDecorFrame.cxx:980
 TGMdiDecorFrame.cxx:981
 TGMdiDecorFrame.cxx:982
 TGMdiDecorFrame.cxx:983
 TGMdiDecorFrame.cxx:984
 TGMdiDecorFrame.cxx:985
 TGMdiDecorFrame.cxx:986
 TGMdiDecorFrame.cxx:987
 TGMdiDecorFrame.cxx:988
 TGMdiDecorFrame.cxx:989
 TGMdiDecorFrame.cxx:990
 TGMdiDecorFrame.cxx:991
 TGMdiDecorFrame.cxx:992
 TGMdiDecorFrame.cxx:993
 TGMdiDecorFrame.cxx:994
 TGMdiDecorFrame.cxx:995
 TGMdiDecorFrame.cxx:996
 TGMdiDecorFrame.cxx:997
 TGMdiDecorFrame.cxx:998
 TGMdiDecorFrame.cxx:999
 TGMdiDecorFrame.cxx:1000
 TGMdiDecorFrame.cxx:1001
 TGMdiDecorFrame.cxx:1002
 TGMdiDecorFrame.cxx:1003
 TGMdiDecorFrame.cxx:1004
 TGMdiDecorFrame.cxx:1005
 TGMdiDecorFrame.cxx:1006
 TGMdiDecorFrame.cxx:1007
 TGMdiDecorFrame.cxx:1008
 TGMdiDecorFrame.cxx:1009
 TGMdiDecorFrame.cxx:1010
 TGMdiDecorFrame.cxx:1011
 TGMdiDecorFrame.cxx:1012
 TGMdiDecorFrame.cxx:1013
 TGMdiDecorFrame.cxx:1014
 TGMdiDecorFrame.cxx:1015
 TGMdiDecorFrame.cxx:1016
 TGMdiDecorFrame.cxx:1017
 TGMdiDecorFrame.cxx:1018
 TGMdiDecorFrame.cxx:1019
 TGMdiDecorFrame.cxx:1020
 TGMdiDecorFrame.cxx:1021
 TGMdiDecorFrame.cxx:1022
 TGMdiDecorFrame.cxx:1023
 TGMdiDecorFrame.cxx:1024
 TGMdiDecorFrame.cxx:1025
 TGMdiDecorFrame.cxx:1026
 TGMdiDecorFrame.cxx:1027
 TGMdiDecorFrame.cxx:1028
 TGMdiDecorFrame.cxx:1029
 TGMdiDecorFrame.cxx:1030
 TGMdiDecorFrame.cxx:1031
 TGMdiDecorFrame.cxx:1032
 TGMdiDecorFrame.cxx:1033
 TGMdiDecorFrame.cxx:1034
 TGMdiDecorFrame.cxx:1035
 TGMdiDecorFrame.cxx:1036
 TGMdiDecorFrame.cxx:1037
 TGMdiDecorFrame.cxx:1038
 TGMdiDecorFrame.cxx:1039
 TGMdiDecorFrame.cxx:1040
 TGMdiDecorFrame.cxx:1041
 TGMdiDecorFrame.cxx:1042
 TGMdiDecorFrame.cxx:1043
 TGMdiDecorFrame.cxx:1044
 TGMdiDecorFrame.cxx:1045
 TGMdiDecorFrame.cxx:1046
 TGMdiDecorFrame.cxx:1047
 TGMdiDecorFrame.cxx:1048
 TGMdiDecorFrame.cxx:1049
 TGMdiDecorFrame.cxx:1050
 TGMdiDecorFrame.cxx:1051
 TGMdiDecorFrame.cxx:1052
 TGMdiDecorFrame.cxx:1053
 TGMdiDecorFrame.cxx:1054
 TGMdiDecorFrame.cxx:1055
 TGMdiDecorFrame.cxx:1056
 TGMdiDecorFrame.cxx:1057
 TGMdiDecorFrame.cxx:1058
 TGMdiDecorFrame.cxx:1059
 TGMdiDecorFrame.cxx:1060
 TGMdiDecorFrame.cxx:1061
 TGMdiDecorFrame.cxx:1062
 TGMdiDecorFrame.cxx:1063
 TGMdiDecorFrame.cxx:1064
 TGMdiDecorFrame.cxx:1065
 TGMdiDecorFrame.cxx:1066
 TGMdiDecorFrame.cxx:1067
 TGMdiDecorFrame.cxx:1068
 TGMdiDecorFrame.cxx:1069
 TGMdiDecorFrame.cxx:1070
 TGMdiDecorFrame.cxx:1071
 TGMdiDecorFrame.cxx:1072
 TGMdiDecorFrame.cxx:1073
 TGMdiDecorFrame.cxx:1074
 TGMdiDecorFrame.cxx:1075
 TGMdiDecorFrame.cxx:1076
 TGMdiDecorFrame.cxx:1077
 TGMdiDecorFrame.cxx:1078
 TGMdiDecorFrame.cxx:1079
 TGMdiDecorFrame.cxx:1080
 TGMdiDecorFrame.cxx:1081
 TGMdiDecorFrame.cxx:1082
 TGMdiDecorFrame.cxx:1083
 TGMdiDecorFrame.cxx:1084
 TGMdiDecorFrame.cxx:1085
 TGMdiDecorFrame.cxx:1086
 TGMdiDecorFrame.cxx:1087
 TGMdiDecorFrame.cxx:1088
 TGMdiDecorFrame.cxx:1089
 TGMdiDecorFrame.cxx:1090
 TGMdiDecorFrame.cxx:1091
 TGMdiDecorFrame.cxx:1092
 TGMdiDecorFrame.cxx:1093
 TGMdiDecorFrame.cxx:1094
 TGMdiDecorFrame.cxx:1095
 TGMdiDecorFrame.cxx:1096
 TGMdiDecorFrame.cxx:1097
 TGMdiDecorFrame.cxx:1098
 TGMdiDecorFrame.cxx:1099
 TGMdiDecorFrame.cxx:1100
 TGMdiDecorFrame.cxx:1101
 TGMdiDecorFrame.cxx:1102
 TGMdiDecorFrame.cxx:1103
 TGMdiDecorFrame.cxx:1104
 TGMdiDecorFrame.cxx:1105
 TGMdiDecorFrame.cxx:1106
 TGMdiDecorFrame.cxx:1107
 TGMdiDecorFrame.cxx:1108
 TGMdiDecorFrame.cxx:1109
 TGMdiDecorFrame.cxx:1110
 TGMdiDecorFrame.cxx:1111
 TGMdiDecorFrame.cxx:1112
 TGMdiDecorFrame.cxx:1113
 TGMdiDecorFrame.cxx:1114
 TGMdiDecorFrame.cxx:1115
 TGMdiDecorFrame.cxx:1116
 TGMdiDecorFrame.cxx:1117
 TGMdiDecorFrame.cxx:1118
 TGMdiDecorFrame.cxx:1119
 TGMdiDecorFrame.cxx:1120
 TGMdiDecorFrame.cxx:1121
 TGMdiDecorFrame.cxx:1122
 TGMdiDecorFrame.cxx:1123
 TGMdiDecorFrame.cxx:1124
 TGMdiDecorFrame.cxx:1125
 TGMdiDecorFrame.cxx:1126
 TGMdiDecorFrame.cxx:1127
 TGMdiDecorFrame.cxx:1128
 TGMdiDecorFrame.cxx:1129
 TGMdiDecorFrame.cxx:1130
 TGMdiDecorFrame.cxx:1131
 TGMdiDecorFrame.cxx:1132
 TGMdiDecorFrame.cxx:1133
 TGMdiDecorFrame.cxx:1134
 TGMdiDecorFrame.cxx:1135