Thanks for the reply. Using gtk_widget_add_events() was a good tip in general, and the order in which I call things too. But unfortunately, they didn't help solve the question I still see.
I'll paste a very short program illustrating what I mean below, in which I set-up a button-press and a key-press handler in the same way for drawingarea1, but only the button-press responds. But if I merely change "drawingarea1" to "window1" in the key-press g_signal_connect(), it catches key presses just fine: <code> /* Compile with: gcc main.c -o keytest `pkg-config --cflags --libs gtk+-2.0` */ #include <gtk/gtk.h> gboolean on_drawingarea1_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { printf("button\n"); return FALSE; } gboolean on_drawingarea1_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { printf("Key\n"); return FALSE; } int main (int argc, char *argv[]) { GtkWidget *window1; GtkWidget *drawingarea1; gtk_init (&argc, &argv); window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); drawingarea1 = gtk_drawing_area_new(); gtk_widget_add_events (drawingarea1, GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK); gtk_container_add (GTK_CONTAINER (window1), drawingarea1); g_signal_connect ((gpointer) drawingarea1, "button_press_event", G_CALLBACK (on_drawingarea1_button_press_event), NULL); g_signal_connect ((gpointer) drawingarea1, "key_press_event", G_CALLBACK (on_drawingarea1_key_press_event), NULL); gtk_widget_show (drawingarea1); gtk_widget_show (window1); gtk_main (); return 0; } </code> _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list