ROOT logo
// @(#)root/gui:$Id: TGTextEntry.cxx 26509 2008-11-28 15:00:08Z bellenot $
// Author: Fons Rademakers   08/01/98

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

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

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

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGTextEntry                                                          //
//                                                                      //
// A TGTextEntry is a one line text input widget.                       //
//                                                                      //
// Changing text in the text entry widget will generate the event:      //
// kC_TEXTENTRY, kTE_TEXTCHANGED, widget id, 0.                         //
// Hitting the enter key will generate:                                 //
// kC_TEXTENTRY, kTE_ENTER, widget id, 0.                               //
// Hitting the tab key will generate:                                   //
// kC_TEXTENTRY, kTE_TAB, widget id, 0.                                 //
//                                                                      //
// This widget has the behaviour e.g. of the "Location" field in        //
// netscape. That includes handling Control/Shift key modifiers and     //
// scrolling the text.                                                  //
//
//
// enum TGTextEntry::EEchoMode
//
// This enum type describes the ways in which TGTextEntry can display
// its contents. The currently defined values are:
//Begin_Html
/*
<ul>
<li>  kNormal - display characters as they are entered. This is the default.
<li>  kNoEcho - do not display anything.
<li>  kPassword - display asterisks instead of the characters actually entered.
</ul>
*/
//End_Html
// See also SetEchoMode(), GetEchoMode().
//
// enum TGTextEntry::EInsertMode
//
// This enum type describes the way how typed characters are
// inserted in the text entry. This mode is switched by "Insert" key.
//Begin_Html
/*
<ul>
<li>  kInsert - typed character are inserted (cursor has shape of short line).
<li>  kReplace - typed characters substitute already typed ones
                 (cursor has the shape of filled rectangle).
</ul>
*/
//End_Html
//
// enum TGWidget::ETextJustification
//
// This enum type (defined in TGWidget.h) describes the text alignment modes.
// These modes are valid untill text fits the frame width
//Begin_Html
/*
<ul>
<li>  kTextLeft    - left-side text alignment
<li>  kTextRight   - right-side text alignment
<li>  kTextCenterX - center text alignment
</ul>
*/
//End_Html
//
//
// The key press event handler converts a key press to some line editor action.
// Here are the default key bindings:
//Begin_Html
/*
<ul>
<li><i> Left Arrow </i>
        Move the cursor one character leftwards.
        Scroll the text when cursor is out of frame.
<li><i> Right Arrow </i>
        Move the cursor one character rightwards
        Scroll the text when cursor is out of frame.
<li><i> Backspace </i>
        Deletes the character on the left side of the text cursor and moves the
        cursor one position to the left. If a text has been marked by the user
        (e.g. by clicking and dragging) the cursor will be put at the beginning
        of the marked text and the marked text will be removed.
<li><i> Home </i>
        Moves the text cursor to the left end of the line. If mark is TRUE text
        will be marked towards the first position, if not any marked text will
        be unmarked if the cursor is moved.
<li><i> End </i>
        Moves the text cursor to the right end of the line. If mark is TRUE text
        will be marked towards the last position, if not any marked text will
        be unmarked if the cursor is moved.
<li><i> Delete </i>
        Deletes the character on the right side of the text cursor. If a text
        has been marked by the user (e.g. by clicking and dragging) the cursor
        will be put at the beginning of the marked text and the marked text will
        be removed.
<li><i> Insert </i>
        Switches character insert mode.
<li><i> Shift - Left Arrow </i>
        Mark text one character leftwards
<li><i> Shift - Right Arrow </i>
        Mark text one character rightwards
<li><i> Control - Left Arrow </i>
        Move the cursor one word leftwards
<li><i> Control - Right Arrow </i>
        Move the cursor one word rightwards.
<li><i> Control - Shift - Left Arrow </i>
        Mark text one word leftwards
<li><i> Control - Shift - Right Arrow </i>
        Mark text one word rightwards
<li><i> Control-A </i>
        Move the cursor to the beginning of the line
<li><i> Control-B </i>
        Move the cursor one character leftwards
<li><i> Control-C </i>
        Copy the marked text to the clipboard.
<li><i> Control-D </i>
        Delete the character to the right of the cursor
<li><i> Control-E </i>
        Move the cursor to the end of the line
<li><i> Control-F </i>
        Move the cursor one character rightwards
<li><i> Control-H </i>
        Delete the character to the left of the cursor
<li><i> Control-K </i>
        Delete marked text if any or delete all
        characters to the right of the cursor
<li><i> Control-U </i>
        Delete all characters on the line
<li><i> Control-V </i>
        Paste the clipboard text into line edit.
<li><i> Control-X </i>
        Cut the marked text, copy to clipboard.
<li><i> Control-Y </i>
        Paste the clipboard text into line edit.
</ul>
All other keys with valid ASCII codes insert themselves into the line.
*/
//End_Html
//
////////////////////////////////////////////////////////////////////////////////

//******************* TGTextEntry signals *************************************
//______________________________________________________________________________
// TGTextEntry::ReturnPressed()
//
//    This signal is emitted when the return or enter key is pressed.
//
//______________________________________________________________________________
// TGTextEntry::TabPressed()
//
//    This signal is emitted when the <TAB> key is pressed.
//    Use for changing focus.
//
//______________________________________________________________________________
// TGTextEntry::ShiftTabPressed()
//
//    This signal is emitted when the <SHIFT> and <TAB> keys are pressed.
//    Use for changing focus in reverse direction.
//
//______________________________________________________________________________
// TGTextEntry::TextChanged(const char *text)
//
//    This signal is emitted every time the text has changed.
//    The argument is the new text.
//
//______________________________________________________________________________
// TGTextEntry::CursorOutLeft()
//
// This signal is emitted when cursor is going out of left side.
//
//______________________________________________________________________________
// TGTextEntry::CursorOutRight()
//
// This signal is emitted when cursor is going out of right side.
//
//______________________________________________________________________________
// TGTextEntry::CursorOutUp()
//
// This signal is emitted when cursor is going out of upper side.
//
//______________________________________________________________________________
// TGTextEntry::CursorOutDown()
//
// This signal is emitted when cursor is going out of bottom side.
//
//______________________________________________________________________________
// TGTextEntry::DoubleClicked()
//
// This signal is emitted when widget is double clicked.


#include "TGTextEntry.h"
#include "TGResourcePool.h"
#include "TGToolTip.h"
#include "TSystem.h"
#include "TTimer.h"
#include "TColor.h"
#include "KeySymbols.h"
#include "Riostream.h"
#include "TClass.h"
#include "TGMsgBox.h"


