Re: how do I catch double clicks
- From: Claudio Polegato Junior <cpolegatojr_lsts pop com br>
- To: John Taber <jtaber johntaber net>
- Cc: gtkmm-list gnome org
- Subject: Re: how do I catch double clicks
- Date: Fri, 03 Jun 2005 12:26:40 +0000
John Taber escreveu:
How do I catch a mouse double click? I couldn't find any class documentation
on GdkEventButton and the associated event->type enums and
event->type==GDK_MOUSE_DOUBLE_PRESS did not work. thks.
Hi,
To catch the single and double click, you can use this:
// The click timeout in ms
#define CLICK_TIMEOUT 250
bool On_Time = false;
bool Object::On_Click(GdkEventButton* Event){
if (On_Time){
Time.disconnect();
On_Time = false;
// Paste here the code to double click
}
else{
// Activate the timeout
On_Time = true;
Time = Glib::signal_timeout().connect(SigC::slot(*this,
&Object::Time_Click), CLICK_TIMEOUT); // This is on GTKmm
}
}
return true; // false - stop event / true - continue event
}
bool Object::Time_Click(){
On_Time = false;
// Paste here the code to single click
return false;
}
Now, if you need just a double click, use:
bool Object::On_Double_Click(GdkEventButton* Event){
if (Event->GdkEventType == GDK_2BUTTON_PRESS){
// Paste here the code to double click
}
return true; // false - stop event / true - continue event
}
The On_Click function must be connected on object's signal
"button_press_event" and the declarations must be corrects.
Note on the second case, the triple click also emit GDK_2BUTTON_PRESS,
so the function On_Double_Click will run two times.
See the GdkEventButton on GTK+ manual (or documentation) to learn more.
--
[]'s
Claudio Polegato Junior
Um peregrino de Problemas; Um pergaminho de Soluções.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]