Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGDockableFrame.cxx
Go to the documentation of this file.
1// @(#)root/gui:$Id$
2// Author: Abdelhalim Ssadik 07/07/04
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11/**************************************************************************
12
13 This source is based on Xclass95, a Win95-looking GUI toolkit.
14 Copyright (C) 1996, 1997 David Barth, Ricky Ralston, Hector Peraza.
15
16 Xclass95 is free software; you can redistribute it and/or
17 modify it under the terms of the GNU Library General Public
18 License as published by the Free Software Foundation; either
19 version 2 of the License, or (at your option) any later version.
20
21**************************************************************************/
22
23
24/** \class TGDockableFrame
25 \ingroup guiwidgets
26
27A frame with handles that allow it to be
28undocked (i.e. put in a transient frame of its own) and to be docked
29again or hidden and shown again. It uses the TGDockButton, which is
30a button with two vertical bars (||) and TGDockHideButton, which is
31a button with a small triangle. The TGUndockedFrame is a transient
32frame that on closure will put the frame back in the dock.
33
34*/
35
36
37#include "TColor.h"
38#include "TGFrame.h"
39#include "TGWidget.h"
40#include "TGButton.h"
41#include "TGDockableFrame.h"
42#include "TGWindow.h"
43#include "TList.h"
44#include "TVirtualX.h"
45
46#include <iostream>
47
48
49
50////////////////////////////////////////////////////////////////////////////////
51/// Create a dock button (i.e. button with two vertical bars).
52
54 TGButton (p, id, GetDefaultGC()(), kChildFrame)
55{
59
61
62 Float_t r, g, b, h, l, s;
64 TColor::RGB2HLS(r, g, b, h, l, s);
65 l = l + (1. - l) * 45. / 100.;
66 TColor::HLS2RGB(h, l, s, r, g, b);
68
71}
72
73////////////////////////////////////////////////////////////////////////////////
74/// Delete dock button.
75
79
80////////////////////////////////////////////////////////////////////////////////
81/// Handle dock button crossing events.
82
84{
86 if (event->fType == kLeaveNotify) {
88 } else if (event->fType == kEnterNotify) {
90 }
91 if (IsEnabled())
92 fClient->NeedRedraw(this);
93
94 return kTRUE;
95}
96
97////////////////////////////////////////////////////////////////////////////////
98/// Draw borders of dock button.
99
101{
102 int options = GetOptions();
103
105 ;
106 else if (fMouseOn == kTRUE && IsEnabled()) {
109 } else {
112 }
113 gVirtualX->ClearWindow(fId);
115
116 ChangeOptions(options);
117}
118
119////////////////////////////////////////////////////////////////////////////////
120/// Draw the dock button, i.e. two vertical lines.
121
123{
124 int x = 1, y = 0;
125
126 DrawBorder();
127 if (fState == kButtonDown || fState == kButtonEngaged) { ++x; ++y; }
128
129 for (int i = 0; i < 5; i +=4) {
130 gVirtualX->DrawLine(fId, GetHilightGC()(), i+x, y+1, i+x, fHeight-y-3);
131 gVirtualX->DrawLine(fId, GetShadowGC()(), i+x+1, y+1, i+x+1, fHeight-y-3);
132 }
133}
134
135
136////////////////////////////////////////////////////////////////////////////////
137/// Create a dock hide button (i.e. button with small triangle).
138
146
147////////////////////////////////////////////////////////////////////////////////
148/// Draw dock hide button.
149
151{
152 int x = 1, y = 0;
153
154 DrawBorder();
155 if (fState == kButtonDown || fState == kButtonEngaged) { ++x; ++y; }
156
157 if (fAspectRatio) {
158 gVirtualX->DrawLine(fId, GetBlackGC()(), x+1, y+1, x+5, y+3);
159 gVirtualX->DrawLine(fId, GetBlackGC()(), x+1, y+5, x+5, y+3);
160 gVirtualX->DrawLine(fId, GetHilightGC()(), x, y+1, x, y+5);
161 } else {
162 gVirtualX->DrawLine(fId, GetHilightGC()(), x+5, y+1, x+1, y+3);
163 gVirtualX->DrawLine(fId, GetHilightGC()(), x+5, y+5, x+1, y+3);
164 gVirtualX->DrawLine(fId, GetBlackGC()(), x+6, y+1, x+6, y+5);
165 }
166}
167
168
169////////////////////////////////////////////////////////////////////////////////
170/// Create the undocked (transient) frame.
171
185
186////////////////////////////////////////////////////////////////////////////////
187/// Delete undocked frame. Puts back dockable frame in its original container.
188
195
196////////////////////////////////////////////////////////////////////////////////
197/// Fix the size of the undocked frame so it cannot be changed via the WM.
198
205
206////////////////////////////////////////////////////////////////////////////////
207/// Close undocked frame (called via WM close button).
208
213
214
215////////////////////////////////////////////////////////////////////////////////
216/// Create a dockable frame widget.
217
255
256////////////////////////////////////////////////////////////////////////////////
257/// Cleanup dockable frame.
258
260{
261 // Just set the flag and delete fFrame. The other components
262 // are deleted in TGCompositeFrame destructor.
263 if (fFrame) {
264 fDeleted = kTRUE;
265 delete fFrame;
266 }
267}
268
269////////////////////////////////////////////////////////////////////////////////
270/// Add frame to dockable frame container. Frame and hints are NOT adopted.
271
278
279////////////////////////////////////////////////////////////////////////////////
280/// Undock container.
281
283{
284 int ax, ay;
286
287 if (fFrame || !fEnableUndock) return;
288
291
296
297 gVirtualX->TranslateCoordinates(GetId(), fClient->GetDefaultRoot()->GetId(), fX,
298 fY + fFrame->GetHeight(), ax, ay, wdummy);
299
301
304 if (fFixedSize)
305 fFrame->FixSize();
306 fFrame->MapWindow();
307 fFrame->Move(ax, ay);
308
309 if (((TGFrame *)fParent)->IsComposite()) // paranoia check
310 ((TGCompositeFrame *)fParent)->HideFrame(this);
311
312 Layout();
313
315 Undocked();
316}
317
318////////////////////////////////////////////////////////////////////////////////
319/// Dock container back to TGDockableFrame.
320
322{
323 if (!fFrame) return;
324 if (del) {
325 delete fFrame; // this will call DockContainer again with del = kFALSE
326 return;
327 }
328
332
333 // kludge! (for special case)
335
336 Layout();
337 if (((TGFrame *)fParent)->IsComposite()) // paranoia check
338 ((TGCompositeFrame *)fParent)->ShowFrame(this);
339
340 // fFrame is just being deleted (we're here called by TGUndockedFrame's
341 // destructor) so just set it NULL below to avoid eventual problems in
342 // TGDockableFrame's destructor.
343
344 fFrame = 0;
345
347 Docked();
348}
349
350////////////////////////////////////////////////////////////////////////////////
351/// Show dock container.
352
354{
355 if (!fHidden) return;
356
360 if (((TGFrame *)fParent)->IsComposite()) // paranoia check
361 ((TGCompositeFrame *)fParent)->Layout();
362 fHidden = kFALSE;
363
365}
366
367////////////////////////////////////////////////////////////////////////////////
368/// Hide dock container.
369
371{
372 if (fHidden || !fEnableHide) return;
373
377 if (((TGFrame *)fParent)->IsComposite()) // paranoia check
378 ((TGCompositeFrame *)fParent)->Layout();
379 fHidden = kTRUE;
380
382}
383
384////////////////////////////////////////////////////////////////////////////////
385/// Process dockable frame messages.
386
388{
389 switch (GET_MSG(msg)) {
390 case kC_COMMAND:
391 switch (GET_SUBMSG(msg)) {
392 case kCM_BUTTON:
393 switch (parm1) {
394 case 1:
395 if (!fHidden) UndockContainer();
396 break;
397 case 2:
398 if (!fHidden)
400 else
402 break;
403 }
404 break;
405 }
406 break;
407 }
408
409 return kTRUE;
410}
411
412////////////////////////////////////////////////////////////////////////////////
413/// Enable undocking.
414
424
425////////////////////////////////////////////////////////////////////////////////
426/// Enable hiding.
427
437
438////////////////////////////////////////////////////////////////////////////////
439/// Set window name so it appear as title of the undock window.
440
442{
443 fDockName = "";
444 if (name) {
445 fDockName = name;
447 }
448}
449
450////////////////////////////////////////////////////////////////////////////////
451/// Save a dockable frame widget as a C++ statement(s) on output stream out.
452
453void TGDockableFrame::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
454{
455 out << "\n // dockable frame\n";
456 out << " TGDockableFrame *" << GetName()<<" = new TGDockableFrame(" << fParent->GetName();
457
458 if (GetOptions() == kHorizontalFrame) {
459 if (fWidgetId == -1) {
460 out << ");\n";
461 } else {
462 out << "," << fWidgetId << ");\n";
463 }
464 } else {
465 out << "," << fWidgetId << "," << GetOptionString() << ");\n";
466 }
467 if (option && strstr(option, "keep_names"))
468 out << " " << GetName() << "->SetName(\"" << GetName() << "\");\n";
469
470 if (GetContainer()->GetList()->First()) {
471 out << " TGCompositeFrame *" << GetContainer()->GetName() << " = "
472 << GetName() << "->GetContainer();\n";
473
474 TIter next(GetContainer()->GetList());
475
476 while (auto el = (TGFrameElement *) next()) {
477 el->fFrame->SavePrimitive(out, option);
478 out << " " << GetName() << "->AddFrame(" << el->fFrame->GetName();
479 el->fLayout->SavePrimitive(out, option);
480 out << ");\n";
481 }
482 }
483 out << "\n // next lines belong to the dockable frame widget\n";
484 if (EnableUndock())
485 out << " " << GetName() << "->EnableUndock(kTRUE);\n";
486 else
487 out << " " << GetName() << "->EnableUndock(kFALSE);\n";
488
489 if (EnableHide())
490 out << " " << GetName() << "->EnableHide(kTRUE);\n";
491 else
492 out << " " << GetName() << "->EnableHide(kFALSE);\n";
493
494 if (fDockName.Length() > 0)
495 out << " " << GetName() << "->SetWindowName(\"" << TString(fDockName).ReplaceSpecialCppChars() << "\");\n";
496
497 if (IsUndocked())
498 out << " " << GetName() << "->UndockContainer();\n";
499 else
500 out << " " << GetName() << "->DockContainer();\n";
501
502 if (IsHidden())
503 out << " " << GetName() << "->HideContainer();\n";
504
505 out << " \n";
506}
@ kEnterNotify
Definition GuiTypes.h:61
@ kLeaveNotify
Definition GuiTypes.h:61
Handle_t Window_t
Window handle.
Definition GuiTypes.h:29
@ kChildFrame
Definition GuiTypes.h:379
@ kVerticalFrame
Definition GuiTypes.h:381
@ kHorizontalFrame
Definition GuiTypes.h:382
@ kFixedSize
Definition GuiTypes.h:390
const Mask_t kLeaveWindowMask
Definition GuiTypes.h:168
const Mask_t kEnterWindowMask
Definition GuiTypes.h:167
#define b(i)
Definition RSha256.hxx:100
#define f(i)
Definition RSha256.hxx:104
#define g(i)
Definition RSha256.hxx:105
#define h(i)
Definition RSha256.hxx:106
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
long Longptr_t
Integer large enough to hold a pointer (platform-dependent)
Definition RtypesCore.h:89
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:71
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
const char Option_t
Option string (const char)
Definition RtypesCore.h:80
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
@ kButtonDown
Definition TGButton.h:54
@ kButtonEngaged
Definition TGButton.h:55
@ kMWMDecorResizeH
Definition TGFrame.h:65
@ kMWMFuncAll
Definition TGFrame.h:49
@ kMWMFuncResize
Definition TGFrame.h:50
@ kMWMDecorMaximize
Definition TGFrame.h:69
@ kMWMDecorMinimize
Definition TGFrame.h:68
@ kMWMDecorMenu
Definition TGFrame.h:67
@ kMWMDecorAll
Definition TGFrame.h:63
@ kMWMFuncMaximize
Definition TGFrame.h:53
@ kMWMInputModeless
Definition TGFrame.h:57
@ kMWMFuncMinimize
Definition TGFrame.h:52
@ kLHintsExpandY
Definition TGLayout.h:31
@ kLHintsLeft
Definition TGLayout.h:24
@ kLHintsTop
Definition TGLayout.h:27
@ kLHintsExpandX
Definition TGLayout.h:30
@ kWidgetIsEnabled
Definition TGWidget.h:37
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t del
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void SetMWMHints
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t SetWMSizeHints
char name[80]
Definition TGX11.cxx:110
#define gVirtualX
Definition TVirtualX.h:337
Int_t MK_MSG(EWidgetMessageTypes msg, EWidgetMessageTypes submsg)
Int_t GET_MSG(Long_t val)
@ kDOCK_UNDOCK
@ kDOCK_DOCK
@ kC_COMMAND
@ kDOCK_SHOW
@ kCM_BUTTON
@ kDOCK_HIDE
@ kC_DOCK
Int_t GET_SUBMSG(Long_t val)
static void HLS2RGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
Static method to compute RGB from HLS.
Definition TColor.cxx:1581
static ULong_t RGB2Pixel(Int_t r, Int_t g, Int_t b)
Convert r,g,b to graphics system dependent pixel value.
Definition TColor.cxx:2483
static void Pixel2RGB(ULong_t pixel, Int_t &r, Int_t &g, Int_t &b)
Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::Ge...
Definition TColor.cxx:2521
static void RGB2HLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
Static method to compute HLS from RGB.
Definition TColor.cxx:1721
A button abstract base class.
Definition TGButton.h:68
EButtonState fState
button state
Definition TGButton.h:75
Bool_t HandleCrossing(Event_t *event) override
Handle mouse crossing event.
Definition TGButton.cxx:398
const TGWindow * GetDefaultRoot() const
Returns the root (i.e.
Definition TGClient.cxx:233
void NeedRedraw(TGWindow *w, Bool_t force=kFALSE)
Set redraw flags.
Definition TGClient.cxx:380
The base class for composite widgets (menu bars, list boxes, etc.).
Definition TGFrame.h:289
TGDimension GetDefaultSize() const override
std::cout << fWidth << "x" << fHeight << std::endl;
Definition TGFrame.h:318
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
Definition TGFrame.cxx:1109
virtual TList * GetList() const
Definition TGFrame.h:312
Bool_t IsComposite() const override
Definition TGFrame.h:355
void MapSubwindows() override
Map all sub windows that are part of the composite frame.
Definition TGFrame.cxx:1156
TGCompositeFrame(const TGCompositeFrame &)=delete
void Layout() override
Layout the elements of the composite frame.
Definition TGFrame.cxx:1249
virtual void ShowFrame(TGFrame *f)
Show sub frame.
Definition TGFrame.cxx:1196
void SetCleanup(Int_t mode=kLocalCleanup) override
Turn on automatic cleanup of child frames in dtor.
Definition TGFrame.cxx:1064
virtual void RemoveFrame(TGFrame *f)
Remove frame from composite frame.
Definition TGFrame.cxx:1141
void SetEditDisabled(UInt_t on=1) override
Set edit disable flag for this frame and subframes.
Definition TGFrame.cxx:1014
void ChangeOptions(UInt_t options) override
Change composite frame options. Options is an OR of the EFrameTypes.
Definition TGFrame.cxx:1035
virtual void HideFrame(TGFrame *f)
Hide sub frame.
Definition TGFrame.cxx:1182
~TGDockButton() override
Delete dock button.
ULong_t fNormBg
normal background color
Bool_t HandleCrossing(Event_t *event) override
Handle dock button crossing events.
ULong_t fHiBg
highlighted background color
Bool_t fMouseOn
true when mouse on button
void DoRedraw() override
Draw the dock button, i.e. two vertical lines.
void DrawBorder() override
Draw borders of dock button.
TGDockButton(const TGCompositeFrame *p=nullptr, Int_t id=1)
Create a dock button (i.e. button with two vertical bars).
void DoRedraw() override
Draw dock hide button.
TGDockHideButton(const TGCompositeFrame *p=nullptr)
Create a dock hide button (i.e. button with small triangle).
void SetAspectRatio(Int_t a)
Int_t fAspectRatio
triangle orientation
A frame with handles that allow it to be undocked (i.e.
void DockContainer(Int_t del=kTRUE)
Dock container back to TGDockableFrame.
Bool_t fEnableUndock
if frame can be undocked
friend class TGUndockedFrame
TGCompositeFrame * fButtons
container containing dock and hide buttons
TGUndockedFrame * fFrame
undocked frame
Bool_t ProcessMessage(Longptr_t, Longptr_t, Longptr_t) override
Process dockable frame messages.
TGLayoutHints * fLb
Bool_t IsHidden() const
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a dockable frame widget as a C++ statement(s) on output stream out.
TGCompositeFrame * GetContainer() const
void AddFrame(TGFrame *f, TGLayoutHints *hints) override
Add frame to dockable frame container. Frame and hints are NOT adopted.
TGCompositeFrame * fContainer
container containing dockable frame
Bool_t fHidden
if frame is hidden
TGDockableFrame(const TGDockableFrame &)=delete
void UndockContainer()
Undock container.
Bool_t fDeleted
kTRUE if it is being deleted
virtual void Undocked()
void HideContainer()
Hide dock container.
void SetWindowName(const char *name) override
Set window name so it appear as title of the undock window.
Bool_t EnableUndock() const
Bool_t fFixedSize
kTRUE if fixed size when undocked
TGLayoutHints * fHints
layout hints
Bool_t fEnableHide
if frame can be hidden
Bool_t EnableHide() const
TGDockButton * fDockButton
dock button
void ShowContainer()
Show dock container.
TGDockHideButton * fHideButton
hide button
virtual void Docked()
TString fDockName
name of frame
~TGDockableFrame() override
Cleanup dockable frame.
TGLayoutHints * fLc
layout hints
Bool_t IsUndocked() const
A subclasses of TGWindow, and is used as base class for some simple widgets (buttons,...
Definition TGFrame.h:80
virtual void ChangeOptions(UInt_t options)
Change frame options. Options is an OR of the EFrameTypes.
Definition TGFrame.cxx:313
void AddInput(UInt_t emask)
Add events specified in the emask to the events the frame should handle.
Definition TGFrame.cxx:331
static const TGGC & GetBlackGC()
Get black graphics context.
Definition TGFrame.cxx:727
Int_t fX
frame x position
Definition TGFrame.h:85
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
Definition TGFrame.cxx:597
UInt_t fHeight
frame height
Definition TGFrame.h:88
virtual UInt_t GetDefaultWidth() const
Definition TGFrame.h:192
virtual UInt_t GetDefaultHeight() const
Definition TGFrame.h:193
void ReparentWindow(const TGWindow *p, Int_t x=0, Int_t y=0) override
Reparent window, make p the new parent and position the window at position (x,y) in new parent.
Definition TGFrame.h:204
virtual void DrawBorder()
Draw frame border.
Definition TGFrame.cxx:413
void SetBackgroundColor(Pixel_t back) override
Set background color (override from TGWindow base class).
Definition TGFrame.cxx:304
TGDimension GetSize() const
Definition TGFrame.h:232
void MapWindow() override
map window
Definition TGFrame.h:206
static const TGGC & GetHilightGC()
Get highlight color graphics context.
Definition TGFrame.cxx:747
void Move(Int_t x, Int_t y) override
Move frame.
Definition TGFrame.cxx:585
virtual void DeleteWindow()
Delete window.
Definition TGFrame.cxx:268
virtual UInt_t GetOptions() const
Definition TGFrame.h:199
TString GetOptionString() const
Returns a frame option string - used in SavePrimitive().
Definition TGFrame.cxx:2512
Int_t fY
frame y position
Definition TGFrame.h:86
virtual void SendMessage(const TGWindow *w, Longptr_t msg, Longptr_t parm1, Longptr_t parm2)
Send message (i.e.
Definition TGFrame.cxx:637
static const TGGC & GetShadowGC()
Get shadow color graphics context.
Definition TGFrame.cxx:757
UInt_t fWidth
frame width
Definition TGFrame.h:87
UInt_t GetHeight() const
Definition TGFrame.h:227
Pixel_t fBackground
frame background color
Definition TGFrame.h:95
This class describes layout hints used by the layout classes.
Definition TGLayout.h:50
void SetWMSize(UInt_t w, UInt_t h)
Give the window manager a window size hint.
Definition TGFrame.cxx:1885
void SetWindowName(const char *name=nullptr) override
Set window name. This is typically done via the window manager.
Definition TGFrame.cxx:1780
TGClient * fClient
Connection to display server.
Definition TGObject.h:25
Handle_t GetId() const
Definition TGObject.h:41
Handle_t fId
X11/Win32 Window identifier.
Definition TGObject.h:24
Defines transient windows that typically are used for dialogs windows.
Definition TGFrame.h:500
void FixSize()
Fix the size of the undocked frame so it cannot be changed via the WM.
~TGUndockedFrame() override
Delete undocked frame. Puts back dockable frame in its original container.
TGDockableFrame * fDockable
orignal dockable frame
TGUndockedFrame(const TGUndockedFrame &)=delete
void CloseWindow() override
Close undocked frame (called via WM close button).
The widget base class.
Definition TGWidget.h:43
Int_t fWidgetId
the widget id (used for event processing)
Definition TGWidget.h:46
virtual void Associate(const TGWindow *w)
Definition TGWidget.h:72
Int_t fWidgetFlags
widget status flags (OR of EWidgetStatus)
Definition TGWidget.h:47
const TGWindow * fMsgWindow
window which handles widget events
Definition TGWidget.h:48
Bool_t IsEnabled() const
Definition TGWidget.h:69
ROOT GUI Window base class.
Definition TGWindow.h:23
const TGWindow * fParent
Parent window.
Definition TGWindow.h:28
virtual void SetWindowName(const char *name=nullptr)
Set window name.
Definition TGWindow.cxx:127
const char * GetName() const override
Return unique name, used in SavePrimitive methods.
Definition TGWindow.cxx:334
Basic string class.
Definition TString.h:138
Ssiz_t Length() const
Definition TString.h:425
TString & ReplaceSpecialCppChars()
Find special characters which are typically used in printf() calls and replace them by appropriate es...
Definition TString.cxx:1121
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
Event structure.
Definition GuiTypes.h:174
EGEventType fType
of event (see EGEventType)
Definition GuiTypes.h:175
TLine l
Definition textangle.C:4