TString      *TGTextEntry::fgClipboardText = 0;
const TGFont *TGTextEntry::fgDefaultFont = 0;
const TGGC   *TGTextEntry::fgDefaultSelectedGC = 0;
const TGGC   *TGTextEntry::fgDefaultSelectedBackgroundGC = 0;
const TGGC   *TGTextEntry::fgDefaultGC = 0;

TGTextEntry *gBlinkingEntry = 0;

//______________________________________________________________________________
class TBlinkTimer : public TTimer {
private:
   TGTextEntry   *fTextEntry;
public:
   TBlinkTimer(TGTextEntry *t, Long_t ms) : TTimer(ms, kTRUE) { fTextEntry = t; }
   Bool_t Notify();
};

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

   fTextEntry->HandleTimer(0);
   Reset();
   return kFALSE;
}


ClassImp(TGTextEntry)

//______________________________________________________________________________
TGTextEntry::TGTextEntry(const TGWindow *p, TGTextBuffer *text, Int_t id,
                         GContext_t norm, FontStruct_t font, UInt_t options,
                         ULong_t back) :
   TGFrame(p, 1, 1, options | kOwnBackground, back)
{
   // Create a text entry widget. It will adopt the TGTextBuffer object
   // (i.e. the text buffer will be deleted by the text entry widget).

   TGGC *normgc   = fClient->GetResourcePool()->GetGCPool()->FindGC(norm);

   fWidgetId      = id;
   fMsgWindow     = p;
   if (normgc)
      fNormGC     = *normgc;
   else
      fNormGC     = GetDefaultGC();
   fFontStruct    = font;
   fText          = text;

   Init();
}

//______________________________________________________________________________
TGTextEntry::TGTextEntry(const TGWindow *parent, const char *text, Int_t id) :
   TGFrame(parent, 1, 1, kSunkenFrame | kDoubleBorder | kOwnBackground, fgWhitePixel)
{
   // Simple text entry constructor.

   fWidgetId      = id;
   fMsgWindow     = parent;
   fNormGC        = GetDefaultGC();
   fFontStruct    = GetDefaultFontStruct();
   fText          = new TGTextBuffer();
   fText->AddText(0, !text && !parent ? GetName() : text);

   Init();                             // default initialization
}

//______________________________________________________________________________
TGTextEntry::TGTextEntry(const TString &contents, const TGWindow *parent, Int_t id) :
   TGFrame(parent, 1, 1, kSunkenFrame | kDoubleBorder | kOwnBackground, fgWhitePixel)
{
   // Simple test entry constructor. Notice TString argument comes before the
   // parent argument (to make this ctor different from the first one taking a
   // const char*).

   fWidgetId      = id;
   fMsgWindow     = parent;
   fNormGC        = GetDefaultGC();
   fFontStruct    = GetDefaultFontStruct();
   fText          = new TGTextBuffer();
   fText->AddText(0, contents.Data());

   Init();                             // default initialization
}

//______________________________________________________________________________
TGTextEntry::~TGTextEntry()
{
   // Delete a text entry widget.

   delete fText;
   delete fCurBlink;
   delete fTip;

   if (this == gBlinkingEntry) gBlinkingEntry = 0;
}

//______________________________________________________________________________
void TGTextEntry::Init()
{
   // Do default initialization.

   fWidgetFlags = kWidgetWantFocus | kWidgetIsEnabled;
   fSelGC       = GetDefaultSelectedGC();
   fSelbackGC   = GetDefaultSelectedBackgroundGC()();

   fOffset = 0;
   // Set default maximum lenght to 4096. Can be changed with SetMaxLength() 
   fMaxLen = 4096;
   fFrameDrawn = kTRUE;
   fEdited = kFALSE;
   fEchoMode = kNormal;
   fAlignment= kTextLeft;
   fInsertMode = kInsert;

   int tw, max_ascent, max_descent;
   tw = gVirtualX->TextWidth(fFontStruct, GetText(), fText->GetTextLength());

   if (tw < 1) {
      TString dummy('w', fText->GetBufferLength());
      tw = gVirtualX->TextWidth(fFontStruct, dummy.Data(), dummy.Length());
   }
   gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
   Resize(tw + 8, max_ascent + max_descent + 7);

   Int_t offset = IsFrameDrawn() ? 4 : 0;
   fCursorX     = offset ;
   fCursorIX    = fStartIX = fEndIX = fOffset = 0;
   fSelectionOn = fCursorOn = kFALSE;
   fCurBlink    = 0;
   fTip         = 0;
   fClipboard   = fClient->GetResourcePool()->GetClipboard();

   gVirtualX->SetCursor(fId, fClient->GetResourcePool()->GetTextCursor());

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

   AddInput(kKeyPressMask | kFocusChangeMask |
            kEnterWindowMask | kLeaveWindowMask);

   SetWindowAttributes_t wattr;
   wattr.fMask = kWAWinGravity | kWABitGravity;
   wattr.fBitGravity = 1; // NorthWestGravity
   wattr.fWinGravity = 1;
   gVirtualX->ChangeWindowAttributes(fId, &wattr);

   SetWindowName();
   fHasOwnFont = kFALSE;
   fEditDisabled = kEditDisableHeight;
}

//______________________________________________________________________________
void TGTextEntry::ReturnPressed()
{
   // This signal is emitted when the return or enter key is pressed.

   SendMessage(fMsgWindow, MK_MSG(kC_TEXTENTRY, kTE_ENTER), fWidgetId, 0);
   fClient->ProcessLine(fCommand, MK_MSG(kC_TEXTENTRY, kTE_ENTER),fWidgetId, 0);

   Emit("ReturnPressed()");
}

//______________________________________________________________________________
void TGTextEntry::ShiftTabPressed()
{
   // This signal is emitted when <SHIFT> and <TAB> keys are pressed.

   Emit("ShiftTabPressed()");
}

//______________________________________________________________________________
void TGTextEntry::TabPressed()
{
   // This signal is emitted when the <TAB> key is pressed.

   SendMessage(fMsgWindow, MK_MSG(kC_TEXTENTRY, kTE_TAB), fWidgetId, 0);
   fClient->ProcessLine(fCommand, MK_MSG(kC_TEXTENTRY, kTE_TAB), fWidgetId, 0);

   Emit("TabPressed()");
}

//______________________________________________________________________________
void TGTextEntry::TextChanged(const char *)
{
   // This signal is emitted every time the text has changed.

   SendMessage(fMsgWindow, MK_MSG(kC_TEXTENTRY, kTE_TEXTCHANGED),fWidgetId, 0);
   fClient->ProcessLine(fCommand, MK_MSG(kC_TEXTENTRY, kTE_TEXTCHANGED),fWidgetId, 0);

   Emit("TextChanged(char*)", GetText());  // The argument is the new text.
}

