Logo ROOT  
Reference Guide
TGSplitter.cxx
Go to the documentation of this file.
1// @(#)root/gui:$Id$
2// Author: Fons Rademakers 6/09/2000
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, 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// //
14// TGSplitter, TGVSplitter and TGHSplitter //
15// //
16// A splitter allows the frames left and right or above and below of //
17// it to be resized. The frame to be resized must have the kFixedWidth //
18// or kFixedHeight property set. //
19// //
20//////////////////////////////////////////////////////////////////////////
21
22#include "TGSplitter.h"
23#include "TGPicture.h"
24#include "Riostream.h"
25#include "TVirtualX.h"
26
27
32
33
34////////////////////////////////////////////////////////////////////////////////
35/// Create a splitter.
36
38 UInt_t options, ULong_t back) :
39 TGFrame(p, w, h, options, back),
40 fDragging (kFALSE),
41 fExternalHandler (kFALSE),
42 fSplitterPic (0)
43{
46}
47
48////////////////////////////////////////////////////////////////////////////////
49/// Emit DragStarted signal.
50
52{
53 Emit("DragStarted()");
54}
55
56////////////////////////////////////////////////////////////////////////////////
57/// Emit Moved signal.
58
60{
61 Emit("Moved(Int_t)", delta);
62}
63
64////////////////////////////////////////////////////////////////////////////////
65/// Create a vertical splitter.
66
68 UInt_t options, ULong_t back) : TGSplitter(p, w, h, options, back)
69{
71 fSplitterPic = fClient->GetPicture("splitterv.xpm");
73 fFrameWidth = w;
74 fLeft = kTRUE;
75 fMax = fMin = 0;
76 fStartX = 0;
77 fFrame = 0;
78
79 if (!fSplitterPic)
80 Error("TGVSplitter", "splitterv.xpm not found");
81
82 if (p && !p->InheritsFrom(TGCompositeFrame::Class())) {
83 Error("TGVSplitter", "parent must inherit from a TGCompositeFrame");
84 return;
85 }
86 if (p && !(((TGCompositeFrame*)p)->GetOptions() & kHorizontalFrame)) {
87 Error("TGVSplitter", "parent must have a horizontal layout manager");
88 return;
89 }
90
91 fSplitCursor = gVirtualX->CreateCursor(kArrowHor);
92
96
98}
99
100////////////////////////////////////////////////////////////////////////////////
101/// Create a vertical splitter.
102
104 TGSplitter(p, w, h, kChildFrame, GetDefaultFrameBackground())
105{
106 fExternalHandler = external;
107
109 fSplitterPic = fClient->GetPicture("splitterv.xpm");
110
111 if (!fSplitterPic)
112 Error("TGVSplitter", "splitterv.xpm not found");
113
114 fSplitCursor = gVirtualX->CreateCursor(kArrowHor);
115 fFrame = 0;
116 fFrameHeight = h;
117 fFrameWidth = w;
118 fLeft = kTRUE;
119 fMax = fMin = 0;
120 fStartX = 0;
121
122 gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
125
127}
128
129////////////////////////////////////////////////////////////////////////////////
130/// Delete vertical splitter widget.
131
133{
135}
136
137////////////////////////////////////////////////////////////////////////////////
138/// Set frame to be resized. If frame is on the left of the splitter
139/// set left to true.
140
142{
143 fFrame = frame;
144 fLeft = left;
145
147 Error("SetFrame", "resize frame must have kFixedWidth option set");
148}
149
150////////////////////////////////////////////////////////////////////////////////
151/// Handle mouse button event in vertical splitter.
152
154{
155 if (fSplitCursor == kNone) return kTRUE;
156
157 if (!fExternalHandler && !fFrame) {
158 Error("HandleButton", "frame to be resized not set");
159 return kTRUE;
160 }
161
162 if (event->fType == kButtonPress) {
163 fStartX = event->fXRoot;
165
166 if (fExternalHandler) {
167 fMin = 0;
168 fMax = 99999;
169 DragStarted();
170 } else {
171 Int_t x, y;
172 gVirtualX->GetWindowSize(fFrame->GetId(), x, y, fFrameWidth, fFrameHeight);
173
174 // get fMin and fMax in root coordinates
175 Int_t xroot, yroot;
176 UInt_t w, h;
177 Window_t wdum;
178 gVirtualX->GetWindowSize(fParent->GetId(), x, y, w, h);
179 gVirtualX->TranslateCoordinates(fParent->GetParent()->GetId(),
181 x, y, xroot, yroot, wdum);
182 fMin = xroot;
183 fMax = xroot + w - 2;
184 }
185
186 // last argument kFALSE forces all specified events to this window
189 kTRUE, kFALSE);
190 } else {
192 gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE); // ungrab pointer
193 }
194 return kTRUE;
195}
196
197////////////////////////////////////////////////////////////////////////////////
198/// Handle mouse motion event in vertical splitter.
199
201{
202 if (fDragging) {
203 Int_t xr = event->fXRoot;
204 if (xr > fMax) xr = fMax;
205 if (xr < fMin) xr = fMin;
206 Int_t delta = xr - fStartX;
207 if (fExternalHandler) {
208 if (delta != 0) {
209 Moved(delta);
210 fStartX = xr;
211 }
212 } else {
213 Int_t w = (Int_t) fFrameWidth;
214 if (fLeft)
215 w += delta;
216 else
217 w -= delta;
218 if (w < 0) w = 0;
219 fStartX = xr;
220
221 if (delta != 0) {
222 fFrameWidth = w;
224
226 p->Layout();
227 }
228 }
229 }
230 return kTRUE;
231}
232
233////////////////////////////////////////////////////////////////////////////////
234/// Handle mouse motion event in vertical splitter.
235
237{
238 if (event->fType == kEnterNotify)
239 gVirtualX->SetCursor(fId, fSplitCursor);
240 else
241 gVirtualX->SetCursor(fId, kNone);
242
243 return kTRUE;
244}
245
246////////////////////////////////////////////////////////////////////////////////
247/// Draw vertical splitter.
248
250{
251 if (fSplitterPic) {
252 Int_t posx = (fWidth/2)-(fSplitterPic->GetWidth()/2);
253 Int_t posy = (fHeight/2)-(fSplitterPic->GetHeight()/2);
254 fSplitterPic->Draw(fId, GetBckgndGC()(), posx, posy);
255 }
256}
257
258
259////////////////////////////////////////////////////////////////////////////////
260/// Create a horizontal splitter.
261
263 UInt_t options, ULong_t back) : TGSplitter(p, w, h, options, back)
264{
266 fSplitterPic = 0;
267 fSplitCursor = 0;
268 fFrame = 0;
269 fFrameHeight = h;
270 fFrameWidth = w;
271 fAbove = kTRUE;
272 fMax = fMin = 0;
273 fStartY = 0;
274
275 if (p && !p->InheritsFrom(TGCompositeFrame::Class())) {
276 Error("TGHSplitter", "parent must inherit from a TGCompositeFrame");
277 return;
278 }
279 if (p && !(((TGCompositeFrame*)p)->GetOptions() & kVerticalFrame)) {
280 Error("TGHSplitter", "parent must have a vertical layout manager");
281 return;
282 }
283
284 fSplitterPic = fClient->GetPicture("splitterh.xpm");
285
286 if (!fSplitterPic)
287 Error("TGHSplitter", "splitterh.xpm not found");
288
289 fSplitCursor = gVirtualX->CreateCursor(kArrowVer);
290
291 gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
294
296}
297
298////////////////////////////////////////////////////////////////////////////////
299/// Create a horizontal splitter.
300
302 TGSplitter(p, w, h, kChildFrame, GetDefaultFrameBackground())
303{
304 fExternalHandler = external;
305
307
308 fSplitterPic = fClient->GetPicture("splitterh.xpm");
309
310 if (!fSplitterPic)
311 Error("TGHSplitter", "splitterh.xpm not found");
312
313 fSplitCursor = gVirtualX->CreateCursor(kArrowVer);
314 fFrame = 0;
315 fFrameHeight = h;
316 fFrameWidth = w;
317 fAbove = kTRUE;
318 fMax = fMin = 0;
319 fStartY = 0;
320
321 gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
324
326}
327
328////////////////////////////////////////////////////////////////////////////////
329/// Delete horizontal splitter widget.
330
332{
334}
335
336////////////////////////////////////////////////////////////////////////////////
337/// Set frame to be resized. If frame is above the splitter
338/// set above to true.
339
341{
342 fFrame = frame;
343 fAbove = above;
344
346 Error("SetFrame", "resize frame must have kFixedHeight option set");
347}
348
349////////////////////////////////////////////////////////////////////////////////
350/// Handle mouse button event in horizontal splitter.
351
353{
354 if (fSplitCursor == kNone) return kTRUE;
355
356 if (!fExternalHandler && !fFrame) {
357 Error("HandleButton", "frame to be resized not set");
358 return kTRUE;
359 }
360
361 if (event->fType == kButtonPress) {
362 fStartY = event->fYRoot;
364
365 if (fExternalHandler) {
366 fMin = 0;
367 fMax = 99999;
368 DragStarted();
369 } else {
370 Int_t x, y;
371 gVirtualX->GetWindowSize(fFrame->GetId(), x, y, fFrameWidth, fFrameHeight);
372
373 // get fMin and fMax in root coordinates
374 Int_t xroot, yroot;
375 UInt_t w, h;
376 Window_t wdum;
377 gVirtualX->GetWindowSize(fParent->GetId(), x, y, w, h);
378 gVirtualX->TranslateCoordinates(fParent->GetParent()->GetId(),
380 x, y, xroot, yroot, wdum);
381 fMin = yroot;
382 fMax = yroot + h - 2;
383 }
384
385 // last argument kFALSE forces all specified events to this window
388 kTRUE, kFALSE);
389 } else {
391 gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE); // ungrab pointer
392 }
393 return kTRUE;
394}
395
396////////////////////////////////////////////////////////////////////////////////
397/// Handle mouse motion event in horizontal splitter.
398
400{
401 if (fDragging) {
402 Int_t yr = event->fYRoot;
403 if (yr > fMax) yr = fMax;
404 if (yr < fMin) yr = fMin;
405 Int_t delta = yr - fStartY;
406 if (fExternalHandler) {
407 if (delta != 0) {
408 Moved(delta);
409 fStartY = yr;
410 }
411 } else {
413 if (fAbove)
414 h += delta;
415 else
416 h -= delta;
417 if (h < 0) h = 0;
418 fStartY = yr;
419
420 if (delta != 0) {
421 fFrameHeight = h;
423
425 p->Layout();
426 }
427 }
428 }
429 return kTRUE;
430}
431
432////////////////////////////////////////////////////////////////////////////////
433/// Handle mouse motion event in horizontal splitter.
434
436{
437 if (event->fType == kEnterNotify)
438 gVirtualX->SetCursor(fId, fSplitCursor);
439 else
440 gVirtualX->SetCursor(fId, kNone);
441
442 return kTRUE;
443}
444
445////////////////////////////////////////////////////////////////////////////////
446/// Draw horizontal splitter.
447
449{
450 if (fSplitterPic) {
451 Int_t posx = (fWidth/2)-(fSplitterPic->GetWidth()/2);
452 Int_t posy = (fHeight/2)-(fSplitterPic->GetHeight()/2);
453 fSplitterPic->Draw(fId, GetBckgndGC()(), posx, posy);
454 }
455}
456
457////////////////////////////////////////////////////////////////////////////////
458/// fSplitterPic = fClient->GetPicture("filesplitterv.xpm");
459
461 UInt_t options, Pixel_t back):
462 TGVSplitter(p, w, h, options, back)
463{
464// if (!fSplitterPic)
465// Error("TGVFileSplitter", "filesplitterv.xpm not found");
466}
467
468////////////////////////////////////////////////////////////////////////////////
469/// if (fSplitterPic) fClient->FreePicture(fSplitterPic);
470
472{
473}
474
475////////////////////////////////////////////////////////////////////////////////
476/// Handle mouse motion event in vertical splitter.
477
479{
480 fMin = 30;
481
482 if (fDragging) {
483 Int_t xr = event->fXRoot;
484 if (xr > fMax) xr = fMax;
485 if (xr < fMin) xr = fMin;
486 Int_t delta = xr - fStartX;
487 Int_t w = (Int_t) fFrameWidth;
488 if (fLeft)
489 w += delta;
490 else
491 w -= delta;
492
493 if (w < 0) w = 0;
494 fStartX = xr;
495
496 if (delta != 0) {
497 delta = w - fFrameWidth;
498 fFrameWidth = w;
499
501 p->Resize( p->GetWidth() + delta, p->GetHeight() );
502
504
505 p->Layout();
507 }
508 }
509 return kTRUE;
510}
511
512////////////////////////////////////////////////////////////////////////////////
513/// Handle mouse button event in vertical splitter.
514
516{
517 if ( event->fType == kButtonPress) {
519 } else if ( event->fType == kButtonRelease) {
520 LayoutHeader(0);
523 } else if ( event->fType == kButtonDoubleClick ) {
524 DoubleClicked(this);
525 }
526 return TGVSplitter::HandleButton(event);
527}
528
529////////////////////////////////////////////////////////////////////////////////
530/// Emit LayoutFeader() signal.
531
533{
534 Emit("LayoutHeader(TGFrame*)", (Long_t)f);
535}
536
537////////////////////////////////////////////////////////////////////////////////
538/// Emit LayoutListView() signal.
539
541{
542 Emit("LayoutListView()");
543}
544
545////////////////////////////////////////////////////////////////////////////////
546/// Emit ButtonPressed() signal.
547
549{
550 Emit("ButtonPressed()");
551}
552
553////////////////////////////////////////////////////////////////////////////////
554/// Emit ButtonReleased() signal.
555
557{
558 Emit("ButtonReleased()");
559}
560
561////////////////////////////////////////////////////////////////////////////////
562/// Emit DoubleClicked() signal.
563
565{
566 Emit("DoubleClicked(TGVFileSplitter*)", (Long_t) splitter);
567}
568
569////////////////////////////////////////////////////////////////////////////////
570/// Handle double click mouse event in splitter.
571
573{
574 DoubleClicked(this);
575 return kTRUE;
576}
577
578////////////////////////////////////////////////////////////////////////////////
579/// Save a splitter widget as a C++ statement(s) on output stream out.
580
581void TGVSplitter::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
582{
584
585 out << " TGVSplitter *";
586 out << GetName() <<" = new TGVSplitter("<< fParent->GetName()
587 << "," << GetWidth() << "," << GetHeight();
588
590 if (!GetOptions()) {
591 out <<");" << std::endl;
592 } else {
593 out << "," << GetOptionString() <<");" << std::endl;
594 }
595 } else {
596 out << "," << GetOptionString() << ",ucolor);" << std::endl;
597 }
598 if (option && strstr(option, "keep_names"))
599 out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
600 // TGVSplitter->SetFrame( theframe ) can only be saved here
601 // if fFrame is the frame on the left (since the frame on the
602 // right will only be saved afterwards)... The other case is
603 // handled in TGCompositeFrame::SavePrimitiveSubframes()
604 if (GetLeft()) {
605 out << " " << GetName() << "->SetFrame(" << GetFrame()->GetName();
606 if (GetLeft()) out << ",kTRUE);" << std::endl;
607 else out << ",kFALSE);"<< std::endl;
608 }
609}
610
611////////////////////////////////////////////////////////////////////////////////
612/// Save a splitter widget as a C++ statement(s) on output stream out.
613
614void TGHSplitter::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
615{
617
618 out << " TGHSplitter *";
619 out << GetName() <<" = new TGHSplitter("<< fParent->GetName()
620 << "," << GetWidth() << "," << GetHeight();
621
623 if (!GetOptions()) {
624 out <<");" << std::endl;
625 } else {
626 out << "," << GetOptionString() <<");" << std::endl;
627 }
628 } else {
629 out << "," << GetOptionString() << ",ucolor);" << std::endl;
630 }
631 if (option && strstr(option, "keep_names"))
632 out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
633 // TGHSplitter->SetFrame( theframe ) can only be saved here
634 // if fFrame is the frame above (since the frame below will
635 // only be saved afterwards)... The other case is handled in
636 // TGCompositeFrame::SavePrimitiveSubframes()
637 if (GetAbove()) {
638 out << " " << GetName() << "->SetFrame(" << GetFrame()->GetName();
639 if (GetAbove()) out << ",kTRUE);" << std::endl;
640 else out << ",kFALSE);"<< std::endl;
641 }
642}
643
644////////////////////////////////////////////////////////////////////////////////
645/// Save a splitter widget as a C++ statement(s) on output stream out.
646
647void TGVFileSplitter::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
648{
650
651 out << " TGVFileSplitter *";
652 out << GetName() <<" = new TGVFileSplitter("<< fParent->GetName()
653 << "," << GetWidth() << "," << GetHeight();
654
656 if (!GetOptions()) {
657 out <<");" << std::endl;
658 } else {
659 out << "," << GetOptionString() <<");" << std::endl;
660 }
661 } else {
662 out << "," << GetOptionString() << ",ucolor);" << std::endl;
663 }
664 if (option && strstr(option, "keep_names"))
665 out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
666
667 out << " " << GetName() << "->SetFrame(" << GetFrame()->GetName();
668 if (GetLeft()) out << ",kTRUE);" << std::endl;
669 else out << ",kFALSE);"<< std::endl;
670}
671
void Class()
Definition: Class.C:29
@ kButtonRelease
Definition: GuiTypes.h:59
@ kButtonPress
Definition: GuiTypes.h:59
@ kButtonDoubleClick
Definition: GuiTypes.h:63
@ kEnterNotify
Definition: GuiTypes.h:60
const Mask_t kButtonPressMask
Definition: GuiTypes.h:160
const Mask_t kAnyModifier
Definition: GuiTypes.h:209
const Mask_t kPointerMotionMask
Definition: GuiTypes.h:162
@ kChildFrame
Definition: GuiTypes.h:379
@ kVerticalFrame
Definition: GuiTypes.h:381
@ kFixedWidth
Definition: GuiTypes.h:387
@ kHorizontalFrame
Definition: GuiTypes.h:382
@ kFixedHeight
Definition: GuiTypes.h:389
const Handle_t kNone
Definition: GuiTypes.h:87
const Mask_t kLeaveWindowMask
Definition: GuiTypes.h:167
const Mask_t kButtonReleaseMask
Definition: GuiTypes.h:161
@ kArrowVer
Definition: GuiTypes.h:373
@ kArrowHor
Definition: GuiTypes.h:373
const Mask_t kEnterWindowMask
Definition: GuiTypes.h:166
ULong_t Pixel_t
Definition: GuiTypes.h:39
@ kAnyButton
Definition: GuiTypes.h:213
Handle_t Window_t
Definition: GuiTypes.h:28
#define f(i)
Definition: RSha256.hxx:104
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:43
const Bool_t kFALSE
Definition: RtypesCore.h:90
unsigned long ULong_t
Definition: RtypesCore.h:53
long Long_t
Definition: RtypesCore.h:52
const Bool_t kTRUE
Definition: RtypesCore.h:89
const char Option_t
Definition: RtypesCore.h:64
#define ClassImp(name)
Definition: Rtypes.h:361
#define gVirtualX
Definition: TVirtualX.h:338
const TGWindow * GetDefaultRoot() const
Returns the root (i.e.
Definition: TGClient.cxx:234
const TGPicture * GetPicture(const char *name)
Get picture from the picture pool.
Definition: TGClient.cxx:289
void FreePicture(const TGPicture *pic)
Free picture resource.
Definition: TGClient.cxx:308
virtual void Layout()
Layout the elements of the composite frame.
Definition: TGFrame.cxx:1241
void AddInput(UInt_t emask)
Add events specified in the emask to the events the frame should handle.
Definition: TGFrame.cxx:323
UInt_t fHeight
Definition: TGFrame.h:113
static Pixel_t GetDefaultFrameBackground()
Get default frame background.
Definition: TGFrame.cxx:667
virtual UInt_t GetOptions() const
Definition: TGFrame.h:222
TString GetOptionString() const
Returns a frame option string - used in SavePrimitive().
Definition: TGFrame.cxx:2464
virtual void Resize(UInt_t w=0, UInt_t h=0)
Resize the frame.
Definition: TGFrame.cxx:589
UInt_t fWidth
Definition: TGFrame.h:112
UInt_t GetHeight() const
Definition: TGFrame.h:250
UInt_t GetWidth() const
Definition: TGFrame.h:249
void SaveUserColor(std::ostream &out, Option_t *)
Save a user color in a C++ macro file - used in SavePrimitive().
Definition: TGFrame.cxx:2437
Pixel_t fBackground
Definition: TGFrame.h:120
static const TGGC & GetBckgndGC()
Get background color graphics context.
Definition: TGFrame.cxx:759
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a splitter widget as a C++ statement(s) on output stream out.
Definition: TGSplitter.cxx:614
const TGFrame * GetFrame() const
Definition: TGSplitter.h:124
UInt_t fFrameHeight
Definition: TGSplitter.h:109
virtual void SetFrame(TGFrame *frame, Bool_t above)
Set frame to be resized.
Definition: TGSplitter.cxx:340
virtual void DrawBorder()
Draw horizontal splitter.
Definition: TGSplitter.cxx:448
TGHSplitter(const TGHSplitter &)
TGFrame * fFrame
Definition: TGSplitter.h:112
Bool_t GetAbove() const
Definition: TGSplitter.h:125
Bool_t fAbove
Definition: TGSplitter.h:113
Int_t fStartY
Definition: TGSplitter.h:107
Int_t fMin
Definition: TGSplitter.h:110
virtual Bool_t HandleCrossing(Event_t *event)
Handle mouse motion event in horizontal splitter.
Definition: TGSplitter.cxx:435
virtual ~TGHSplitter()
Delete horizontal splitter widget.
Definition: TGSplitter.cxx:331
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in horizontal splitter.
Definition: TGSplitter.cxx:352
UInt_t fFrameWidth
Definition: TGSplitter.h:108
Int_t fMax
Definition: TGSplitter.h:111
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in horizontal splitter.
Definition: TGSplitter.cxx:399
TGClient * fClient
Definition: TGObject.h:37
Handle_t GetId() const
Definition: TGObject.h:47
Handle_t fId
Definition: TGObject.h:36
UInt_t GetHeight() const
Definition: TGPicture.h:64
void Draw(Option_t *="")
Default Draw method for all objects.
Definition: TGPicture.h:57
UInt_t GetWidth() const
Definition: TGPicture.h:63
TGSplitter(const TGSplitter &)
Cursor_t fSplitCursor
Definition: TGSplitter.h:32
void DragStarted()
Emit DragStarted signal.
Definition: TGSplitter.cxx:51
void Moved(Int_t delta)
Emit Moved signal.
Definition: TGSplitter.cxx:59
const TGPicture * fSplitterPic
Definition: TGSplitter.h:35
Bool_t fDragging
Definition: TGSplitter.h:33
Bool_t fExternalHandler
Definition: TGSplitter.h:34
void ButtonPressed()
Emit ButtonPressed() signal.
Definition: TGSplitter.cxx:548
virtual ~TGVFileSplitter()
if (fSplitterPic) fClient->FreePicture(fSplitterPic);
Definition: TGSplitter.cxx:471
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in vertical splitter.
Definition: TGSplitter.cxx:515
void DoubleClicked(TGVFileSplitter *frame)
Emit DoubleClicked() signal.
Definition: TGSplitter.cxx:564
void LayoutListView()
Emit LayoutListView() signal.
Definition: TGSplitter.cxx:540
void ButtonReleased()
Emit ButtonReleased() signal.
Definition: TGSplitter.cxx:556
virtual Bool_t HandleDoubleClick(Event_t *)
Handle double click mouse event in splitter.
Definition: TGSplitter.cxx:572
TGVFileSplitter(const TGWindow *p=0, UInt_t w=4, UInt_t h=4, UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground())
fSplitterPic = fClient->GetPicture("filesplitterv.xpm");
Definition: TGSplitter.cxx:460
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in vertical splitter.
Definition: TGSplitter.cxx:478
void LayoutHeader(TGFrame *f)
Emit LayoutFeader() signal.
Definition: TGSplitter.cxx:532
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a splitter widget as a C++ statement(s) on output stream out.
Definition: TGSplitter.cxx:647
Int_t fMin
Definition: TGSplitter.h:73
UInt_t fFrameHeight
Definition: TGSplitter.h:72
TGVSplitter(const TGVSplitter &)
virtual ~TGVSplitter()
Delete vertical splitter widget.
Definition: TGSplitter.cxx:132
const TGFrame * GetFrame() const
Definition: TGSplitter.h:87
virtual void SetFrame(TGFrame *frame, Bool_t left)
Set frame to be resized.
Definition: TGSplitter.cxx:141
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in vertical splitter.
Definition: TGSplitter.cxx:153
virtual Bool_t HandleCrossing(Event_t *event)
Handle mouse motion event in vertical splitter.
Definition: TGSplitter.cxx:236
Bool_t GetLeft() const
Definition: TGSplitter.h:88
TGFrame * fFrame
Definition: TGSplitter.h:75
Int_t fMax
Definition: TGSplitter.h:74
UInt_t fFrameWidth
Definition: TGSplitter.h:71
Int_t fStartX
Definition: TGSplitter.h:70
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a splitter widget as a C++ statement(s) on output stream out.
Definition: TGSplitter.cxx:581
Bool_t fLeft
Definition: TGSplitter.h:76
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in vertical splitter.
Definition: TGSplitter.cxx:200
virtual void DrawBorder()
Draw vertical splitter.
Definition: TGSplitter.cxx:249
virtual const char * GetName() const
Return unique name, used in SavePrimitive methods.
Definition: TGWindow.cxx:326
const TGWindow * fParent
Definition: TGWindow.h:36
const TGWindow * GetParent() const
Definition: TGWindow.h:84
UInt_t fEditDisabled
Definition: TGWindow.h:40
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition: TObject.cxx:443
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:891
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Definition: TQObject.h:164
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
EGEventType fType
Definition: GuiTypes.h:174
REAL splitter
Definition: triangle.c:616