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

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGToolTip                                                            //
//                                                                      //
// A tooltip can be a one or multiple lines help text that is displayed //
// in a window when the mouse cursor overs a widget, without clicking   //
// it. A small box appears with suplementary information regarding the  //
// item being hovered over.                                             //                               //
//                                                                      //
// A multiline tooltip can be created by inserting a new-line character //
// "\n" in the tooltip string. For example:                             //
//                                                                      //
// fButton->SetToolTipText("Go to the ROOT page\n (http://root.cern.ch) //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGToolTip.h"
#include "TGLabel.h"
#include "TGResourcePool.h"
#include "TTimer.h"
#include "TSystem.h"
#include "TVirtualPad.h"
#include "TBox.h"


ClassImp(TGToolTip)

//______________________________________________________________________________
class TTipDelayTimer : public TTimer {
private:
   TGToolTip   *fTip;  // tooltip
public:
   TTipDelayTimer(TGToolTip *tip, Long_t ms) : TTimer(ms, kTRUE) { fTip = tip; }
   Bool_t Notify();
};

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

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


//______________________________________________________________________________
TGToolTip::TGToolTip(const TGWindow *p, const TGFrame *f, const char *text,
                     Long_t delayms)
   : TGCompositeFrame(p, 10, 10, kTempFrame | kHorizontalFrame | kRaisedFrame)
{
   // Create a tool tip. P is the tool tips parent window (normally
   // fClient->GetRoot(), f is the frame to which the tool tip is associated,
   // text is the tool tip one-liner and delayms is the delay in ms before
   // the tool tip is shown.

   SetWindowAttributes_t attr;
   attr.fMask             = kWAOverrideRedirect | kWASaveUnder;
   attr.fOverrideRedirect = kTRUE;
   attr.fSaveUnder        = kTRUE;

   gVirtualX->ChangeWindowAttributes(fId, &attr);
   SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());

   fLabel = new TGLabel(this, text);
   fLabel->SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());
   fLabel->SetTextColor(fClient->GetResourcePool()->GetTipFgndColor());

   AddFrame(fLabel, fL1 = new TGLayoutHints(kLHintsLeft | kLHintsTop,
                                            2, 3, 0, 0));
   MapSubwindows();
   Resize(GetDefaultSize());

   fWindow = f;
   fPad    = 0;
   fBox    = 0;
   fX = fY = -1;
   fDelay = new TTipDelayTimer(this, delayms);
}

//______________________________________________________________________________
TGToolTip::TGToolTip(const TGWindow *p, const TBox *box, const char *text,
                     Long_t delayms)
   : TGCompositeFrame(p, 10, 10, kTempFrame | kHorizontalFrame | kRaisedFrame)
{
   // Create a tool tip. P is the tool tips parent window (normally
   // fClient->GetRoot(), box is the area to which the tool tip is associated,
   // text is the tool tip one-liner and delayms is the delay in ms before
   // the tool tip is shown. When using this ctor with the box argument
   // you have to use Reset(const TVirtualPad *parent).

   SetWindowAttributes_t attr;
   attr.fMask             = kWAOverrideRedirect | kWASaveUnder;
   attr.fOverrideRedirect = kTRUE;
   attr.fSaveUnder        = kTRUE;

   gVirtualX->ChangeWindowAttributes(fId, &attr);
   SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());

   fLabel = new TGLabel(this, text);
   fLabel->SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());
   fLabel->SetTextColor(fClient->GetResourcePool()->GetTipFgndColor());

   AddFrame(fLabel, fL1 = new TGLayoutHints(kLHintsLeft | kLHintsTop,
                                            2, 3, 0, 0));
   MapSubwindows();
   Resize(GetDefaultSize());

   fWindow = 0;
   fPad    = 0;
   fBox    = box;
   fDelay = new TTipDelayTimer(this, delayms);
}