//______________________________________________________________________________
void TGTextEntry::CursorOutLeft()
{
   // This signal is emitted when cursor is going out of left side.

   Emit("CursorOutLeft()");
}

//______________________________________________________________________________
void TGTextEntry::CursorOutRight()
{
   // This signal is emitted when cursor is going out of right side.

   Emit("CursorOutRight()");
}

//______________________________________________________________________________
void TGTextEntry::CursorOutUp()
{
   // This signal is emitted when cursor is going out of upper side.

   Emit("CursorOutUp()");
}

//______________________________________________________________________________
void TGTextEntry::CursorOutDown()
{
   // This signal is emitted when cursor is going out of bottom side.

   Emit("CursorOutDown()");
}

//______________________________________________________________________________
void TGTextEntry::DoubleClicked()
{
   // This signal is emitted when widget is double clicked.

   Emit("DoubleClicked()");
}

//______________________________________________________________________________
TString TGTextEntry::GetDisplayText() const
{
   // Returns the text that's currently displayed.  This is normally
   // the same as GetText(), but can be e.g.
   // "*****" if EEchoMode is kPassword or
   // ""      if it is kNoEcho.

   TString res;

   switch (GetEchoMode()) {
   case kNormal:
         res = GetText();
         break;
   case kNoEcho:
         res = "";
         break;
   case kPassword:
         res.Prepend('*', fText->GetTextLength());  // fill with '*'
         break;
   }
   return res;
}

