[ROOT] Problem to see both scrollbars in TGCanvas

From: cstrato@EUnet.at
Date: Sat Nov 10 2001 - 18:42:34 MET


Dear Rooters

Yesterday I have attached to my question a macro with name "guitab.C".
When I received the mail from roottalk, I could not open my macro.
Is it not possible to send an attachment with ending "*.C"?

Anyhow, now I put my macro below in the hope that someone can
tell me what the problem is.
Thank you
Christian

//------------------guitab.C---------------------//
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <fstream.h>

class TMyFrame {

   RQ_OBJECT()

   private:
      TGMainFrame        *fMain;
      TGCompositeFrame    *fSF;
      TGCompositeFrame     *fSF1001;

      TGVerticalFrame       *fV1;
      TGCanvas               *fTreeView;
      TGListTree             *fLt;

      TGVerticalFrame       *fV2;
      TGCanvas               *fCanvas;
      TGTab                   *fTab;
      TGCompositeFrame         *fFT1;
      TGGroupFrame              *fFT1G1;
      TGGroupFrame              *fFT1G2;
      TGCompositeFrame         *fFT2;
      TGGroupFrame              *fFT2G1;

      TList     *fTrash;

   public:
      TMyFrame(const TGWindow *vWindow, UInt_t vWidth, UInt_t vHeight);
      virtual ~TMyFrame();

   // Slots
      void FCloseWindow();

//      ClassDef(TMyFrame,0) //TMyFrame
};

//ClassImp(TMyFrame);

//----------------------------------------------------------------------//
TMyFrame::TMyFrame(const TGWindow *vWindow, UInt_t vWidth, UInt_t vHeight)
{
   fTrash = new TList;
   TGLayoutHints *vHints;

   fMain   = new TGMainFrame(vWindow, vWidth, vHeight);
   fMain->Connect("CloseWindow()", "TMyFrame", this, "FCloseWindow()");

   vHints = new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY);
   fTrash->Add(vHints);
   fSF = new TGCompositeFrame(fMain,10,10);
   fMain->AddFrame(fSF, vHints);

   fSF1001 = new TGCompositeFrame(fSF,0,0, kHorizontalFrame);
   fV1 = new TGVerticalFrame(fSF1001, 10, 10, kFixedWidth);
   fV2 = new TGVerticalFrame(fSF1001, 10, 10);

   // Create tree
   fTreeView = new TGCanvas(fV1, 10,10, kSunkenFrame | kDoubleBorder);
   fLt = new TGListTree(fTreeView->GetViewPort(), 10,10, kHorizontalFrame,
                        fMain->GetWhitePixel());
   fLt->Associate(fMain);