//______________________________________________________________________________
TGToolTip::TGToolTip(const TBox *box, const char *text,Long_t delayms)
   : TGCompositeFrame(gClient->GetRoot(), 10, 10, kTempFrame | kHorizontalFrame | kRaisedFrame)
{
   // Create a tool tip in the parent window gClient->GetRoot(),
   // box is the area to which the tool tip is associated,
   // text is the tool tip one-liner and delayms is the delay in ms before
   // the tool tip is shown. When using this ctor with the box argument
   // you have to use Reset(const TVirtualPad *parent).

   SetWindowAttributes_t attr;
   attr.fMask             = kWAOverrideRedirect | kWASaveUnder;
   attr.fOverrideRedirect = kTRUE;
   attr.fSaveUnder        = kTRUE;

   gVirtualX->ChangeWindowAttributes(fId, &attr);
   SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());

   fLabel = new TGLabel(this, text);
   fLabel->SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());
   fLabel->SetTextColor(fClient->GetResourcePool()->GetTipFgndColor());

   AddFrame(fLabel, fL1 = new TGLayoutHints(kLHintsLeft | kLHintsTop,
                                            2, 3, 0, 0));
   MapSubwindows();
   Resize(GetDefaultSize());

   fWindow = 0;
   fPad    = 0;
   fBox    = box;
   fDelay = new TTipDelayTimer(this, delayms);
}

//______________________________________________________________________________
TGToolTip::TGToolTip(Int_t x, Int_t y, const char *text, Long_t delayms)
   : TGCompositeFrame(gClient->GetDefaultRoot(), 10, 10, kTempFrame | kHorizontalFrame | kRaisedFrame)
{
   // Create a tool tip on global coordinates x, y.
   // text is the tool tip one-liner and delayms is the delay in ms before
   // the tool tip is shown.

   SetWindowAttributes_t attr;
   attr.fMask             = kWAOverrideRedirect | kWASaveUnder;
   attr.fOverrideRedirect = kTRUE;
   attr.fSaveUnder        = kTRUE;

   gVirtualX->ChangeWindowAttributes(fId, &attr);
   SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());

   fLabel = new TGLabel(this, text);
   fLabel->SetBackgroundColor(fClient->GetResourcePool()->GetTipBgndColor());
   fLabel->SetTextColor(fClient->GetResourcePool()->GetTipFgndColor());

   AddFrame(fLabel, fL1 = new TGLayoutHints(kLHintsLeft | kLHintsTop,
                                            2, 3, 0, 0));
   MapSubwindows();
   Resize(GetDefaultSize());

   fWindow = 0;
   fPad    = 0;
   fBox    = 0;
   fX      = x;
   fY      = y;
   fDelay = new TTipDelayTimer(this, delayms);
}

//______________________________________________________________________________
TGToolTip::~TGToolTip()
{
   // Delete a tool tip object.

   delete fDelay;
   delete fLabel;
   delete fL1;
}

//______________________________________________________________________________
void TGToolTip::DrawBorder()
{
   // Draw border of tool tip window.

   gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, fWidth-2, 0);
   gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, 0, fHeight-2);
   gVirtualX->DrawLine(fId, GetBlackGC()(),  0, fHeight-1, fWidth-1, fHeight-1);
   gVirtualX->DrawLine(fId, GetBlackGC()(),  fWidth-1, fHeight-1, fWidth-1, 0);
}

