Я тоже так подумал. Но при этом, насколько я понимаю, не посылается сигнал присодиненным обработчикам. Я пробовал так:
gboolean gtouch_window_on_trainer_key_press_event(GtkWidget *widget,
GdkEventKey *event,
gpointer user_data)
{
GTouchWindow *self;
GTouchWindowPrivate *priv;
gboolean result;
self = GTOUCH_WINDOW(user_data);
priv = GTOUCH_WINDOW_GET_PRIVATE(user_data);
g_signal_emit_by_name((gpointer)priv->keyboard,
"key_press_event",
event,
&result);
(* GTK_WIDGET_CLASS(G_OBJECT_GET_CLASS(G_OBJECT(priv->keyboard)))->key_press_event
)(priv->keyboard, event);
return FALSE;
}
но почему-то не работает.
А, понял. Сигнал-то передается, однако виджет, который его принимает, обрабатывает его не сам, а должен передавать виджету, который он содержит - а он этого не делает.