//   fLt->SetAutoTips();  //??
   fTreeView->SetContainer(fLt);
   fLt->SetCanvas(fTreeView);
   fTreeView->Resize(200,200);

   vHints = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);
   fTrash->Add(vHints);
   fV1->AddFrame(fTreeView, vHints);

   // Create tabs in canvas
   fCanvas = new TGCanvas(fV2, 10, 10, 0);
   fTab = new TGTab(fCanvas, 20, 20);
   fTab->Associate(fMain);  //?
   fCanvas->SetContainer(fTab);

   TGCompositeFrame *vTabFrame;
   // Tab 1
   vTabFrame = fTab->AddTab("Tab 1");
   fFT1 = new TGCompositeFrame(vTabFrame, 20, 20, kVerticalFrame);
   vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft);
   fTrash->Add(vHints);
   vTabFrame->AddFrame(fFT1, vHints);

   vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft);
   fTrash->Add(vHints);
   fFT1G1 = new TGGroupFrame(fFT1, "GroupFrame 1 for Tab 1", kFixedWidth |
kFixedHeight | kVerticalFrame);
   fFT1->AddFrame(fFT1G1, vHints);
   fFT1G1->Resize(300,80);

   vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft);
   fTrash->Add(vHints);
   fFT1G2 = new TGGroupFrame(fFT1, "GroupFrame 2 for Tab 1", kFixedWidth |
kFixedHeight | kVerticalFrame);
   fFT1->AddFrame(fFT1G2, vHints);
   fFT1G2->Resize(300,200);

   // Tab 2
   vTabFrame = fTab->AddTab("Tab 2");
   fFT2 = new TGCompositeFrame(vTabFrame, 20, 20, kVerticalFrame);
   vHints = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);
   fTrash->Add(vHints);
   vTabFrame->AddFrame(fFT2, vHints);

   vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft);
   fTrash->Add(vHints);
   fFT2G1 = new TGGroupFrame(fFT2, "GroupFrame for Tab 2", kFixedSize |
kVerticalFrame);
   fFT2->AddFrame(fFT2G1, vHints);
   fFT2G1->Resize(300,100);

   vHints = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);
   fTrash->Add(vHints);
   fV2->AddFrame(fCanvas, vHints);
   fV1->Resize(fCanvas->GetDefaultWidth()+100, fV1->GetDefaultHeight());

   vHints = new TGLayoutHints(kLHintsLeft | kLHintsExpandY);
   fTrash->Add(vHints);
   fSF1001->AddFrame(fV1, vHints);

   TGVSplitter *vSplitter = new TGVSplitter(fSF1001);
   vSplitter->SetFrame(fV1, kTRUE);
   vHints = new TGLayoutHints(kLHintsLeft | kLHintsExpandY);
   fTrash->Add(vSplitter);
   fTrash->Add(vHints);
   fSF1001->AddFrame(vSplitter, vHints);

   vHints = new TGLayoutHints(kLHintsRight | kLHintsExpandX |
kLHintsExpandY);
   fTrash->Add(vHints);
   fSF1001->AddFrame(fV2, vHints);
   fSF1001->Resize(500, 250);

   fSF->AddFrame(fSF1001, vHints);

// Main settings
   fMain->SetWindowName("TabTest");
   fMain->MapSubwindows();
   fMain->Resize(fMain->GetDefaultSize());
   fMain->SetWMPosition(140,120);
   fMain->MapWindow();
}//Constructor

//----------------------------------------------------------------------//
TMyFrame::~TMyFrame()
{
   delete fFT2G1; delete fFT2;
   delete fFT1G1; delete fFT1G2; delete fFT1;
   delete fTab;delete fCanvas;
   delete fV2;

   delete fTreeView; delete fLt;
   delete fV1;

   delete fSF1001;
   delete fSF;
   delete fMain;

   fTrash->Delete();
   delete fTrash;
}//Destructor

//----------------------------------------------------------------------//
void TMyFrame::FCloseWindow()
{
   delete this;
}//FCloseWindow

//----------------------------------------------------------------------//
void guitab()
{
   new TMyFrame(gClient->GetRoot(), 400, 220);
}


//--------------------------------------------------//

"cstrato@EUnet.at" wrote:

> Dear Rooters
>
> In the attached macro ("guitab.C") I have a TGCanvas containing TGTab
> frames
> which contain e.g. TGGroupFrames of fixed size. When I reduce the window
>
> size so that TGGroupFrames are covered, scrollbars should appear in
> TGCanvas.
>
> In the attached macro, reducing the window either vertically OR
> horizontally
> results in appearance of the corresponding scrollbar. However, when
> reducing
> the window both vertically AND horizontally NO scrollbars appear. The
> same
> problem exists when I move the splitter.
>
> Is there a mistake in my macro which causes this behaviour?
> What do I have to change?
>
> Thank you in advance.
>
> Best regards
> Christian
> ----------------------------------
> C.h.r.i.s.t.i.a.n  S.t.r.a.t.o.w.a
> V.i.e.n.n.a,  A.u.s.t.r.i.a
>
>   ------------------------------------------------------------------------
>  [Image]



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:07 MET