//______________________________________________________________________________
void TGToolTip::Show(Int_t x, Int_t y)
{
   // Show tool tip window.

   Move(x, y);
   MapWindow();
   RaiseWindow();

   Long_t args[2];
   args[0] = x;
   args[1] = y;

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

//______________________________________________________________________________
void TGToolTip::Hide()
{
   // Hide tool tip window. Use this method to hide the tool tip in a client
   // class.

   UnmapWindow();

   fDelay->Remove();

   Emit("Hide()");
}

//______________________________________________________________________________
void TGToolTip::Reset()
{
   // Reset tool tip popup delay timer. Use this method to activate tool tip
   // in a client class.

   fDelay->Reset();
   gSystem->AddTimer(fDelay);

   Emit("Reset()");
}

//______________________________________________________________________________
void TGToolTip::Reset(const TVirtualPad *parent)
{
   // Reset tool tip popup delay timer. Use this method to activate tool tip
   // in a client class. Use this method for graphics objects drawn in a
   // TCanvas, also the tool tip must have been created with the ctor
   // taking the TBox as argument.

   fPad = parent;

   fDelay->Reset();
   gSystem->AddTimer(fDelay);
}

//______________________________________________________________________________
Bool_t TGToolTip::HandleTimer(TTimer *)
{
   // If tool tip delay timer times out show tool tip window.

   Int_t    x = 0, y = 0, px1 = 0, px2 = 0, py1 = 0;
   Window_t wtarget;

   if (fWindow) {
      gVirtualX->TranslateCoordinates(fWindow->GetId(), GetParent()->GetId(),
                                      fX == -1 ? Int_t(fWindow->GetWidth() >> 1) : fX,
                                      fY == -1 ? Int_t(fWindow->GetHeight()) : fY,
                                      x, y, wtarget);
   } else if(fPad) {
      if (fBox) {
         px1 = fPad->XtoAbsPixel(fBox->GetX1());
         px2 = fPad->XtoAbsPixel(fBox->GetX2());
         py1 = fPad->YtoAbsPixel(fBox->GetY1());
         // py2 = fPad->YtoAbsPixel(fBox->GetY2());
      } else {
         px1 = fPad->XtoAbsPixel(fPad->GetX1());
         px2 = fPad->XtoAbsPixel(fPad->GetX2());
         py1 = fPad->YtoAbsPixel(fPad->GetY1());
         // py2 = fPad->YtoAbsPixel(fPad->GetY2());
      }
      gVirtualX->TranslateCoordinates(gVirtualX->GetWindowID(fPad->GetCanvasID()),
                                      GetParent()->GetId(),
                                      px1 + ((px2-px1) >> 1), py1,
                                      x, y, wtarget);
   } else {
      x = fX;
      y = fY;
   }

   Int_t move = 0;
   Window_t dum1, dum2;
   UInt_t mask = 0;
   Int_t mx, my;
   UInt_t screenW = fClient->GetDisplayWidth();
   UInt_t screenH = fClient->GetDisplayHeight();

   gVirtualX->QueryPointer(gVirtualX->GetDefaultRootWindow(),
                           dum1, dum2, mx, my, mx, my, mask);

   fLabel->SetWrapLength(-1);
   Resize(GetDefaultSize());

   // don't allow tooltip text lines longer than half the screen size
   if (fWidth > (screenW/2))
      fLabel->SetWrapLength((screenW/2)-15);
   Resize(GetDefaultSize());

   if (x + fWidth > screenW) {
      x = screenW - fWidth;
      move += 1;
   }

   if (y+4 + GetHeight() > screenH) {
      y = screenH - (fHeight + 25);
      move += 2;
   }

   // check if the mouse is inside the tooltip (may happen after
   // adjusting the position when out of screen) and place the tooltip
   // on the other side of the mouse pointer
   TGRectangle rect(x, y, x+fWidth, y+fHeight);
   if (rect.Contains(mx, my)) {
      if (move == 1) { // left
         if (fWidth+15 < (UInt_t)mx)
            x = mx - fWidth - 15;
         else if (my + fHeight+15 < screenH)
            y = my + 15;
         else if (fHeight+15 < (UInt_t)my)
            y = my - fHeight - 15;
      }
      else if (move == 2) { // up
         if (mx + fWidth+15 < screenW)
            x = mx + 15;
         else if (fHeight+15 < (UInt_t)my)
            y = my - fHeight - 15;
         else if (fWidth+15 < (UInt_t)mx)
            x = mx - fWidth - 15;
      }
      else { // up & left, right, down, ...
         if (my + fHeight+15 < screenH)
            y = my + 15;
         else if (mx + fWidth+15 < screenW)
            x = mx + 15;
         else if (fWidth+15 < (UInt_t)mx)
            x = mx - fWidth - 15;
         else if (fHeight+15 < (UInt_t)my)
            y = my - fHeight - 15;
      }
   }

   Show(x, y+4);

   fDelay->Remove();

   return kTRUE;
}

//______________________________________________________________________________
void TGToolTip::SetText(const char *new_text)
{
   // Set new tool tip text.

   fLabel->SetText(new TGString(new_text));
   Resize(GetDefaultSize());
}

//______________________________________________________________________________
void TGToolTip::SetDelay(Long_t delayms)
{
   // Set delay in milliseconds.

   fDelay->SetTime(delayms);
}

//______________________________________________________________________________
void TGToolTip::SetPosition(Int_t x, Int_t y)
{
   // Set popup position within specified frame (as specified in the ctor).
   // To get back default behaviour (in the middle just below the designated
   // frame) set position to -1,-1.

   fX = x;
   fY = y;

   if (fX < -1)
      fX = 0;
   if (fY < -1)
      fY = 0;

   if (fWindow) {
      if (fX > (Int_t) fWindow->GetWidth())
         fX = fWindow->GetWidth();
      if (fY > (Int_t) fWindow->GetHeight())
         fY = fWindow->GetHeight();
   }
}

//______________________________________________________________________________
const TGString *TGToolTip::GetText() const
{
   // Get the tool tip text.

   return fLabel->GetText();

}
 TGToolTip.cxx:1
 TGToolTip.cxx:2
 TGToolTip.cxx:3
 TGToolTip.cxx:4
 TGToolTip.cxx:5
 TGToolTip.cxx:6
 TGToolTip.cxx:7
 TGToolTip.cxx:8
 TGToolTip.cxx:9
 TGToolTip.cxx:10
 TGToolTip.cxx:11
 TGToolTip.cxx:12
 TGToolTip.cxx:13
 TGToolTip.cxx:14
 TGToolTip.cxx:15
 TGToolTip.cxx:16
 TGToolTip.cxx:17
 TGToolTip.cxx:18
 TGToolTip.cxx:19
 TGToolTip.cxx:20
 TGToolTip.cxx:21
 TGToolTip.cxx:22
 TGToolTip.cxx:23
 TGToolTip.cxx:24
 TGToolTip.cxx:25
 TGToolTip.cxx:26
 TGToolTip.cxx:27
 TGToolTip.cxx:28
 TGToolTip.cxx:29
 TGToolTip.cxx:30
 TGToolTip.cxx:31
 TGToolTip.cxx:32
 TGToolTip.cxx:33
 TGToolTip.cxx:34
 TGToolTip.cxx:35
 TGToolTip.cxx:36
 TGToolTip.cxx:37
 TGToolTip.cxx:38
 TGToolTip.cxx:39
 TGToolTip.cxx:40
 TGToolTip.cxx:41
 TGToolTip.cxx:42
 TGToolTip.cxx:43
 TGToolTip.cxx:44
 TGToolTip.cxx:45
 TGToolTip.cxx:46
 TGToolTip.cxx:47
 TGToolTip.cxx:48
 TGToolTip.cxx:49
 TGToolTip.cxx:50
 TGToolTip.cxx:51
 TGToolTip.cxx:52
 TGToolTip.cxx:53
 TGToolTip.cxx:54
 TGToolTip.cxx:55
 TGToolTip.cxx:56
 TGToolTip.cxx:57
 TGToolTip.cxx:58
 TGToolTip.cxx:59
 TGToolTip.cxx:60
 TGToolTip.cxx:61
 TGToolTip.cxx:62
 TGToolTip.cxx:63
 TGToolTip.cxx:64
 TGToolTip.cxx:65
 TGToolTip.cxx:66
 TGToolTip.cxx:67
 TGToolTip.cxx:68
 TGToolTip.cxx:69
 TGToolTip.cxx:70
 TGToolTip.cxx:71
 TGToolTip.cxx:72
 TGToolTip.cxx:73
 TGToolTip.cxx:74
 TGToolTip.cxx:75
 TGToolTip.cxx:76
 TGToolTip.cxx:77
 TGToolTip.cxx:78
 TGToolTip.cxx:79
 TGToolTip.cxx:80
 TGToolTip.cxx:81
 TGToolTip.cxx:82
 TGToolTip.cxx:83
 TGToolTip.cxx:84
 TGToolTip.cxx:85
 TGToolTip.cxx:86
 TGToolTip.cxx:87
 TGToolTip.cxx:88
 TGToolTip.cxx:89
 TGToolTip.cxx:90
 TGToolTip.cxx:91
 TGToolTip.cxx:92
 TGToolTip.cxx:93
 TGToolTip.cxx:94
 TGToolTip.cxx:95
 TGToolTip.cxx:96
 TGToolTip.cxx:97
 TGToolTip.cxx:98
 TGToolTip.cxx:99
 TGToolTip.cxx:100
 TGToolTip.cxx:101
 TGToolTip.cxx:102
 TGToolTip.cxx:103
 TGToolTip.cxx:104
 TGToolTip.cxx:105
 TGToolTip.cxx:106
 TGToolTip.cxx:107
 TGToolTip.cxx:108
 TGToolTip.cxx:109
 TGToolTip.cxx:110
 TGToolTip.cxx:111
 TGToolTip.cxx:112
 TGToolTip.cxx:113
 TGToolTip.cxx:114
 TGToolTip.cxx:115
 TGToolTip.cxx:116
 TGToolTip.cxx:117
 TGToolTip.cxx:118
 TGToolTip.cxx:119
 TGToolTip.cxx:120
 TGToolTip.cxx:121
 TGToolTip.cxx:122
 TGToolTip.cxx:123
 TGToolTip.cxx:124
 TGToolTip.cxx:125
 TGToolTip.cxx:126
 TGToolTip.cxx:127
 TGToolTip.cxx:128
 TGToolTip.cxx:129
 TGToolTip.cxx:130
 TGToolTip.cxx:131
 TGToolTip.cxx:132
 TGToolTip.cxx:133
 TGToolTip.cxx:134
 TGToolTip.cxx:135
 TGToolTip.cxx:136
 TGToolTip.cxx:137
 TGToolTip.cxx:138
 TGToolTip.cxx:139
 TGToolTip.cxx:140
 TGToolTip.cxx:141
 TGToolTip.cxx:142
 TGToolTip.cxx:143
 TGToolTip.cxx:144
 TGToolTip.cxx:145
 TGToolTip.cxx:146
 TGToolTip.cxx:147
 TGToolTip.cxx:148
 TGToolTip.cxx:149
 TGToolTip.cxx:150
 TGToolTip.cxx:151
 TGToolTip.cxx:152
 TGToolTip.cxx:153
 TGToolTip.cxx:154
 TGToolTip.cxx:155
 TGToolTip.cxx:156
 TGToolTip.cxx:157
 TGToolTip.cxx:158
 TGToolTip.cxx:159
 TGToolTip.cxx:160
 TGToolTip.cxx:161
 TGToolTip.cxx:162
 TGToolTip.cxx:163
 TGToolTip.cxx:164
 TGToolTip.cxx:165
 TGToolTip.cxx:166
 TGToolTip.cxx:167
 TGToolTip.cxx:168
 TGToolTip.cxx:169
 TGToolTip.cxx:170
 TGToolTip.cxx:171
 TGToolTip.cxx:172
 TGToolTip.cxx:173
 TGToolTip.cxx:174
 TGToolTip.cxx:175
 TGToolTip.cxx:176
 TGToolTip.cxx:177
 TGToolTip.cxx:178
 TGToolTip.cxx:179
 TGToolTip.cxx:180
 TGToolTip.cxx:181
 TGToolTip.cxx:182
 TGToolTip.cxx:183
 TGToolTip.cxx:184
 TGToolTip.cxx:185
 TGToolTip.cxx:186
 TGToolTip.cxx:187
 TGToolTip.cxx:188
 TGToolTip.cxx:189
 TGToolTip.cxx:190
 TGToolTip.cxx:191
 TGToolTip.cxx:192
 TGToolTip.cxx:193
 TGToolTip.cxx:194
 TGToolTip.cxx:195
 TGToolTip.cxx:196
 TGToolTip.cxx:197
 TGToolTip.cxx:198
 TGToolTip.cxx:199
 TGToolTip.cxx:200
 TGToolTip.cxx:201
 TGToolTip.cxx:202
 TGToolTip.cxx:203
 TGToolTip.cxx:204
 TGToolTip.cxx:205
 TGToolTip.cxx:206
 TGToolTip.cxx:207
 TGToolTip.cxx:208
 TGToolTip.cxx:209
 TGToolTip.cxx:210
 TGToolTip.cxx:211
 TGToolTip.cxx:212
 TGToolTip.cxx:213
 TGToolTip.cxx:214
 TGToolTip.cxx:215
 TGToolTip.cxx:216
 TGToolTip.cxx:217
 TGToolTip.cxx:218
 TGToolTip.cxx:219
 TGToolTip.cxx:220
 TGToolTip.cxx:221
 TGToolTip.cxx:222
 TGToolTip.cxx:223
 TGToolTip.cxx:224
 TGToolTip.cxx:225
 TGToolTip.cxx:226
 TGToolTip.cxx:227
 TGToolTip.cxx:228
 TGToolTip.cxx:229
 TGToolTip.cxx:230
 TGToolTip.cxx:231
 TGToolTip.cxx:232
 TGToolTip.cxx:233
 TGToolTip.cxx:234
 TGToolTip.cxx:235
 TGToolTip.cxx:236
 TGToolTip.cxx:237
 TGToolTip.cxx:238
 TGToolTip.cxx:239
 TGToolTip.cxx:240
 TGToolTip.cxx:241
 TGToolTip.cxx:242
 TGToolTip.cxx:243
 TGToolTip.cxx:244
 TGToolTip.cxx:245
 TGToolTip.cxx:246
 TGToolTip.cxx:247
 TGToolTip.cxx:248
 TGToolTip.cxx:249
 TGToolTip.cxx:250
 TGToolTip.cxx:251
 TGToolTip.cxx:252
 TGToolTip.cxx:253
 TGToolTip.cxx:254
 TGToolTip.cxx:255
 TGToolTip.cxx:256
 TGToolTip.cxx:257
 TGToolTip.cxx:258
 TGToolTip.cxx:259
 TGToolTip.cxx:260
 TGToolTip.cxx:261
 TGToolTip.cxx:262
 TGToolTip.cxx:263
 TGToolTip.cxx:264
 TGToolTip.cxx:265
 TGToolTip.cxx:266
 TGToolTip.cxx:267
 TGToolTip.cxx:268
 TGToolTip.cxx:269
 TGToolTip.cxx:270
 TGToolTip.cxx:271
 TGToolTip.cxx:272
 TGToolTip.cxx:273
 TGToolTip.cxx:274
 TGToolTip.cxx:275
 TGToolTip.cxx:276
 TGToolTip.cxx:277
 TGToolTip.cxx:278
 TGToolTip.cxx:279
 TGToolTip.cxx:280
 TGToolTip.cxx:281
 TGToolTip.cxx:282
 TGToolTip.cxx:283
 TGToolTip.cxx:284
 TGToolTip.cxx:285
 TGToolTip.cxx:286
 TGToolTip.cxx:287
 TGToolTip.cxx:288
 TGToolTip.cxx:289
 TGToolTip.cxx:290
 TGToolTip.cxx:291
 TGToolTip.cxx:292
 TGToolTip.cxx:293
 TGToolTip.cxx:294
 TGToolTip.cxx:295
 TGToolTip.cxx:296
 TGToolTip.cxx:297
 TGToolTip.cxx:298
 TGToolTip.cxx:299
 TGToolTip.cxx:300
 TGToolTip.cxx:301
 TGToolTip.cxx:302
 TGToolTip.cxx:303
 TGToolTip.cxx:304
 TGToolTip.cxx:305
 TGToolTip.cxx:306
 TGToolTip.cxx:307
 TGToolTip.cxx:308
 TGToolTip.cxx:309
 TGToolTip.cxx:310
 TGToolTip.cxx:311
 TGToolTip.cxx:312
 TGToolTip.cxx:313
 TGToolTip.cxx:314
 TGToolTip.cxx:315
 TGToolTip.cxx:316
 TGToolTip.cxx:317
 TGToolTip.cxx:318
 TGToolTip.cxx:319
 TGToolTip.cxx:320
 TGToolTip.cxx:321
 TGToolTip.cxx:322
 TGToolTip.cxx:323
 TGToolTip.cxx:324
 TGToolTip.cxx:325
 TGToolTip.cxx:326
 TGToolTip.cxx:327
 TGToolTip.cxx:328
 TGToolTip.cxx:329
 TGToolTip.cxx:330
 TGToolTip.cxx:331
 TGToolTip.cxx:332
 TGToolTip.cxx:333
 TGToolTip.cxx:334
 TGToolTip.cxx:335
 TGToolTip.cxx:336
 TGToolTip.cxx:337
 TGToolTip.cxx:338
 TGToolTip.cxx:339
 TGToolTip.cxx:340
 TGToolTip.cxx:341
 TGToolTip.cxx:342
 TGToolTip.cxx:343
 TGToolTip.cxx:344
 TGToolTip.cxx:345
 TGToolTip.cxx:346
 TGToolTip.cxx:347
 TGToolTip.cxx:348
 TGToolTip.cxx:349
 TGToolTip.cxx:350
 TGToolTip.cxx:351
 TGToolTip.cxx:352
 TGToolTip.cxx:353
 TGToolTip.cxx:354
 TGToolTip.cxx:355
 TGToolTip.cxx:356
 TGToolTip.cxx:357
 TGToolTip.cxx:358
 TGToolTip.cxx:359
 TGToolTip.cxx:360
 TGToolTip.cxx:361
 TGToolTip.cxx:362
 TGToolTip.cxx:363
 TGToolTip.cxx:364
 TGToolTip.cxx:365
 TGToolTip.cxx:366
 TGToolTip.cxx:367
 TGToolTip.cxx:368
 TGToolTip.cxx:369
 TGToolTip.cxx:370
 TGToolTip.cxx:371
 TGToolTip.cxx:372
 TGToolTip.cxx:373
 TGToolTip.cxx:374
 TGToolTip.cxx:375
 TGToolTip.cxx:376
 TGToolTip.cxx:377
 TGToolTip.cxx:378
 TGToolTip.cxx:379
 TGToolTip.cxx:380
 TGToolTip.cxx:381
 TGToolTip.cxx:382
 TGToolTip.cxx:383
 TGToolTip.cxx:384
 TGToolTip.cxx:385
 TGToolTip.cxx:386
 TGToolTip.cxx:387
 TGToolTip.cxx:388
 TGToolTip.cxx:389
 TGToolTip.cxx:390
 TGToolTip.cxx:391
 TGToolTip.cxx:392
 TGToolTip.cxx:393
 TGToolTip.cxx:394
 TGToolTip.cxx:395
 TGToolTip.cxx:396
 TGToolTip.cxx:397
 TGToolTip.cxx:398
 TGToolTip.cxx:399
 TGToolTip.cxx:400
 TGToolTip.cxx:401
 TGToolTip.cxx:402
 TGToolTip.cxx:403
 TGToolTip.cxx:404
 TGToolTip.cxx:405
 TGToolTip.cxx:406
 TGToolTip.cxx:407
 TGToolTip.cxx:408
 TGToolTip.cxx:409
 TGToolTip.cxx:410
 TGToolTip.cxx:411
 TGToolTip.cxx:412
 TGToolTip.cxx:413
 TGToolTip.cxx:414
 TGToolTip.cxx:415
 TGToolTip.cxx:416
 TGToolTip.cxx:417
 TGToolTip.cxx:418
 TGToolTip.cxx:419
 TGToolTip.cxx:420
 TGToolTip.cxx:421
 TGToolTip.cxx:422
 TGToolTip.cxx:423
 TGToolTip.cxx:424
 TGToolTip.cxx:425
 TGToolTip.cxx:426
 TGToolTip.cxx:427
 TGToolTip.cxx:428
 TGToolTip.cxx:429