ROOT logo
// @(#)root/gui:$Id: TGTextView.cxx 35582 2010-09-22 13:38:27Z bellenot $
// Author: Fons Rademakers   1/7/2000

/*************************************************************************
 * 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.

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGTextView                                                           //
//                                                                      //
// A TGTextView is a text viewer widget. It is a specialization of      //
// TGView. It uses the TGText class (which contains all text            //
// manipulation code, i.e. loading a file in memory, changing,          //
// removing lines, etc.). Use a TGTextView to view non-editable text.   //
// For supported messages see TGView.                                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGTextView.h"
#include "TGScrollBar.h"
#include "TGResourcePool.h"
#include "TSystem.h"
#include "TGDNDManager.h"
#include "TBufferFile.h"
#include "TSystemFile.h"
#include "TObjString.h"
#include "TMacro.h"
#include "TGMsgBox.h"
#include "TUrl.h"
#include "Riostream.h"


const TGFont *TGTextView::fgDefaultFont = 0;
TGGC         *TGTextView::fgDefaultGC = 0;
TGGC         *TGTextView::fgDefaultSelectedGC = 0;
const TGGC   *TGTextView::fgDefaultSelectedBackgroundGC = 0;


//______________________________________________________________________________
Bool_t TViewTimer::Notify()
{
   // Notify when timer times out and reset the timer.

   fView->HandleTimer(this);
   Reset();
   return kFALSE;
}

ClassImp(TGTextView)


//______________________________________________________________________________
void TGTextView::Init(ULong_t back)
{
   // Initialize a text view widget.

   // set in TGResourcePool via .rootrc
   fFont        = GetDefaultFontStruct();
   fNormGC      = GetDefaultGC();
   fSelGC       = GetDefaultSelectedGC();
   fSelbackGC   = GetDefaultSelectedBackgroundGC();

   fWhiteGC = *fClient->GetResourcePool()->GetDocumentBckgndGC();
   fWhiteGC.SetGraphicsExposures(kTRUE);
   fWhiteGC.SetBackground(back);
   fWhiteGC.SetForeground(back);

   fMarkedFromX = 0;
   fMarkedFromY = 0;
   fReadOnly    = kFALSE;
   fIsMarked    = kFALSE;

   fText = new TGText();
   TGView::Clear();

   fClipText = new TGText();

   gVirtualX->GetFontProperties(fFont, fMaxAscent, fMaxDescent);
   fScrollVal.fY = fMaxAscent + fMaxDescent;
   fScrollVal.fX = fMaxWidth = gVirtualX->TextWidth(fFont, "@", 1);

   fScrollTimer = new TViewTimer(this, 75);
   gSystem->AddTimer(fScrollTimer);

   // define 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;
   gVirtualX->SetDNDAware(fId, fDNDTypeList);
   SetDNDTarget(kTRUE);

   gVirtualX->ClearWindow(fCanvas->GetId());
   Layout();
}

//______________________________________________________________________________
TGTextView::TGTextView(const TGWindow *parent, UInt_t w, UInt_t h, Int_t id,
                       UInt_t sboptions, ULong_t back) :
     TGView(parent, w, h, id, 3, 3, kSunkenFrame | kDoubleBorder, sboptions, back)
{
   // Create a text view widget.

   Init(back);
}

//______________________________________________________________________________
TGTextView::TGTextView(const TGWindow *parent, UInt_t w, UInt_t h, TGText *text,
                       Int_t id, UInt_t sboptions, ULong_t back) :
     TGView(parent, w, h, id, 3, 3, kSunkenFrame | kDoubleBorder, sboptions, back)
{
   // Create a text view widget.

   Init(back);
   TGLongPosition pos, srcStart, srcEnd;
   pos.fX = pos.fY = 0;
   srcStart.fX = srcStart.fY = 0;
   srcEnd.fY = text->RowCount()-1;
   srcEnd.fX = text->GetLineLength(srcEnd.fY)-1;
   fText->InsText(pos, text, srcStart, srcEnd);
}

//______________________________________________________________________________
TGTextView::TGTextView(const TGWindow *parent, UInt_t w, UInt_t h,
                       const char *string, Int_t id, UInt_t sboptions,
                       ULong_t back) :
     TGView(parent, w, h, id, 3, 3, kSunkenFrame | kDoubleBorder, sboptions, back)
{
   // Create a text view widget.

   Init(back);
   TGLongPosition pos;
   pos.fX = pos.fY = 0;
   fText->InsText(pos, string);
}

//______________________________________________________________________________
TGTextView::~TGTextView()
{
   // Cleanup text view widget.

   delete fScrollTimer;
   delete fText;
   delete fClipText;
   delete [] fDNDTypeList;
}

//______________________________________________________________________________
void TGTextView::SetBackground(Pixel_t p)
{
   // set background  color

   fCanvas->SetBackgroundColor(p);
   fWhiteGC.SetBackground(p);
   fWhiteGC.SetForeground(p);
}

//______________________________________________________________________________
void TGTextView::SetSelectBack(Pixel_t p)
{
   // set selected text background color

   fSelbackGC.SetBackground(p);
   fSelbackGC.SetForeground(p);
}

//______________________________________________________________________________
void TGTextView::SetSelectFore(Pixel_t p)
{
   // set selected text color 

   fSelGC.SetBackground(p);
   fSelGC.SetForeground(p);
}

//______________________________________________________________________________
void TGTextView::SetText(TGText *text)
{
   // Adopt a new text buffer. The text will be deleted by this object.

   Clear();
   delete fText;
   fText = text;
   Layout();
}

//______________________________________________________________________________
void TGTextView::AddText(TGText *text)
{
   // Add text to the view widget.

   UInt_t h1 = (UInt_t)ToScrYCoord(fText->RowCount());

   fText->AddText(text);
   Layout();

   UInt_t h2 = (UInt_t)ToScrYCoord(fText->RowCount());

   if (h2 <= h1) {
      return;
   }

   if (h2 < fCanvas->GetHeight()) {
      UpdateRegion(0, h1, fCanvas->GetWidth(), h2 - h1);
   }
}

//______________________________________________________________________________
void TGTextView::AddLine(const char *string)
{
   // Add a line of text to the view widget.

   UInt_t h1 = (UInt_t)ToScrYCoord(fText->RowCount());

   AddLineFast(string);
   Layout();

   UInt_t h2 = (UInt_t)ToScrYCoord(fText->RowCount());

   if (h2 <= h1) {
      return;
   }
   if (h2 < fCanvas->GetHeight()) {
      UpdateRegion(0, h1, fCanvas->GetWidth(), h2 - h1);
   }
}

//______________________________________________________________________________
void TGTextView::AddLineFast(const char *string)
{
   // Add a line of text to the view widget.
   // Fast version. Use it if you are going to add
   // several lines, than call Update().

   TGLongPosition pos;
   pos.fX = 0;
   pos.fY = fText->RowCount();
   fText->InsText(pos, string);
}

//______________________________________________________________________________
void TGTextView::Update()
{
   // update the whole window of text view

   Layout();
   fExposedRegion.Empty();
   UpdateRegion(0, 0, fCanvas->GetWidth(), fCanvas->GetHeight());
}

//______________________________________________________________________________
Long_t TGTextView::ReturnLongestLineWidth()
{
   // Return width of longest line.

   Long_t count = 0, longest = 0, width;
   Long_t rows = fText->RowCount();
   while (count < rows) {
      width = ToScrXCoord(fText->GetLineLength(count), count) + fVisible.fX;
      if (width > longest) {
         longest = width;
      }
      count++;
   }
   return longest;
}

//______________________________________________________________________________
Bool_t TGTextView::Search(const char *string, Bool_t direction, Bool_t caseSensitive)
{
   // Search for string in text. If direction is true search forward.
   // Returns true if string is found.

   TGLongPosition pos, pos2;
   pos2.fX = pos2.fY = 0;
   if (fIsMarked) {
      if (!direction) {
         pos2.fX = fMarkedStart.fX;
         pos2.fY = fMarkedStart.fY;
      } else {
         pos2.fX = fMarkedEnd.fX + 1;
         pos2.fY = fMarkedEnd.fY;
      }
   }
   if (!fText->Search(&pos, pos2, string, direction, caseSensitive)) {
      return kFALSE;
   }
   UnMark();
   fIsMarked = kTRUE;
   fMarkedStart.fY = fMarkedEnd.fY = pos.fY;
   fMarkedStart.fX = pos.fX;
   fMarkedEnd.fX = fMarkedStart.fX + strlen(string) - 1;
   pos.fY = ToObjYCoord(fVisible.fY);
   if ((fMarkedStart.fY < pos.fY) ||
       (ToScrYCoord(fMarkedStart.fY) >= (Int_t)fCanvas->GetHeight())) {
      pos.fY = fMarkedStart.fY;
   }
   pos.fX = ToObjXCoord(fVisible.fX, pos.fY);
   if ((fMarkedStart.fX < pos.fX) ||
       (ToScrXCoord(fMarkedStart.fX, pos.fY) >= (Int_t)fCanvas->GetWidth())) {
      pos.fX = fMarkedStart.fX;
   }

   SetVsbPosition((ToScrYCoord(pos.fY) + fVisible.fY)/fScrollVal.fY);
   SetHsbPosition((ToScrXCoord(pos.fX, pos.fY) + fVisible.fX)/fScrollVal.fX);
   UpdateRegion(0, (Int_t)ToScrYCoord(fMarkedStart.fY), fCanvas->GetWidth(),
              UInt_t(ToScrYCoord(fMarkedEnd.fY+1) - ToScrYCoord(fMarkedEnd.fY)));

   return kTRUE;
}

//______________________________________________________________________________
void TGTextView::SetFont(FontStruct_t font)
{
   // Changes text entry font.

   if (font != fFont) {
      fFont = font;
      fNormGC.SetFont(gVirtualX->GetFontHandle(fFont));
      fSelGC.SetFont(gVirtualX->GetFontHandle(fFont));
      fClient->NeedRedraw(this);
   }
}

//______________________________________________________________________________
Long_t TGTextView::ToScrYCoord(Long_t yCoord)
{
   // Convert line number to screen coordinate.

   if (yCoord * (fMaxAscent + fMaxDescent) <= 0) {
      return 0;
   }
   if (yCoord > fText->RowCount()) {
      return fText->RowCount() * (fMaxAscent + fMaxDescent);
   }
   return yCoord * (fMaxAscent + fMaxDescent) - fVisible.fY;
}

//______________________________________________________________________________
Long_t TGTextView::ToScrXCoord(Long_t xCoord, Long_t line)
{
   // Convert column number in specified line to screen coordinate.

   TGLongPosition pos;
   char *buffer;

   pos.fX = 0;
   pos.fY = line;
   Long_t width = fText->GetLineLength(line);
   if (xCoord <= 0 || pos.fY < 0 || width <= 0) {
      return 0;
   }
   if (xCoord > width) {
      xCoord = width;
   }
   buffer = fText->GetLine(pos, xCoord);
   width = gVirtualX->TextWidth(fFont, buffer, (Int_t)xCoord) - fVisible.fX;
   delete [] buffer;

   return width;
}

//______________________________________________________________________________
Long_t TGTextView::ToObjYCoord(Long_t yCoord)
{
   // Convert y screen coordinate to line number.

   return  yCoord / (fMaxAscent + fMaxDescent);
}

//______________________________________________________________________________
Long_t TGTextView::ToObjXCoord(Long_t xCoord, Long_t line)
{
   // Convert x screen coordinate to column in specified line.

   TGLongPosition pos;
   char *buffer, *travelBuffer;
   char charBuffer;

   if (line < 0 || line >= fText->RowCount()) {
      return 0;
   }

   Long_t len = fText->GetLineLength(line);
   pos.fX = 0;
   pos.fY = line;
   if (len <= 0 || xCoord < 0) {
      return 0;
   }

   Long_t viscoord =  xCoord;
   buffer = fText->GetLine(pos, len);
   travelBuffer = buffer;
   charBuffer = *travelBuffer++;
   int cw = gVirtualX->TextWidth(fFont, &charBuffer, 1);

   while (viscoord - cw >= 0 && pos.fX < len) {
      viscoord -= cw;
      pos.fX++;
      charBuffer = *travelBuffer++;
      cw = gVirtualX->TextWidth(fFont, &charBuffer, 1);
   }

   delete [] buffer;
   return pos.fX;
}

//______________________________________________________________________________
void TGTextView::Clear(Option_t *)
{
   // Clear text view widget.

   TGView::Clear();
   fIsMarked  = kFALSE;
   fIsSaved   = kTRUE;
   fMarkedStart.fX = fMarkedStart.fY = 0;
   fMarkedEnd.fX   = fMarkedEnd.fY   = 0;
   fIsMarking = kFALSE;

   delete fText;
   fText = new TGText();
   fText->Clear();
   SendMessage(fMsgWindow, MK_MSG(kC_TEXTVIEW, kTXT_ISMARKED), fWidgetId, kFALSE);
   Marked(kFALSE);
   gVirtualX->ClearWindow(fCanvas->GetId());
   SendMessage(fMsgWindow, MK_MSG(kC_TEXTVIEW, kTXT_DATACHANGE), fWidgetId, 0);
   DataChanged();
   Layout();
}

//______________________________________________________________________________
Bool_t TGTextView::LoadFile(const char *filename, Long_t startpos, Long_t length)
{
   // Load a file in the text view widget. Return false in case file does not
   // exist.

   FILE *fp;
   if (!(fp = fopen(filename, "r")))
      return kFALSE;
   fclose(fp);

   Clear();
   fText->Load(filename, startpos, length);
   Update();
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::LoadBuffer(const char *txtbuf)
{
   // Load text from a text buffer. Return false in case of failure.

   if (!txtbuf || !strlen(txtbuf)) {
      return kFALSE;
   }

   Clear();
   fText->LoadBuffer(txtbuf);
   Update();
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::Copy()
{
   // Copy selected text to clipboard.

   TGLongPosition insPos, startPos, endPos;

   if (!fIsMarked) {
      return kFALSE;
   }
   delete fClipText;
   fClipText   = new TGText();
   insPos.fY   = insPos.fX = 0;
   startPos.fX = fMarkedStart.fX;
   startPos.fY = fMarkedStart.fY;
   endPos.fX   = fMarkedEnd.fX-1;
   endPos.fY   = fMarkedEnd.fY;
   if (endPos.fX == -1) {
      if (endPos.fY > 0) {
         endPos.fY--;
      }
      endPos.fX = fText->GetLineLength(endPos.fY);
      if (endPos.fX < 0) {
         endPos.fX = 0;
      }
   }
   fClipText->InsText(insPos, fText, startPos, endPos);
   gVirtualX->SetPrimarySelectionOwner(fId);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::SelectAll()
{
   // Select all text in the viewer.

   if (fText->RowCount() == 1 && fText->GetLineLength(0) == 0) {
      return kFALSE;
   }
   fIsMarked = kTRUE;
   fMarkedStart.fY = 0;
   fMarkedStart.fX = 0;
   fMarkedEnd.fY = fText->RowCount()-1;
   fMarkedEnd.fX = fText->GetLineLength(fMarkedEnd.fY);
   if (fMarkedEnd.fX < 0) {
      fMarkedEnd.fX = 0;
   }
   UpdateRegion(0, 0, fCanvas->GetWidth(), fCanvas->GetHeight());
   Copy();

   return kTRUE;
}

//______________________________________________________________________________
void TGTextView::DrawRegion(Int_t x, Int_t y, UInt_t w, UInt_t h)
{
   // Draw lines in exposed region.

   char *buffer;

   TGLongPosition pos;
   Long_t xoffset, len, len1, len2;
   Long_t line_count = fText->RowCount();
   Rectangle_t rect;
   rect.fX = x;
   rect.fY = y;
   pos.fY = ToObjYCoord(fVisible.fY + h);
   rect.fHeight = UShort_t(h + ToScrYCoord(pos.fY + 1) - ToScrYCoord(pos.fY));
   pos.fX = ToObjXCoord(fVisible.fX + w, pos.fY);
   rect.fWidth = UShort_t(w + ToScrXCoord(pos.fX + 1, pos.fY) - ToScrXCoord(pos.fX, pos.fY));
   Int_t yloc = rect.fY + (Int_t)fScrollVal.fY;
   pos.fY = ToObjYCoord(fVisible.fY + rect.fY);

   while (pos.fY <= line_count &&
          yloc - fScrollVal.fY <= (Int_t)fCanvas->GetHeight() &&
          yloc <= rect.fY + rect.fHeight) {

      pos.fX = ToObjXCoord(fVisible.fX + rect.fX, pos.fY);
      xoffset = ToScrXCoord(pos.fX, pos.fY);
      len = fText->GetLineLength(pos.fY) - pos.fX;

      gVirtualX->ClearArea(fCanvas->GetId(), x, Int_t(ToScrYCoord(pos.fY)),
                           rect.fWidth, UInt_t(ToScrYCoord(pos.fY+1)-ToScrYCoord(pos.fY)));


      if (len > 0) {
         if (len > ToObjXCoord(fVisible.fX + rect.fX + rect.fWidth, pos.fY) - pos.fX) {
            len = ToObjXCoord(fVisible.fX + rect.fX + rect.fWidth, pos.fY) - pos.fX + 1;
         }
         if (pos.fX == 0) {
            xoffset = -fVisible.fX;
         }
         if (pos.fY >= ToObjYCoord(fVisible.fY)) {
            buffer = fText->GetLine(pos, len);
            Int_t i = 0;
            while (buffer[i] != '\0') {
               if (buffer[i] == '\t') {
                  buffer[i] = ' ';
                  Int_t j = i+1;
                  while (buffer[j] == 16 && buffer[j] != '\0') {
                     buffer[j++] = ' ';
                  }
               }
               i++;
            }

            if (!fIsMarked ||
                pos.fY < fMarkedStart.fY || pos.fY > fMarkedEnd.fY ||
               (pos.fY == fMarkedStart.fY &&
                fMarkedStart.fX >= pos.fX+len &&
                fMarkedStart.fY != fMarkedEnd.fY) ||
               (pos.fY == fMarkedEnd.fY &&
                fMarkedEnd.fX < pos.fX &&
                fMarkedStart.fY != fMarkedEnd.fY) ||
               (fMarkedStart.fY == fMarkedEnd.fY &&
                (fMarkedEnd.fX < pos.fX ||
                 fMarkedStart.fX > pos.fX+len))) {

               gVirtualX->DrawString(fCanvas->GetId(), fNormGC(), Int_t(xoffset),
                                     Int_t(ToScrYCoord(pos.fY+1) - fMaxDescent),
                                     buffer, Int_t(len));
            } else {
               if (pos.fY > fMarkedStart.fY && pos.fY < fMarkedEnd.fY) {
                  len1 = 0;
                  len2 = len;
               } else {
                  if (fMarkedStart.fY == fMarkedEnd.fY) {
                     if (fMarkedStart.fX >= pos.fX &&
                         fMarkedStart.fX <= pos.fX + len) {
                        len1 = fMarkedStart.fX - pos.fX;
                     } else {
                        len1 = 0;
                     }
                     if (fMarkedEnd.fX >= pos.fX &&
                         fMarkedEnd.fX <= pos.fX + len) {
                        len2 = fMarkedEnd.fX - pos.fX - len1;  // +1
                     } else {
                        len2 = len - len1;
                     }
                  } else {
                     if (pos.fY == fMarkedStart.fY) {
                        if (fMarkedStart.fX < pos.fX) {
                           len1 = 0;
                           len2 = len;
                        } else {
                           len1 = fMarkedStart.fX - pos.fX;
                           len2 = len - len1;
                        }
                     } else {
                        if (fMarkedEnd.fX > pos.fX+len) {
                           len1 = 0;
                           len2 = len;
                        } else {
                           len1 = 0 ;
                           len2 = fMarkedEnd.fX - pos.fX;  // +1
                        }
                     }
                  }
               }
               gVirtualX->DrawString(fCanvas->GetId(), fNormGC(),
                                     Int_t(ToScrXCoord(pos.fX, pos.fY)),
                                     Int_t(ToScrYCoord(pos.fY+1) - fMaxDescent),
                                     buffer, Int_t(len1));
               gVirtualX->FillRectangle(fCanvas->GetId(), fSelbackGC(),
                                     Int_t(ToScrXCoord(pos.fX+len1, pos.fY)),
                                     Int_t(ToScrYCoord(pos.fY)),
                                     UInt_t(ToScrXCoord(pos.fX+len1+len2, pos.fY) -
                                     ToScrXCoord(pos.fX+len1, pos.fY)),
                                     UInt_t(ToScrYCoord(pos.fY+1)-ToScrYCoord(pos.fY)));
               gVirtualX->DrawString(fCanvas->GetId(), fSelGC(),
                                     Int_t(ToScrXCoord(pos.fX+len1, pos.fY)),
                                     Int_t(ToScrYCoord(pos.fY+1) - fMaxDescent),
                                     buffer+len1, Int_t(len2));
               gVirtualX->DrawString(fCanvas->GetId(), fNormGC(),
                                     Int_t(ToScrXCoord(pos.fX+len1+len2, pos.fY)),
                                     Int_t(ToScrYCoord(pos.fY+1) - fMaxDescent),
                                     buffer+len1+len2, Int_t(len-(len1+len2)));
            }
            delete [] buffer;
         }
      }
      pos.fY++;
      yloc += Int_t(ToScrYCoord(pos.fY) - ToScrYCoord(pos.fY-1));
   }
}

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

   if (event->fWindow != fCanvas->GetId())
      return kTRUE;

   fMousePos.fY = ToObjYCoord(fVisible.fY + event->fY);
   if (ToScrYCoord(fMousePos.fY+1) >= (Int_t)fCanvas->GetHeight()) {
      fMousePos.fY--;
   }
   fMousePos.fX = ToObjXCoord(fVisible.fX + event->fX, fMousePos.fY);
   if (fMousePos.fX >= ReturnLineLength(fMousePos.fY)) {
      fMousePos.fX--;
   }
   if ((event->fState & kButton1Mask) && fIsMarked && fIsMarking) {
      if (event->fType == kLeaveNotify) {
         if (event->fX < 0) {
            fScrolling = 0;
            return kFALSE;
         }
         if (event->fX >= (Int_t)fCanvas->GetWidth()) {
            fScrolling = 1;
            return kFALSE;
         }
         if (event->fY < 0) {
            fScrolling = 2;
            return kFALSE;
         }
         if (event->fY >= (Int_t)fCanvas->GetHeight()) {
            fScrolling = 3;
            return kFALSE;
         }
      } else {
         fScrolling = -1;
         Mark(fMousePos.fX, fMousePos.fY);
      }
   } else {
      fIsMarking = kFALSE;
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleTimer(TTimer *)
{
   // Handle scroll timer.

   static const Int_t kAutoScrollFudge = 10;
   static const Int_t kAcceleration[kAutoScrollFudge + 1] = {1, 1, 1, 1, 2, 3, 4, 6, 8, 12, 16};

   TGLongPosition size;
   Window_t  dum1, dum2;
   Event_t   ev;
   ev.fType = kButtonPress;
   Int_t x, y;
   Int_t dy = 0;

   if (fMarkedStart.fY == fMarkedEnd.fY) {
      return kFALSE;
   }
   if (fIsMarked && (fScrolling != -1)) {
      // where cursor
      gVirtualX->QueryPointer(fId, dum1, dum2, ev.fXRoot, ev.fYRoot, x, y, ev.fState);

      fMousePos.fY = ToObjYCoord(fVisible.fY + y);

      if (fMousePos.fY >= ReturnLineCount()) {
         fMousePos.fY = ReturnLineCount() - 1;
      }
      if (fMousePos.fY < 0) {
         fMousePos.fY = 0;
      }
      if (ev.fState & kButton1Mask) {

         // Figure scroll amount y
         if (y < kAutoScrollFudge) {
            dy = kAutoScrollFudge - y;
         } else if ((Int_t)fCanvas->GetHeight() - kAutoScrollFudge <= y) {
            dy = fCanvas->GetHeight() - kAutoScrollFudge - y;
         }
         Int_t ady = TMath::Abs(dy) >> 3;

         if (dy) {    
            if (ady > kAutoScrollFudge) ady = kAutoScrollFudge;
            dy = kAcceleration[ady];
         } else {
            dy = 1;
         }

         if (y > (Int_t)fCanvas->GetHeight()) {
            fScrolling = 3;
         }
         if (y < 0) {
            fScrolling = 2;
         }
      } else {
         fScrolling = -1;
      }

      size.fY = ToObjYCoord(fVisible.fY + fCanvas->GetHeight()) - 1;
      size.fX = ToObjXCoord(fVisible.fX + fCanvas->GetWidth(), fMousePos.fY) - 1;
      switch (fScrolling) {
         case -1:
            break;
         case 0:
            if (fVisible.fX == 0) {
               fScrolling = -1;
               break;
            } else {
               SetHsbPosition(fVisible.fX / fScrollVal.fX - 1);
               Mark(ToObjXCoord(fVisible.fX, fMousePos.fY) - 1, fMousePos.fY);
            }
            break;
         case 1:
            if ((Int_t)fCanvas->GetWidth() >= ToScrXCoord(ReturnLineLength(fMousePos.fY), fMousePos.fY)) {
               fScrolling = -1;
               break;
            } else {
               SetHsbPosition(fVisible.fX / fScrollVal.fX + 1);
               Mark(size.fX+1, fMousePos.fY);
            }
            break;
         case 2:
            if (fVisible.fY == 0) {
               fScrolling = -1;
               break;
            } else {
               SetVsbPosition(fVisible.fY/fScrollVal.fY - dy);
               Mark(fMousePos.fX, fMarkedStart.fY - 1);
            }
            break;
         case 3:
            if ((Int_t)fCanvas->GetHeight() >= ToScrYCoord(ReturnLineCount())) {
               fScrolling = -1;
               break;
            } else {
               SetVsbPosition(fVisible.fY/fScrollVal.fY + dy);
               Mark(fMousePos.fX, size.fY + 1);
            }
            break;
         default:
            break;
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleButton(Event_t *event)
{
   // Handle mouse button event in text editor.

   if (event->fWindow != fCanvas->GetId()) {
      return kFALSE;
   }

   if (event->fCode == kButton1) {
      if (event->fType == kButtonPress) {
         if (fIsMarked) {
            if (event->fState & kKeyShiftMask) {
               fIsMarking = kTRUE;
               HandleMotion(event);
               return kTRUE;
            }

            UnMark();
         }
         fIsMarked = kTRUE;
         fIsMarking = kTRUE;
         fMousePos.fY = ToObjYCoord(fVisible.fY + event->fY);
         fMousePos.fX = ToObjXCoord(fVisible.fX + event->fX, fMousePos.fY);
         fMarkedStart.fX = fMarkedEnd.fX = fMousePos.fX;
         fMarkedStart.fY = fMarkedEnd.fY = fMousePos.fY;
      } else {
         fScrolling = -1;
         if ((fMarkedStart.fX == fMarkedEnd.fX) &&
             (fMarkedStart.fY == fMarkedEnd.fY)) {
            fIsMarked = kFALSE;
            SendMessage(fMsgWindow, MK_MSG(kC_TEXTVIEW, kTXT_ISMARKED),
                        fWidgetId, kFALSE);
            Marked(kFALSE);
         } else {
            SendMessage(fMsgWindow, MK_MSG(kC_TEXTVIEW, kTXT_ISMARKED),
                        fWidgetId, kTRUE);
            Marked(kTRUE);
         }
         fIsMarking = kFALSE;
      }
   } else if (event->fCode == kButton4) {
      // move three lines up
      if (fVisible.fY > 0) {
         Long_t amount = fVisible.fY / fScrollVal.fY - 3;
         SetVsbPosition((amount >= 0) ? amount : 0);
         //Mark(fMousePos.fX, fMarkedStart.fY - 3);
      }
   } else if (event->fCode == kButton5) {
      // move three lines down
      if ((Int_t)fCanvas->GetHeight() < ToScrYCoord(ReturnLineCount())) {
         TGLongPosition size;
         size.fY = ToObjYCoord(fVisible.fY + fCanvas->GetHeight()) - 1;
         SetVsbPosition(fVisible.fY / fScrollVal.fY + 3);
         //Mark(fMousePos.fX, size.fY + 3);
      }
   } else if (event->fType == kButtonPress) {
      if (event->fCode == kButton2) {
         SendMessage(fMsgWindow, MK_MSG(kC_TEXTVIEW, kTXT_CLICK2),
                     fWidgetId, (event->fYRoot << 16) | event->fXRoot);
         UnMark();
      } else if (event->fCode == kButton3) {
         SendMessage(fMsgWindow, MK_MSG(kC_TEXTVIEW, kTXT_CLICK3),
                     fWidgetId, (event->fYRoot << 16) | event->fXRoot);
      }
   }

   if (event->fType == kButtonRelease) {
      if (event->fCode == kButton1) {
         if (fIsMarked) {
            Copy();
         }
      }
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleDoubleClick(Event_t *event)
{
   // handle double click

   if (event->fWindow != fCanvas->GetId()) {
      return kFALSE;
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleMotion(Event_t *event)
{
   // Handle mouse motion event in the text editor widget.

   if ((ToObjYCoord(fVisible.fY+event->fY) == fMousePos.fY) &&
       (ToObjXCoord(fVisible.fX+event->fX, ToObjYCoord(fVisible.fY + event->fY)) == fMousePos.fX)) {
      return kTRUE;
   }

   if (fScrolling != -1) {
      return kTRUE;
   }

   fMousePos.fY = ToObjYCoord(fVisible.fY + event->fY);
   if (fMousePos.fY >= ReturnLineCount()) {
      fMousePos.fY = ReturnLineCount()-1;
   }
   fMousePos.fX = ToObjXCoord(fVisible.fX + event->fX, fMousePos.fY);

   if (fMousePos.fX > ReturnLineLength(fMousePos.fY)) {
      fMousePos.fX = ReturnLineLength(fMousePos.fY);
   }
   if (event->fWindow != fCanvas->GetId()) {
      return kTRUE;
   }

   if (!fIsMarking) {
      return kTRUE;
   }
   if (event->fX < 0) {
      return kTRUE;
   }
   if (event->fX >= (Int_t)fCanvas->GetWidth()) {
      return kTRUE;
   }
   if (event->fY < 0) {
      return kTRUE;
   }
   if (event->fY >= (Int_t)fCanvas->GetHeight()) {
      return kTRUE;
   }
   Mark(fMousePos.fX, fMousePos.fY);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleSelectionClear(Event_t * /*event*/)
{
   // Handle selection clear event.

   if (fIsMarked) {
      UnMark();
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleSelectionRequest(Event_t *event)
{
   // Handle request to send current clipboard contents to requestor window.

   Event_t reply;
   char *buffer, *temp_buffer;
   Long_t len, prev_len, temp_len, count;
   TGLongPosition pos;
   Atom_t targets[2];
   Atom_t type;

   reply.fType    = kSelectionNotify;
   reply.fTime    = event->fTime;
   reply.fUser[0] = event->fUser[0];     // requestor
   reply.fUser[1] = event->fUser[1];     // selection
   reply.fUser[2] = event->fUser[2];     // target
   reply.fUser[3] = event->fUser[3];     // property

   targets[0] = gVirtualX->InternAtom("TARGETS", kFALSE);
   targets[1] = gVirtualX->InternAtom("XA_STRING", kFALSE);

   if ((Atom_t)event->fUser[2] == targets[0]) {
      type = gVirtualX->InternAtom("XA_ATOM", kFALSE);
      gVirtualX->ChangeProperty((Window_t) event->fUser[0], (Atom_t) event->fUser[3],
                                type, (UChar_t*) targets, (Int_t) 2);

      gVirtualX->SendEvent((Window_t)event->fUser[0], &reply);
      return kTRUE;
   }

   len = 0;
   for (count = 0; count < fClipText->RowCount(); count++) {
      len += fClipText->GetLineLength(count)+1;
   }
   len--;  // remove \n for last line

   pos.fY = pos.fX = 0;
   buffer = new char[len+1];
   prev_len = temp_len = 0;
   for (pos.fY = 0; pos.fY < fClipText->RowCount(); pos.fY++) {
      temp_len = fClipText->GetLineLength(pos.fY);
      if (temp_len < 0) break;
      temp_buffer = fClipText->GetLine(pos, temp_len);
      strncpy(buffer+prev_len, temp_buffer, (UInt_t)temp_len);
      if (pos.fY < fClipText->RowCount()-1) {
         buffer[prev_len+temp_len] = 10;   // \n
         prev_len += temp_len+1;
      } else
         prev_len += temp_len;
      delete [] temp_buffer;
   }
   buffer[len] = '\0';

   // get rid of special tab fillers
   ULong_t i = 0;
   while (buffer[i]) {
      if (buffer[i] == '\t') {
         ULong_t j = i + 1;
         while (buffer[j] == 16 && buffer[j]) {
            j++;
         }
         strcpy(buffer+i+1, buffer+j);
         len -= j - i - 1;
      }
      i++;
   }

   gVirtualX->ChangeProperty((Window_t) event->fUser[0], (Atom_t) event->fUser[3],
                             (Atom_t) event->fUser[2], (UChar_t*) buffer,
                             (Int_t) len);

   delete [] buffer;

   gVirtualX->SendEvent((Window_t)event->fUser[0], &reply);

   return kTRUE;
}

//______________________________________________________________________________
static Bool_t IsTextFile(const char *candidate)
{
   // Returns true if given a text file
   // Uses the specification given on p86 of the Camel book
   // - Text files have no NULLs in the first block
   // - and less than 30% of characters with high bit set

   Int_t i;
   Int_t nchars;
   Int_t weirdcount = 0;
   char buffer[512];
   FILE *infile;
   FileStat_t buf;

   gSystem->GetPathInfo(candidate, buf);
   if (!(buf.fMode & kS_IFREG))
      return kFALSE;

   infile = fopen(candidate, "r");
   if (infile) {
      // Read a block
      nchars = fread(buffer, 1, 512, infile);
      fclose (infile);
      // Examine the block
      for (i = 0; i < nchars; i++) {
         if (buffer[i] & 128)
            weirdcount++;
         if (buffer[i] == '\0')
            // No NULLs in text files
            return kFALSE;
      }
      if ((nchars > 0) && ((weirdcount * 100 / nchars) > 30))
         return kFALSE;
   } else {
      // Couldn't open it. Not a text file then
      return kFALSE;
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleDNDDrop(TDNDData *data)
{
   // Handle Drop event

   static Atom_t rootObj = gVirtualX->InternAtom("application/root", kFALSE);
   static Atom_t uriObj  = gVirtualX->InternAtom("text/uri-list", kFALSE);

   if (fText->RowCount() > 1) {
      Int_t ret;
      new TGMsgBox(fClient->GetRoot(), GetMainFrame(),
                   "Overvrite", "Do you want to replace existing text?",
                   kMBIconExclamation, kMBYes | kMBNo, &ret);
      if (ret == kMBNo)
         return kTRUE;
   }
   if (data->fDataType == rootObj) {
      TBufferFile buf(TBuffer::kRead, data->fDataLength, (void *)data->fData);
      buf.SetReadMode();
      TObject *obj = (TObject *)buf.ReadObjectAny(TObject::Class());
      if (obj->InheritsFrom("TMacro")) {
         TMacro *macro = (TMacro *)obj;
         TIter next(macro->GetListOfLines());
         TObjString *objs;
         while ((objs = (TObjString*) next())) {
            AddLine(objs->GetName());
         }
      }
      else if (obj->InheritsFrom("TSystemFile")) {
         TSystemFile *sfile = (TSystemFile *)obj;
         LoadFile(sfile->GetName());
         DataDropped(sfile->GetName());
      }
      return kTRUE;
   }
   else if (data->fDataType == uriObj) {
      TString sfname((char *)data->fData);
      if (sfname.Length() > 7) {
         sfname.ReplaceAll("\r\n", "");
         TUrl uri(sfname.Data());
         if (IsTextFile(uri.GetFile())) {
            LoadFile(uri.GetFile());
            DataDropped(uri.GetFile());
         }
      }
   }
   return kFALSE;
}

//______________________________________________________________________________
Atom_t TGTextView::HandleDNDPosition(Int_t /*x*/, Int_t /*y*/, Atom_t action,
                                      Int_t /*xroot*/, Int_t /*yroot*/)
{
   // Handle Drag position event

   return action;
}

//______________________________________________________________________________
Atom_t TGTextView::HandleDNDEnter(Atom_t *typelist)
{
   // Handle Drag Enter event

   static Atom_t rootObj  = gVirtualX->InternAtom("application/root", kFALSE);
   static Atom_t uriObj  = gVirtualX->InternAtom("text/uri-list", kFALSE);
   Atom_t ret = kNone;
   for (int i = 0; typelist[i] != kNone; ++i) {
      if (typelist[i] == rootObj)
         ret = rootObj;
      if (typelist[i] == uriObj)
         ret = uriObj;
   }
   return ret;
}

//______________________________________________________________________________
Bool_t TGTextView::HandleDNDLeave()
{
   // Handle Drag Leave event

   return kTRUE;
}

//______________________________________________________________________________
void TGTextView::Mark(Long_t xPos, Long_t yPos)
{
   // Mark a text region from xPos to yPos.

   TGLongPosition posStart, posEnd, pos;

   pos.fY = yPos;
   pos.fX = xPos;
   if (pos.fY > fText->RowCount()-1) {
      pos.fY = fText->RowCount()-1;
   }
   if (pos.fX > fText->GetLineLength(pos.fY)) {
      pos.fX = fText->GetLineLength(pos.fY);
   }
   if (pos.fY < fMarkedStart.fY) {
      posEnd.fY = fMarkedStart.fY;
      if (fMarkedFromY == 1 || fMarkedFromX == 1) {
         posEnd.fY = fMarkedEnd.fY;
         fMarkedEnd.fX = fMarkedStart.fX;
         fMarkedEnd.fY = fMarkedStart.fY;
      }
      posStart.fY = pos.fY;
      fMarkedStart.fY = pos.fY;
      fMarkedStart.fX = pos.fX;
      fMarkedFromY = 0;
      fMarkedFromX = 0;
   } else if (pos.fY > fMarkedEnd.fY) {
      posStart.fY = fMarkedEnd.fY;
      if (fMarkedFromY == 0 || fMarkedFromX == 0) {
         if (fMarkedStart.fY != fMarkedEnd.fY) {
            posStart.fY = fMarkedStart.fY;
            fMarkedStart.fX = fMarkedEnd.fX;
            fMarkedStart.fY = fMarkedEnd.fY;
         }
      }
      fMarkedEnd.fY = pos.fY;
      fMarkedEnd.fX = pos.fX;  // -1
      fMarkedFromY = 1;
      fMarkedFromX = 1;

      posEnd.fY = fMarkedEnd.fY;
   } else {
      if (pos.fX <= fMarkedStart.fX && pos.fY == fMarkedStart.fY) {
         posEnd.fY = fMarkedStart.fY;
         if (fMarkedFromY == 1 || fMarkedFromX == 1) {
            posEnd.fY = fMarkedEnd.fY;
            fMarkedEnd.fX = fMarkedStart.fX;
            fMarkedEnd.fY = fMarkedStart.fY;
         }
         fMarkedStart.fX = pos.fX;
         fMarkedFromY = 0;
         fMarkedFromX = 0;
         posStart.fY = fMarkedStart.fY;
      } else {
         if (pos.fX > fMarkedEnd.fX && pos.fY == fMarkedEnd.fY) {
            posStart.fY = fMarkedEnd.fY;
            if (fMarkedFromY == 0 || fMarkedFromX == 0) {
               posStart.fY = fMarkedStart.fY;
               fMarkedStart.fX = fMarkedEnd.fX;
               fMarkedStart.fY = fMarkedEnd.fY;
            }
            fMarkedEnd.fX = pos.fX;   // -1
            fMarkedFromY = 1;
            fMarkedFromX = 1;
            posEnd.fY = fMarkedEnd.fY;
         } else {
            if (fMarkedFromY == 0 || fMarkedFromX == 0) {
               posStart.fY = fMarkedStart.fY;
               fMarkedStart.fY = pos.fY;
               fMarkedStart.fX = pos.fX;
               posEnd.fY = fMarkedStart.fY;
               fMarkedFromX = 0;
               if (fMarkedStart.fY == fMarkedEnd.fY &&
                   fMarkedStart.fX > fMarkedEnd.fX) {
                  fMarkedStart.fX = fMarkedEnd.fX;
                  fMarkedEnd.fX = pos.fX;  // -1
                  fMarkedFromX  = 1;
               }
            } else if (fMarkedFromX == 1 || fMarkedFromY == 1) {
               posStart.fY = pos.fY;
               posEnd.fY = fMarkedEnd.fY;
               fMarkedEnd.fY = pos.fY;
               fMarkedEnd.fX = pos.fX;  // -1
               fMarkedFromY = 1;
               fMarkedFromX = 1;
               if (fMarkedEnd.fX == -1) {
                  fMarkedEnd.fY = pos.fY-1;
                  fMarkedEnd.fX = fText->GetLineLength(fMarkedEnd.fY); // -1
                  if (fMarkedEnd.fX < 0) {
                     fMarkedEnd.fX = 0;
                  }
               }
               fMarkedFromX = 1;
               if (fMarkedStart.fY == fMarkedEnd.fY &&
                   fMarkedStart.fX > fMarkedEnd.fX) {
                  fMarkedEnd.fX = fMarkedStart.fX;
                  fMarkedStart.fX = pos.fX;
                  fMarkedFromX = 0;
               }
            }
         }
      }
   }

   if (fMarkedEnd.fX == -1) {
      if (fMarkedEnd.fY > 0) {
         fMarkedEnd.fY--;
      }
      fMarkedEnd.fX = fText->GetLineLength(fMarkedEnd.fY);  // -1
      if (fMarkedEnd.fX < 0) {
         fMarkedEnd.fX = 0;
      }
   }
   fIsMarked = kTRUE;

   Int_t yy = (Int_t)ToScrYCoord(posStart.fY);
   UInt_t hh = UInt_t(ToScrYCoord(posEnd.fY + 1) - ToScrYCoord(posStart.fY));

   DrawRegion(0, yy, fCanvas->GetWidth(), hh);
   return;
}

//______________________________________________________________________________
void TGTextView::UnMark()
{
   // Clear marked region.

   if (!fIsMarked || 
       ((fMarkedEnd.fY == fMarkedStart.fY) && 
       (fMarkedEnd.fX == fMarkedStart.fX))) {
      return;
   }
   fIsMarked = kFALSE;

   Int_t y = (Int_t)ToScrYCoord(fMarkedStart.fY);
   UInt_t h = UInt_t(ToScrYCoord(fMarkedEnd.fY + 1) - y);

   // update marked region
   UpdateRegion(0, y, fCanvas->GetWidth(), h);
}

//______________________________________________________________________________
void TGTextView::AdjustWidth()
{
   // Adjust widget width to longest line.

   Long_t line = fText->GetLongestLine();
   if (line <= 0) {
      return;
   }
   Long_t size = ToScrXCoord(fText->GetLineLength(line), line) + fVisible.fX;
   if (fVsb->IsMapped()) {
      size += fVsb->GetDefaultWidth();
   }
   size += (fBorderWidth << 1) + fXMargin+1;
   Resize((UInt_t)size, fHeight);
}

//______________________________________________________________________________
void TGTextView::Layout()
{
   // Layout the components of view.

   VLayout();
   HLayout();
}

//______________________________________________________________________________
void TGTextView::HLayout()
{
   // Horizontal layout of widgets (canvas, scrollbar).

   if (!fHsb) return;

   Int_t tcw, tch;
   Long_t cols;
   tch = fHeight - (fBorderWidth << 1) - fYMargin-1;
   tcw = fWidth - (fBorderWidth << 1) - fXMargin-1;

   if (fVsb && fVsb->IsMapped()) {
      tcw -= fVsb->GetDefaultWidth();
      if (tcw < 0) tcw = 0;
   }
   fCanvas->SetHeight(tch);
   fCanvas->SetWidth(tcw);
   cols = ReturnLongestLineWidth();
   if (cols <= tcw) {
      if (fHsb && fHsb->IsMapped()) {
         SetVisibleStart(0, kHorizontal);
         fHsb->UnmapWindow();
         VLayout();
      }
      fCanvas->MoveResize(fBorderWidth + fXMargin, fBorderWidth + fYMargin, tcw, tch);
   } else {
      if (fHsb) {
         tch -= fHsb->GetDefaultHeight();
         if (tch < 0) tch = 0;
         fHsb->MoveResize(fBorderWidth, fHeight - fHsb->GetDefaultHeight()-fBorderWidth,
                          tcw+1+fBorderWidth, fHsb->GetDefaultHeight());
         fHsb->MapWindow();
         fHsb->SetRange(Int_t(cols/fScrollVal.fX), Int_t(tcw/fScrollVal.fX));
      }
      fCanvas->MoveResize(fBorderWidth + fXMargin, fBorderWidth + fYMargin, tcw, tch);
   }
}

//______________________________________________________________________________
void TGTextView::VLayout()
{
   // Vertical layout of widgets (canvas, scrollbar).

   Int_t  tcw, tch;
   Long_t lines;

   tch = fHeight - (fBorderWidth << 1) - fYMargin-1;
   tcw = fWidth - (fBorderWidth << 1) - fXMargin-1;
   if (fHsb && fHsb->IsMapped()) {
      tch -= fHsb->GetDefaultHeight();
      if (tch < 0) tch = 0;
   }
   fCanvas->SetHeight(tch);
   fCanvas->SetWidth(tcw);
   lines = ReturnHeighestColHeight();
   if (lines <= tch) {
      if (fVsb && fVsb->IsMapped()) {
         SetVisibleStart(0, kVertical);
         fVsb->UnmapWindow();
         HLayout();
      }
      fCanvas->MoveResize(fBorderWidth + fXMargin, fBorderWidth + fYMargin, tcw, tch);
   } else {
      if (fVsb) {
         tcw -= fVsb->GetDefaultWidth();
         if (tcw < 0) tcw = 0;
         fVsb->MoveResize(fWidth - fVsb->GetDefaultWidth() - fBorderWidth, fBorderWidth,
                          fVsb->GetDefaultWidth(), tch+1+fBorderWidth);
         fVsb->MapWindow();
         fVsb->SetRange(Int_t(lines/fScrollVal.fY), Int_t(tch/fScrollVal.fY));
      }
      fCanvas->MoveResize(fBorderWidth + fXMargin, fBorderWidth + fYMargin, tcw, tch);
   }
}

//______________________________________________________________________________
void TGTextView::SetSBRange(Int_t direction)
{
   // Set the range for the kVertical or kHorizontal scrollbar.

   if (direction == kVertical) {
      if (!fVsb) {
         return;
      }
      if (ReturnHeighestColHeight() <= (Int_t)fCanvas->GetHeight()) {
         if (fVsb->IsMapped()) {
            VLayout();
         } else {
            return;
         }
      }
      if (!fVsb->IsMapped()) {
         VLayout();
      }
      fVsb->SetRange(Int_t(ReturnHeighestColHeight()/fScrollVal.fY),
                     Int_t(fCanvas->GetHeight()/fScrollVal.fY));
      HLayout();
   } else {
      if (!fHsb) {
         return;
      }
      if (ReturnLongestLineWidth() <= (Int_t)fCanvas->GetWidth()) {
         if (fHsb->IsMapped()) {
            HLayout();
         } else {
            return;
         }
      }
      if (!fHsb->IsMapped()) {
         HLayout();
      }
      fHsb->SetRange(Int_t(ReturnLongestLineWidth()/fScrollVal.fX),
                     Int_t(fCanvas->GetWidth()/fScrollVal.fX));
      VLayout();
   }
}

//______________________________________________________________________________
void TGTextView::SetHsbPosition(Long_t newPos)
{
   // Set position of horizontal scrollbar.

   if (fHsb && fHsb->IsMapped()) {
      fHsb->SetPosition(Int_t(newPos));
   } else {
      SetVisibleStart(Int_t(newPos * fScrollVal.fX), kHorizontal);
   }
}

//______________________________________________________________________________
void TGTextView::SetVsbPosition(Long_t newPos)
{
   // Set position of vertical scrollbar.

   if (fVsb && fVsb->IsMapped()) {
      fVsb->SetPosition(Int_t(newPos));
   } else {
      SetVisibleStart(Int_t(newPos * fScrollVal.fY), kVertical);
   }
}

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

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

//______________________________________________________________________________
void TGTextView::ShowBottom()
{
   // Show bottom of the page.

   Int_t  tch;
   Long_t lines, newPos;

   tch = fCanvas->GetHeight();
   lines = ReturnHeighestColHeight();
   if (lines > tch) {
      newPos = lines / fScrollVal.fY;
      SetVsbPosition(newPos);
   }
   Layout();
}

//______________________________________________________________________________
void TGTextView::ShowTop()
{
   // Show top of the page.

   SetVsbPosition(0);
   Layout();
}

//______________________________________________________________________________
void TGTextView::SetForegroundColor(Pixel_t col)
{
   // Set text color.

   fNormGC.SetBackground(col);
   fNormGC.SetForeground(col);
}

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

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

//______________________________________________________________________________
const TGGC &TGTextView::GetDefaultSelectedGC()
{
   // Return selection graphics context in use.

   if (!fgDefaultSelectedGC) {
      fgDefaultSelectedGC = new TGGC(*gClient->GetResourcePool()->GetSelectedGC());
      fgDefaultSelectedGC->SetFont(fgDefaultFont->GetFontHandle());
   }
   return *fgDefaultSelectedGC;
}

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

   if (!fgDefaultSelectedBackgroundGC) {
      fgDefaultSelectedBackgroundGC = gClient->GetResourcePool()->GetSelectedBckgndGC();
   }
   return *fgDefaultSelectedBackgroundGC;
}

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

   char quote = '"';
   out << "   TGTextView *";
   out << GetName() << " = new TGTextView(" << fParent->GetName()
       << "," << GetWidth() << "," << GetHeight()
       << ");"<< endl;

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

   if (fCanvas->GetBackground() != TGFrame::fgWhitePixel) {
      out << "   " << GetName() << "->ChangeBackground(" << fCanvas->GetBackground() << ");" << endl;
   }

   TGText *txt = GetText();
   Bool_t fromfile = strlen(txt->GetFileName()) ? kTRUE : kFALSE;
   TString fn;

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