class MainFrame: public TGMainFrame { RQ_OBJECT("MainFrame"); private: TGCompositeFrame *MyCompositeFrame; public: MainFrame(const TGWindow *p); void CreateNewCanvas(); }; void MainFrame::CreateNewCanvas() { MyCompositeFrame->Cleanup(); MyCompositeFrame->AddFrame(new TRootEmbeddedCanvas(0, MyCompositeFrame), new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY)); MyCompositeFrame->MapSubwindows(); MyCompositeFrame->Layout(); } void MainFrame::MainFrame(const TGWindow *p): TGMainFrame(p) { TGTextButton *MyButton=new TGTextButton(this, "Click me"); MyButton->Connect("Clicked()", "MainFrame", this, "CreateNewCanvas()"); AddFrame(MyButton, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX)); AddFrame(MyCompositeFrame=new TGCompositeFrame(this), new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY)); MyCompositeFrame->SetCleanup(kDeepCleanup); MapSubwindows(); Resize(700, 500); MapWindow(); CreateNewCanvas(); } void xorgproblem() { new MainFrame(gClient->GetRoot()); }