Hi Fons, > make sure that after creating the TGLVContainer you associate > the container with the TGListView. In that case the container > events are properly propagated to the TGListView and things should work. > Example: > > fListView = new TGListView(fV2, 520, 250); > fIconBox = new TGLVContainer(fListView->GetViewPort(), 520, 250, > kHorizontalFrame, fgWhitePixel); > fIconBox->Associate(this); Thank you, this would be fine but I (and I'm sure other people in the future too) want to use the signal/slot mechanism i.e. connect some signal function which is called when I double-click on an item to one of my slot functions instead of using Associate() and ProcessMessage(). The only signal function I found was TGListView::DoubleClicked(); neither TGLVContainer nor TGFileContainer have such a signal function. So I believe my Connect(...) code below is correct but doesn't work therefore I believe this is a bug in ROOT because the double (and single) click events are apparently not properly propagated to the TGListView _signal_ functions. Or do I have to use Associate() for that? As far as I understood from the example codes I don't need to. I won't be able to use Associate(this) anyway because my class is not inherited from TGMainFrame or any other GUI class therefore it cannot be the argument for Associate(). So I just use fFileView = new TGListView(fC2,540,180); fFileCont = new TGFileContainer(fFileView->GetViewPort(),100,100, kVerticalFrame,TGFrame::GetWhitePixel()); fFileView->Connect("DoubleClicked(TGLVEntry*, Int_t)", "PbarFileBrowser", this, "HandleBrowser(TGLVEntry*, Int_t)"); but as I said it doesn't work. Cheers, Bertalan > Bertalan Juhasz wrote: > > > Dear Rooters, > > > > I'm developing some GUI classes and I've encountered the following > > problem: even if I connect TGListView::DoubleClicked() to one of my slot > > functions using > > > > fFileView->Connect("DoubleClicked(TGLVEntry*, Int_t)", "PbarFileBrowser", > > this, "HandleBrowser(TGLVEntry*, Int_t)"); > > > > the HandleBrowser() function is never called when I double click on an > > item although ROOT is not complaining about wrong signal/slot connection. > > Was I doing something wrong? After digging into and playing with the ROOT > > code I've discovered that HandleBrowser() is never called because > > TGListView::DoubleClicked() is never called, only > > TGLVContainer::HandleDoubleClick(). After I've added the following lines > > to TGLVContainer::HandleDoubleClick() > > > > if (fListView) fListView->DoubleClicked(f, event->fCode); > > if (fListView) fListView->DoubleClicked(f, event->fCode, event->fXRoot, > > event->fYRoot); > > > > right after SendMessage(...) (similarly to TGTreeView) everything worked > > fine but maybe this is a dirty/illegal solution (I'm completely new to GUI > > programming). Most likely TGListView::Clicked() has similar problems but > > that I didn't investigate. > > > > I'm using ROOT 3.02/06 with RedHat 7.2. > > > > BTW, are there plans to write some User's Guide on GUI programming? For > > those how never did anything like that before (like myself) it's a bit > > painful (and dangerous) to learn just by digging through example codes > > (although those codes are quite nice). > > > > Regards, > > > > Bertalan > > > > > > > > > > > -- > Org: CERN, European Laboratory for Particle Physics. > Mail: 1211 Geneve 23, Switzerland > E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 > WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7679480 > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:37 MET