| GTK+ FAQ | ||
|---|---|---|
| <<< Previous | Development with GTK+: general questions | Next >>> | 
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.)"
| <<< Previous | Home | Next >>> | 
| How do I get the Window ID of a GtkWindow? [GTK 2.x] | Up | By the way, what are the differences between signals and events? |