//______________________________________________________________________________
void TGTextEntry::SetState(Bool_t state)
{
   // Set state of widget. If kTRUE=enabled, kFALSE=disabled.

   if (state) {
      SetFlags(kWidgetIsEnabled);
      SetBackgroundColor(fgWhitePixel);
   } else {
      ClearFlags(kWidgetIsEnabled);
      SetBackgroundColor(GetDefaultFrameBackground());
      fCursorOn = kFALSE;   // remove the cursor when disabling the widget
      if (fCurBlink) fCurBlink->Remove();
   }
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
Int_t TGTextEntry::GetCharacterIndex(Int_t xcoord)
{
   // Returns the index of the character to whose left edge xcoord is closest.

   int tw, ix, up, down, len;

   // check for out of boundaries first...
   TString dt = GetDisplayText();
   len = dt.Length();
   tw = gVirtualX->TextWidth(fFontStruct, dt.Data(), len);
   if (xcoord < 0) return 0;
   if (xcoord > tw) return len; // len-1

   // do a binary approximation
   up = len; //-1
   down = 0;
   while (up-down > 1) {
      ix = (up+down) >> 1;
      tw = gVirtualX->TextWidth(fFontStruct, fText->GetString(), ix);
      if (tw > xcoord)
         up = ix;
      else
         down = ix;
      if (tw == xcoord) break;
   }
   ix = down;

   // safety check...
   ix = TMath::Max(ix, 0);
   ix = TMath::Min(ix, len); // len-1

   return ix;
}

//______________________________________________________________________________
void TGTextEntry::SetFrameDrawn(Bool_t enable)
{
   // Sets the text entry to draw itself inside a two-pixel frame if
   // enable is kTRUE, and to draw itself without any frame if enable is
   // kFALSE. The default is kTRUE.

   if (fFrameDrawn == enable) return;

   fFrameDrawn = enable;
   fClient->NeedRedraw(this);
   // ChangedBy("SetFrameDrawn");  // emit signal ChangedBy
}

//______________________________________________________________________________
void TGTextEntry::SetAlignment(ETextJustification mode)
{
   // Sets the alignment of the text entry.
   // Possible values are kTextLeft(default), kTextRight, kTextCenterX.
   // See also GetAlignment().

   if ((mode == kTextRight ||
        mode == kTextCenterX ||
        mode == kTextLeft)) {

      SetWindowAttributes_t wattr;
      wattr.fMask = kWAWinGravity | kWABitGravity;
      wattr.fWinGravity = 1;

      if (mode == kTextLeft) {
         wattr.fBitGravity = 1;
      } else if (mode == kTextRight) {
         wattr.fBitGravity = 3;
      } else {
         wattr.fBitGravity = 5;
      }

      gVirtualX->ChangeWindowAttributes(fId, &wattr);

      fAlignment = mode;
      UpdateOffset();
      fClient->NeedRedraw(this);
      // ChangedBy("SetAlignment");  // emit signal ChangedBy
   }
}

//______________________________________________________________________________
void TGTextEntry::SetInsertMode(EInsertMode mode)
{
   // Sets the mode how characters are entered to the text entry.

   if (fInsertMode == mode) return;

   fInsertMode = mode;
   fClient->NeedRedraw(this);
   // ChangedBy("SetInsertMode");  // emit signal ChangedBy
}

//______________________________________________________________________________
void TGTextEntry::SetText(const char *text, Bool_t emit)
{
   // Sets text entry to text, clears the selection and moves
   // the cursor to the end of the line.
   // If necessary the text is truncated to fit MaxLength().
   // See also  GetText().

   TString oldText(GetText());

   fText->Clear();
   fText->AddText(0, text); // new text

   Int_t dif = fText->GetTextLength() - fMaxLen;
   if (dif > 0) fText->RemoveText(fMaxLen, dif);       // truncate

   End(kFALSE);
   if (oldText != GetText()) {
      if (emit)
         TextChanged();         // emit signal
      fClient->NeedRedraw(this);
   }
}

//______________________________________________________________________________
void TGTextEntry::SetMaxLength(Int_t maxlen)
{
   // Set the maximum length of the text in the editor.  If the text is
   // currently too long, it is chopped off at the limit. Any marked text will
   // be unmarked.  The cursor position is set to 0 and the first part of the
   // string is shown.
   // See  also GetMaxLength().

   fMaxLen = maxlen < 0 ? 0 : maxlen; // safety check for maxlen < 0

   Int_t dif = fText->GetTextLength() - fMaxLen;
   if (dif > 0) fText->RemoveText(fMaxLen, dif);    // truncate

   SetCursorPosition(0);
   Deselect();

   // ChangedBy("SetMaxLength");  // emit signal ChangedBy
}

//______________________________________________________________________________
void TGTextEntry::SetEchoMode(EEchoMode mode)
{
   // The echo modes available are:
   //Begin_Html
   // <ul>
   // <li> kNormal   - display characters as they are entered.  This is the default.
   // <li> kNoEcho   - do not display anything.
   // <li> kPassword - display asterisks instead of the characters actually entered.
   // </ul>
   //End_Html
   // It is always possible to cut and paste any marked text;  only the widget's own
   // display is affected.
   // See also GetEchoMode(), GetDisplayText().

   if (fEchoMode == mode) return;

   Int_t offset = IsFrameDrawn() ? 4 : 0;
   fEchoMode = mode;
   if (GetEchoMode() == kNoEcho) { fCursorX = offset; }
   UpdateOffset();
   fClient->NeedRedraw(this);
   // ChangedBy("SetEchoMode");  // emit signal ChangedBy
}

//______________________________________________________________________________
TString TGTextEntry::GetMarkedText() const
{
   // Returns the text marked by the user (e.g. by clicking and
   // dragging), or zero if no text is marked.
   // See also HasMarkedText().

   Int_t minP = MinMark();
   Int_t len = MaxMark() - minP;
   TString res(GetText()+minP,len);
   return res;
}

//______________________________________________________________________________
void TGTextEntry::NewMark(Int_t newPos)
{
   // New character mark at position pos.
   // See also SetCursorPosition().

   TString dt = GetDisplayText();
   Int_t offset = IsFrameDrawn() ? 4 : 0;
   Int_t x = fOffset + offset;
   Int_t len = dt.Length();

   Int_t pos = newPos < len ? newPos : len;
   fEndIX = pos < 0 ? 0 : pos;

   fSelectionOn = fSelectionOn && (fEndIX != fStartIX) && (GetEchoMode() != kNoEcho) ;
   SetCursorPosition(pos);

   if (fSelectionOn) {
      fEndX =  x + gVirtualX->TextWidth(fFontStruct, dt.Data() , fEndIX);
      fStartX = x + gVirtualX->TextWidth(fFontStruct, dt.Data() , fStartIX);
   }
}

//______________________________________________________________________________
void TGTextEntry::SetCursorPosition(Int_t newPos)
{
   // Set the cursor position to newPos.
   // See also NewMark().

   Int_t offset = IsFrameDrawn() ? 4 : 0;
   if (GetEchoMode() == kNoEcho) { fCursorX = offset; return; }

   UpdateOffset();
   TString dt = GetDisplayText();

   Int_t x = fOffset + offset;
   Int_t len = dt.Length();

   Int_t pos;

   if (newPos < len)
      pos = newPos;
   else {
      pos = len;
      if (newPos > len) CursorOutRight();
   }

   if (pos < 0) {
      fCursorIX = 0;
      CursorOutLeft();
   } else
      fCursorIX = pos;

   fCursorX = x + gVirtualX->TextWidth(fFontStruct, dt.Data(), fCursorIX);

   if (!fSelectionOn){
      fStartIX = fCursorIX;
      fStartX  = fCursorX;
   }
}

//______________________________________________________________________________
void TGTextEntry::MarkWord(Int_t pos)
{
   // Marks the word nearest to cursor position.
   // See also HandleDoubleClick().

   Int_t i = pos - 1;
   while (i >= 0 && isprint(GetText()[i]) && !isspace(GetText()[i])) i--;
   i++;
   Int_t newStartIX = i;

   i = pos;
   while (isprint(GetText()[i]) && !isspace(GetText()[i])) i++;
   while(isspace(GetText()[i])) i++;

   fSelectionOn = kTRUE;
   fStartIX = newStartIX;
   fEndIX = i;
   NewMark(i);
}

//______________________________________________________________________________
void TGTextEntry::Insert(const char *newText)
{
   // Removes any currently selected text, inserts newText,
   // sets it as the new contents of the text entry.

   TString old(GetText());
   TString t(newText);

   if (t.IsNull()) return;

   for (int i=0; i<t.Length(); i++) {
      if (t[i] < ' ') t[i] = ' '; // unprintable/linefeed becomes space
   }

   Int_t minP = MinMark();
   Int_t maxP = MaxMark();
   Int_t cp = fCursorIX;

   if (HasMarkedText()) {
      fText->RemoveText(minP, maxP-minP);
      cp = minP;
   }

   if (fInsertMode == kReplace) fText->RemoveText(cp,t.Length());
   Int_t ncp = TMath::Min(cp+t.Length(), GetMaxLength());
   fText->AddText(cp, t.Data());
   Int_t dlen = fText->GetTextLength()-GetMaxLength();
   if (dlen>0) fText->RemoveText(GetMaxLength(),dlen); // truncate

   SetCursorPosition(ncp);
   if (old != GetText()) TextChanged();
}

//______________________________________________________________________________
void TGTextEntry::CursorRight(Bool_t mark, Int_t steps)
{
   // Moves the cursor rightwards one or more characters.
   // See also CursorLeft().

   Int_t cp = fCursorIX + steps;

   if (cp == fCursorIX)  {
      if (!mark) {
         fSelectionOn = kFALSE;
         fEndIX = fStartIX = fCursorIX;
      }
   } else if (mark) {
      fSelectionOn = kTRUE;
      NewMark(cp);
   } else {
      fSelectionOn = kFALSE;
      SetCursorPosition(cp);
   }
}

//______________________________________________________________________________
void TGTextEntry::CursorLeft(Bool_t mark, Int_t steps)
{
   // Moves the cursor leftwards one or more characters.
   // See also CursorRight().

   CursorRight(mark, -steps);
}

//______________________________________________________________________________
void TGTextEntry::CursorWordForward(Bool_t mark)
{
   // Moves the cursor one word to the right.  If mark is kTRUE, the text
   // is marked.
   // See also CursorWordBackward().

   Int_t i = fCursorIX;
   while (i < (Int_t)fText->GetTextLength() && !isspace(GetText()[i])) ++i;
   while (i < (Int_t)fText->GetTextLength() && isspace(GetText()[i])) ++i;
   CursorRight(mark, i - fCursorIX);
}

//______________________________________________________________________________
void TGTextEntry::CursorWordBackward(Bool_t mark)
{
   // Moves the cursor one word to the left.  If mark is kTRUE, the text
   // is marked.
   // See also CursorWordForward().

   Int_t i = fCursorIX;
   while (i > 0 && isspace(GetText()[i-1])) --i;
   while (i > 0 && !isspace(GetText()[i-1])) --i;
   CursorLeft(mark,  fCursorIX - i);
}

//______________________________________________________________________________
void TGTextEntry::Backspace()
{
   // Deletes the character on the left side of the text cursor and moves the
   // cursor one position to the left. If a text has been marked by the user
   // (e.g. by clicking and dragging) the cursor will be put at the beginning
   // of the marked text and the marked text will be removed.
   // See also  Del().

   if (HasMarkedText())  {
      Del();
   } else if (fCursorIX > 0) {
      CursorLeft(kFALSE);
      Del();
   }
}

//______________________________________________________________________________
void TGTextEntry::Del()
{
   // Deletes the character on the right side of the text cursor. If a text
   // has been marked by the user (e.g. by clicking and dragging) the cursor
   // will be put at the beginning of the marked text and the marked text will
   // be removed.
   // See also Backspace().

   Int_t minP = MinMark();
   Int_t maxP = MaxMark();

   if (HasMarkedText())  {
      fText->RemoveText(minP, maxP-minP);
      fSelectionOn = kFALSE;
      SetCursorPosition(minP);
   }  else if (fCursorIX != (Int_t)fText->GetTextLength()) {
      fSelectionOn = kFALSE;
      fText->RemoveText(fCursorIX , 1);
      SetCursorPosition(fCursorIX);
   }
   TextChanged();
}

//______________________________________________________________________________
void TGTextEntry::Remove()
{
   // Deletes all characters on the right side of the cursor.
   // See also Del() Backspace().

   if (fCursorIX < (Int_t)fText->GetTextLength()) {
      fText->RemoveText(fCursorIX , fText->GetTextLength() - fCursorIX);
      SetCursorPosition(fCursorIX);
      TextChanged();                      // emit signal
   }
}

//______________________________________________________________________________
void TGTextEntry::CopyText() const
{
   // Copies the marked text to the clipboard, if there is any and
   // GetEchoMode() is kNormal.
   // See also  Cut() Paste().

   if (HasMarkedText() && GetEchoMode() == kNormal) {
      if (!fgClipboardText) fgClipboardText = new TString();
      *fgClipboardText = GetMarkedText();  // assign
      gVirtualX->SetPrimarySelectionOwner(fId);
   }
}

//______________________________________________________________________________
void TGTextEntry::Paste()
{
   // Inserts text at the cursor position, deleting any
   // previous marked text.
   // See also CopyText() Cut().

   if (gVirtualX->GetPrimarySelectionOwner() == kNone) {
      // No primary selection, so use the buffer
      if (fgClipboardText) Insert(fgClipboardText->Data());
   } else {
      gVirtualX->ConvertPrimarySelection(fId, fClipboard, 0);
   }
}

//______________________________________________________________________________
void TGTextEntry::Cut()
{
   // Copies the marked text to the clipboard and deletes it, if there is any.
   // See also CopyText() Paste().

   if (HasMarkedText()) {
      CopyText();
      Del();
   }
}

//______________________________________________________________________________
void TGTextEntry::Clear(Option_t *)
{
   // Clears up the text entry.

   SetText("");
}

//______________________________________________________________________________
void TGTextEntry::Home(Bool_t mark)
{
   // Moves the text cursor to the left end of the line. If mark is kTRUE text
   // will be marked towards the first position, if not any marked text will
   // be unmarked if the cursor is moved.
   // See also End().

   fOffset = 0;
   if (mark){
      fSelectionOn = kTRUE;
      fStartIX = fCursorIX;
      NewMark(0);
   } else {
      fSelectionOn = kFALSE;
      SetCursorPosition(0);
   }
}

//______________________________________________________________________________
void TGTextEntry::End(Bool_t mark)
{
   // Moves the text cursor to the right end of the line. If mark is kTRUE text
   // will be marked towards the last position, if not any marked text will
   // be unmarked if the cursor is moved.
   // See also Home().

   TString dt = GetDisplayText();
   Int_t len  = dt.Length();

   fOffset = (Int_t)GetWidth() - gVirtualX->TextWidth(fFontStruct, dt.Data(), len);
   if (fOffset > 0) fOffset = 0;

   if (mark){
      fSelectionOn = kTRUE;
      fStartIX = fCursorIX;
      NewMark(len);
   } else {
      fSelectionOn = kFALSE;
      SetCursorPosition(len);
   }
}

//______________________________________________________________________________
void TGTextEntry::SelectAll()
{
   // Selects all text (i.e. marks it) and moves the cursor to the
   // end. Useful when a default value has been inserted. If the user
   // types before clicking on the widget the selected text will be
   // erased.

   fSelectionOn = kTRUE;
   fStartIX = 0;
   NewMark(fText->GetTextLength());
   DoRedraw();
}

//______________________________________________________________________________
void TGTextEntry::Deselect()
{
   // Deselects all text (i.e. removes marking) and leaves the cursor at the
   // current position.

   fSelectionOn = kFALSE;
   fEndIX = fStartIX = fCursorIX;
   DoRedraw();
}

//______________________________________________________________________________
void TGTextEntry::DrawBorder()
{
   // Draw the border of the text entry widget.

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

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

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

//______________________________________________________________________________
void TGTextEntry::DoRedraw()
{
   // Draw the text entry widget.

   Int_t x, y, max_ascent, max_descent, h;
   Int_t offset = IsFrameDrawn() ? 4 : 0;
   TString dt  = GetDisplayText();               // text to be displayed
   Int_t len   = dt.Length();                    // length of displayed text

   // TGFrame::DoRedraw() == drawing border twice
   Int_t border = IsFrameDrawn() ? fBorderWidth : 0;

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

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

   h = max_ascent + max_descent;
   y = (fHeight - h) >> 1 ;
   x = fOffset + offset;

   if (fEchoMode == kNoEcho) {
      fSelectionOn = kFALSE;
      fCursorX = offset;
   }

   if ((GetInsertMode() == kInsert) || (fEchoMode == kNoEcho)) {
      // line cursor
      if (fCursorOn) {
         gVirtualX->DrawLine(fId, GetBlackGC()(), fCursorX, y - 1,
                     fCursorX, h + 2);
      }
      gVirtualX->DrawString(fId, fNormGC(), x, y + max_ascent, dt.Data(), len);

   } else {
      // filled rectangle (block) cursor
      gVirtualX->DrawString(fId, fNormGC(), x, y + max_ascent, dt.Data(), len);

      if (fCursorOn) {
         Int_t ind       = fCursorIX < len-1 ? fCursorIX : len - 1;
         Int_t charWidth = ind < 0 ||  fCursorIX > len - 1 ? 4 :
                           gVirtualX->TextWidth(fFontStruct, &dt[ind],1);

         Int_t before = gVirtualX->TextWidth(fFontStruct, dt, fCursorIX) + x;

         gVirtualX->FillRectangle(fId, fSelbackGC , before, y ,
                                  charWidth , h + 1);

         if (fCursorIX < len)
            gVirtualX->DrawString(fId, fSelGC(), before, y + max_ascent, &dt[ind], 1);
      }
   }

   if (fSelectionOn) {
      int xs, ws, ixs, iws;

      xs  = TMath::Min(fStartX, fEndX);
      ws  = TMath::Abs(fEndX - fStartX);
      ixs = TMath::Min(fStartIX, fEndIX);
      iws = TMath::Abs(fEndIX - fStartIX);

      gVirtualX->FillRectangle(fId, fSelbackGC, xs, y, ws, h + 1);

      gVirtualX->DrawString(fId, fSelGC(), xs, y + max_ascent,
                            dt.Data() + ixs, iws);
   }
   if (IsFrameDrawn()) DrawBorder();
}

//______________________________________________________________________________
Bool_t TGTextEntry::HandleKey(Event_t* event)
{
   // The key press event handler converts a key press to some line editor
   // action. Here are the default key bindings:
   //Begin_Html
   //  <ul>
   //  <li><i> Left Arrow </i>
   //          Move the cursor one character leftwards.
   //          Scroll the text when  cursor is out of frame.
   //  <li><i> Right Arrow </i>
   //          Move the cursor one character rightwards
   //          Scroll the text when  cursor is out of frame.
   //  <li><i> Backspace </i>
   //          Deletes the character on the left side of the text cursor and moves the
   //          cursor one position to the left. If a text has been marked by the user
   //          (e.g. by clicking and dragging) the cursor will be put at the beginning
   //          of the marked text and the marked text will be removed.
   //  <li><i> Home </i>
   //          Moves the text cursor to the left end of the line. If mark is TRUE text
   //          will be marked towards the first position, if not any marked text will
   //          be unmarked if the cursor is moved.
   //  <li><i> End </i>
   //          Moves the text cursor to the right end of the line. If mark is TRUE text
   //          will be marked towards the last position, if not any marked text will
   //          be unmarked if the cursor is moved.
   //  <li><i> Delete </i>
   //          Deletes the character on the right side of the text cursor. If a text
   //          has been marked by the user (e.g. by clicking and dragging) the cursor
   //          will be put at the beginning of the marked text and the marked text will
   //          be removed.
   //  <li><i> Insert </i>
   //          Switches character insert mode.
   //  <li><i> Shift - Left Arrow </i>
   //          Mark text one character leftwards
   //  <li><i> Shift - Right Arrow </i>
   //          Mark text one character rightwards
   //  <li><i> Control - Left Arrow </i>
   //          Move the cursor one word leftwards
   //  <li><i> Control - Right Arrow </i>
   //          Move the cursor one word rightwards.
   //  <li><i> Control - Shift - Left Arrow </i>
   //          Mark text one word leftwards
   //  <li><i> Control - Shift - Right Arrow </i>
   //          Mark text one word rightwards
   //  <li><i> Control-A </i>
   //          Move the cursor to the beginning of the line
   //  <li><i> Control-B </i>
   //          Move the cursor one character leftwards
   //  <li><i> Control-C </i>
   //          Copy the marked text to the clipboard.
   //  <li><i> Control-D </i>
   //          Delete the character to the right of the cursor
   //  <li><i> Control-E </i>
   //          Move the cursor to the end of the line
   //  <li><i> Control-F </i>
   //          Move the cursor one character rightwards
   //  <li><i> Control-H </i>
   //          Delete the character to the left of the cursor
   //  <li><i> Control-K </i>
   //          Delete marked text if any or delete all
   //          characters to the right of the cursor
   //  <li><i> Control-U </i>
   //          Delete all characters on the line
   //  <li><i> Control-V </i>
   //          Paste the clipboard text into line edit.
   //  <li><i> Control-X </i>
   //          Cut the marked text, copy to clipboard.
   //  <li><i> Control-Y </i>
   //          Paste the clipboard text into line edit.
   //  </ul>
   //End_Html
   //  All other keys with valid ASCII codes insert themselves into the line.

   Int_t  n;
   char   tmp[10];
   UInt_t keysym;

   if (fTip && event->fType == kGKeyPress) fTip->Hide();

   if (!IsEnabled() || event->fType != kGKeyPress) return kTRUE;

   gVirtualX->LookupString(event, tmp, sizeof(tmp), keysym);
   n = strlen(tmp);
   Int_t unknown = 0;

   if ((EKeySym)keysym  == kKey_Enter || (EKeySym)keysym  == kKey_Return) {

      ReturnPressed();                                      // emit signal
      if (!TestBit(kNotDeleted)) return kTRUE;
      fSelectionOn = kFALSE;

   } else if (event->fState & kKeyShiftMask && (EKeySym)keysym  == kKey_Backtab) {
         ShiftTabPressed();                               // emit signal
         fSelectionOn = kFALSE;
         return kTRUE;

   } else if ((EKeySym)keysym  == kKey_Tab) {

      TabPressed();                                         // emit signal
      fSelectionOn = kFALSE;

   } else if (event->fState & kKeyControlMask) {  // Cntrl key modifier pressed
      switch ((EKeySym)keysym & ~0x20) {     // treat upper and lower the same
      case kKey_A:
         Home(event->fState & kKeyShiftMask);
         break;
      case kKey_B:
         CursorLeft(event->fState & kKeyShiftMask);
         break;
      case kKey_C:
         CopyText();
         break;
      case kKey_D:
         Del();
         break;
      case kKey_E:
         End(event->fState & kKeyShiftMask);
         break;
      case kKey_F:
         CursorRight(event->fState & kKeyShiftMask);
         break;
      case kKey_H:
         Backspace();
         break;
      case kKey_K:
         HasMarkedText() ? Del() : Remove();
         break;
      case kKey_U:
         Home();
         Remove();
         break;
      case kKey_V:
         Paste();
         break;
      case kKey_X:
         Cut();
         break;
      case kKey_Y:
         Paste();
         break;
      case kKey_Right:
         CursorWordForward(event->fState & kKeyShiftMask);
         break;
      case kKey_Left:
         CursorWordBackward(event->fState & kKeyShiftMask);
         break;
      default:
         unknown++;
      }
   } else if (n && keysym <127 && keysym >=32  &&     // printable keys
               (EKeySym)keysym  != kKey_Delete &&
               (EKeySym)keysym  != kKey_Backspace) {

      Insert(tmp);
      fSelectionOn = kFALSE;

   } else {
      switch ((EKeySym)keysym) {
      case kKey_Down:
         CursorOutDown();
         break;
      case kKey_Up:
         CursorOutUp();
         break;
      case kKey_Left:
         CursorLeft(event->fState & kKeyShiftMask);
         break;
      case kKey_Right:
         CursorRight(event->fState & kKeyShiftMask);
         break;
      case kKey_Backspace:
         Backspace();
         break;
      case kKey_Home:
         Home(event->fState & kKeyShiftMask);
         break;
      case kKey_End:
         End(event->fState & kKeyShiftMask);
         break;
      case kKey_Delete:
         Del();
         break;
      case kKey_Insert:                     // switch on/off insert mode
         SetInsertMode(GetInsertMode() == kInsert ? kReplace : kInsert);
         break;
      default:
         unknown++;
      }
   }

   UpdateOffset();
   fClient->NeedRedraw(this);

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextEntry::HandleButton(Event_t *event)
{
   // Handle mouse button event in text entry widget.

   if (fTip) fTip->Hide();

   if (!IsEnabled()) return kTRUE;

   if (event->fType == kButtonPress) {
      SetFocus();
      if (fEchoMode == kNoEcho) return kTRUE;

      if (event->fCode == kButton1) {
         Int_t offset =  IsFrameDrawn() ? 4 : 0;
         Int_t x = fOffset + offset;
         Int_t position     = GetCharacterIndex(event->fX - x);
         fSelectionOn = kFALSE;
         SetCursorPosition(position);
         DoRedraw();
      } else if (event->fCode == kButton2) {
         if (gVirtualX->GetPrimarySelectionOwner() == kNone) {
            // No primary selection, so use the cut buffer
            PastePrimary(fClient->GetDefaultRoot()->GetId(), kCutBuffer, kFALSE);
         } else {
            gVirtualX->ConvertPrimarySelection(fId, fClipboard, event->fTime);
         }
      }
   }
   if (event->fType == kButtonRelease)
      if (event->fCode == kButton1)
         CopyText();

   return kTRUE;
}

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

   if (event->fType == kEnterNotify) {
      if (fTip) fTip->Reset();
   } else {
      if (fTip) fTip->Hide();
   }

   return kTRUE;
}

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

   if (!IsEnabled() || (GetEchoMode() == kNoEcho)) return kTRUE;

   Int_t offset =  IsFrameDrawn() ? 4 : 0;
   Int_t x = fOffset + offset;
   Int_t position = GetCharacterIndex(event->fX - x); // + 1;
   fSelectionOn = kTRUE;
   NewMark(position);
   UpdateOffset();
   DoRedraw();
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextEntry::HandleDoubleClick(Event_t *event)
{
   // Handle mouse double click event in the text entry widget.

   if (!IsEnabled()) return kTRUE;

   Int_t offset = IsFrameDrawn() ? 4 : 0;
   Int_t x = fOffset + offset ;

   DoubleClicked();
   SetFocus();
   if (fEchoMode == kNoEcho) return kTRUE;

   Int_t position = GetCharacterIndex(event->fX  - x);
   MarkWord(position);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextEntry::HandleConfigureNotify(Event_t* event)
{
   // Handles resize events for this widget.

   TGFrame::HandleConfigureNotify(event);
   UpdateOffset();
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextEntry::HandleFocusChange(Event_t *event)
{
   // Handle focus change event in text entry widget.

   if (!IsEnabled()) return kTRUE;

   // check this when porting to Win32
      if (event->fType == kFocusIn) {
         fCursorOn = kTRUE;
         if (!fCurBlink) fCurBlink = new TBlinkTimer(this, 500);
         fCurBlink->Reset();
         gBlinkingEntry = this;
         gSystem->AddTimer(fCurBlink);
      } else {
         fCursorOn = kFALSE;
          // fSelectionOn = kFALSE;        // "netscape location behavior"
         if (fCurBlink) fCurBlink->Remove();
         gBlinkingEntry = 0;
      }
      fClient->NeedRedraw(this);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextEntry::HandleSelection(Event_t *event)
{
   // Handle text selection event.

   PastePrimary((Window_t)event->fUser[0], (Atom_t)event->fUser[3], kTRUE);
   return kTRUE;
}

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

   fSelectionOn = kFALSE;
   fEndIX = fStartIX = fCursorIX;
   fClient->NeedRedraw(this);
   return kTRUE;
}

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

   Event_t reply;
   char   *buffer;
   Long_t  len;
   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;
   if (fgClipboardText) len = fgClipboardText->Length();
   buffer = new char[len+1];
   if (fgClipboardText) strcpy (buffer, fgClipboardText->Data());
   buffer[len] = '\0';

   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;
}

//______________________________________________________________________________
void TGTextEntry::PastePrimary(Window_t wid, Atom_t property, Bool_t del)
{
   // Paste text from selection (either primary or cut buffer) into
   // text entry widget.

   TString data;
   Int_t   nchar;

   if (!IsEnabled()) return;

   gVirtualX->GetPasteBuffer(wid, property, data, nchar, del);

   if (nchar) Insert(data.Data());
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
Bool_t TGTextEntry::HandleTimer(TTimer *)
{
   // Handle cursor blink timer.

   fCursorOn = !fCursorOn;
   DoRedraw();
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTextEntry::IsCursorOutOfFrame()
{
   // Returns kTRUE if cursor is out of frame.

   //   fCursorX = fOffset + 4 + gVirtualX->TextWidth(fFontStruct,
   //                                  GetDisplayText(), fCursorIX);

   Int_t offset =  IsFrameDrawn() ? 4 : 0;
   Int_t w = GetWidth();
   return ((fCursorX < offset) || (fCursorX > w-offset));
}

//______________________________________________________________________________
void TGTextEntry::ScrollByChar()
{
   // Shift position of cursor by one character.

   if (GetEchoMode() == kNoEcho) return;

   TString dt = GetDisplayText();
   Int_t len = dt.Length();
   Int_t ind = fCursorIX < len-1 ? fCursorIX : len-1;
   Int_t charWidth = ind < 0 ? 4 : gVirtualX->TextWidth(fFontStruct, &dt[ind],1);
   Int_t w = GetWidth();
   Int_t d;
   Int_t offset =  IsFrameDrawn() ? 4 : 0;

   if (fCursorX < offset) {
      fOffset += charWidth;
      fCursorX += charWidth;
      d = fCursorX;

      if (d < offset){          // correction
         d -= offset;
         fOffset -= d;
         fCursorX -= d;
         charWidth += d;
      }
   } else if (fCursorX > w-offset) {
      fOffset -= charWidth;
      fCursorX -= charWidth;
      d = w - fCursorX;

      if (d < offset) {        // correction
         d -= offset;
         fOffset += d;
         fCursorX += d;
         charWidth += d;
      }
   }
}

//______________________________________________________________________________
void TGTextEntry::UpdateOffset()
{
   // Updates start text offset according GetAlignment() mode,
   // if cursor is out of frame => scroll the text.
   // See also SetAlignment() and ScrollByChar().

   TString dt = GetDisplayText();
   Int_t textWidth = gVirtualX->TextWidth(fFontStruct, dt.Data() , dt.Length());
   Int_t offset = IsFrameDrawn() ? 4 : 0;
   Int_t w = GetWidth() - 2 * offset;   // subtract border twice

   if (textWidth > 0 && textWidth > w) {                          // may need to scroll.
      if (IsCursorOutOfFrame()) ScrollByChar();
   }
   else if (fAlignment == kTextRight)   fOffset = w - textWidth - 1;
   else if (fAlignment == kTextCenterX) fOffset = (w - textWidth)/2;
   else if (fAlignment == kTextLeft)    fOffset = 0;
}

//______________________________________________________________________________
void TGTextEntry::SetToolTipText(const char *text, Long_t delayms)
{
   // Set tool tip text associated with this text entry. The delay is in
   // milliseconds (minimum 250). To remove tool tip call method with
   // text = 0.

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

   if (text && strlen(text))
      fTip = new TGToolTip(fClient->GetDefaultRoot(), this, text, delayms);
}

//______________________________________________________________________________
void TGTextEntry::SetFocus()
{
   // Set focus to this text entry.

   if (gBlinkingEntry && (gBlinkingEntry != this)) {
      gBlinkingEntry->fCurBlink->Remove();
   }
   RequestFocus();
}

//_____________________________________________________________________
void TGTextEntry::InsertText(const char *text, Int_t pos)
{
   // Inserts text at position pos, clears the selection and moves
   // the cursor to the end of the line.
   // If necessary the text is truncated to fit MaxLength().
   // See also GetText(), SetText(), AppendText(), RemoveText().

   Int_t position = TMath::Min((Int_t)fText->GetTextLength(), pos);
   TString newText(GetText());
   newText.Insert(position, text);
   SetText(newText.Data());
}

//_____________________________________________________________________
void TGTextEntry::AppendText(const char *text)
{
   // Appends text to the end of text entry, clears the selection
   // and moves the cursor to the end of the line.
   // If necessary the text is truncated to fit MaxLength().
   // See also GetText(), InsertText(), SetText(), RemoveText().

   InsertText(text, fText->GetTextLength());
}

//_____________________________________________________________________
void TGTextEntry::RemoveText(Int_t start, Int_t end)
{
   // Removes text at the range, clears the selection and moves
   // the cursor to the end of the line.
   // See also GetText(), InsertText(), SetText(), AppendText().

   Int_t pos = TMath::Min(start, end);
   Int_t len = TMath::Abs(end-start);
   TString newText(GetText());
   newText.Remove(pos, len);
   SetText(newText.Data());
}


//______________________________________________________________________________
void TGTextEntry::SetFont(FontStruct_t font, Bool_t local)
{
   // Changes text font.
   // If local is kTRUE font is changed locally.

   if (font == fFontStruct) return;

   FontH_t v = gVirtualX->GetFontHandle(font);

   if (!v) return;

   if (local) {
      TGGC *gc = new TGGC(fNormGC); // copy
      fHasOwnFont = kTRUE;
      fNormGC = *gc;
      gc = new TGGC(fSelGC); // copy
      fSelGC = *gc;
   }
   fNormGC.SetFont(v);
   fSelGC.SetFont(v);
   fFontStruct = font;
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGTextEntry::SetFont(const char *fontName, Bool_t local)
{
   // Changes text font specified by name.
   // If local is kTRUE font is changed locally.

   TGFont *font = fClient->GetFont(fontName);
   if (font) {
      SetFont(font->GetFontStruct(), local);
   }
}

//______________________________________________________________________________
void TGTextEntry::SetFont(TGFont *font, Bool_t local)
{
   // Changes text font specified by pointer to TGFont object.
   // If local is kTRUE font is changed locally.

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

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

   if (local) {
      TGGC *gc = new TGGC(fNormGC); // copy
      fHasOwnFont = kTRUE;
      fNormGC = *gc;
   }

   fNormGC.SetForeground(color);
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGTextEntry::SetTextColor(TColor *color, Bool_t local)
{
   // Changes text color.
   // If local is true color is changed locally.

   if (color) {
      SetTextColor(color->GetPixel(), local);
   }
}

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

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

//______________________________________________________________________________
const TGGC &TGTextEntry::GetDefaultGC()
{
   // Return default graphics context.

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

//______________________________________________________________________________
const TGGC &TGTextEntry::GetDefaultSelectedGC()
{
   // Return selection graphics context.

   if (!fgDefaultSelectedGC)
      fgDefaultSelectedGC = gClient->GetResourcePool()->GetSelectedGC();
   return *fgDefaultSelectedGC;
}

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

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

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

   char quote = '"';

   // font + GC
   option = GetName()+5;         // unique digit id of the name
   char parGC[50], parFont[50];
   sprintf(parFont,"%s::GetDefaultFontStruct()",IsA()->GetName());
   sprintf(parGC,"%s::GetDefaultGC()()",IsA()->GetName());

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

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

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

   out << "   TGTextEntry *";
   out << GetName() << " = new TGTextEntry(" << fParent->GetName()
       << ", new TGTextBuffer(" << GetBuffer()->GetBufferLength() << ")";

   if (fBackground == GetWhitePixel()) {
      if (GetOptions() == (kSunkenFrame | kDoubleBorder)) {
         if (fFontStruct == GetDefaultFontStruct()) {
            if (fNormGC() == GetDefaultGC()()) {
               if (fWidgetId == -1) {
                  out <<");" << endl;
               } else {
                  out << "," << fWidgetId << ");" << endl;
               }
            } else {
               out << "," << fWidgetId << "," << parGC << ");" << endl;
            }
         } else {
            out << "," << fWidgetId << "," << parGC << "," << parFont
                <<");" << endl;
         }
      } else {
         out << "," << fWidgetId << "," << parGC << "," << parFont
             << "," << GetOptionString() << ");" << endl;
      }
   } else {
      out << "," << fWidgetId << "," << parGC << "," << parFont
          << "," << GetOptionString() << ",ucolor);" << endl;
   }

   out << "   " << GetName() << "->SetMaxLength(" << GetMaxLength() << ");" << endl;

   out << "   " << GetName() << "->SetAlignment(";

   if (fAlignment == kTextLeft)
      out << "kTextLeft);"    << endl;

   if (fAlignment == kTextRight)
      out << "kTextRight);"   << endl;

   if (fAlignment == kTextCenterX)
      out << "kTextCenterX);" << endl;

   out << "   " << GetName() << "->SetText(" << quote << GetText() << quote
       << ");" << endl;

   out << "   " << GetName() << "->Resize("<< GetWidth() << "," << GetName()
       << "->GetDefaultHeight());" << endl;

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