Tim Janik wrote to gtk-list (slightly modified):
Define a signal handler:
gint
signal_handler_event(GtkWidget *widget, GdkEventButton *event, gpointer func_data)
{
if (GTK_IS_BUTTON(widget) &&
(event->type==GDK_2BUTTON_PRESS ||
event->type==GDK_3BUTTON_PRESS) ) {
printf("I feel %s clicked with button %d\n",
event->type==GDK_2BUTTON_PRESS ? "double" : "triple",
event->button);
}
return FALSE;
}And connect the handler to your object:
{
/* button init stuff */
g_signal_connect(G_OBJECT(button),
"button_press_event",
G_CALLBACK(signal_handler_event),
NULL);
/* and/or */
g_signal_connect(G_OBJECT(button),
"button_release_event",
G_CALLBACK(signal_handler_event),
NULL);
/* something else */
}and, Owen Taylor wrote:
"Note that a single button press will be received beforehand, and if you are doing this for a button, you will therefore also get a "clicked" signal for the button. (This is going to be true for any toolkit, since computers aren't good at reading one's mind.)"