Re: [ROOT] mouse button

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Fri Jul 19 2002 - 00:39:23 MEST


In addition to Rene's exec3.C you also have the choice to use
signal/slots for this, see exec4.C:

void exec4() {
   TH1F *h = new TH1F("h","h",100,-3,3);
   h->FillRandom("gaus",1000);
   TCanvas *c1=new TCanvas("c1");
   h->Draw();
   c1->Update();
   c1->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)", 0, "",
               "exec4event(Int_t,Int_t,Int_t,TObject*)");
}

void exec4event(Int_t event, Int_t x, Int_t y, TObject *selected)
{
   TCanvas *c = (TCanvas *) gTQSender;
   printf("Canvas %s: event=%d, x=%d, y=%d, selected=%s\n",
          c->GetName(), event, x, y, selected->IsA()->GetName());
}

An advantage here is that the slot function can be a method of your
class that has access to all the class data members. For more see:
http://root.cern.ch/root/HowtoSignalSlot.html


Cheers, Fons.



On Thu, 2002-07-18 at 21:41, Ed Oltman wrote:
> Hello,
> 
> Is there a way to determine if the mouse is positioned within a canvas and
> the left button is pressed?  TCanvas::GetSelected() returns a pointer to the
> selected TObject, in the canvas, but I would also like to know if the left
> button is pressed.  I cannot sense the button state from within at TExec.  I
> am using Root 3.02/07 on Win32.  Thanks..
> 
> Ed
> 
-- 
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:51:00 MET