On Sat, Sep 08, 2007 at 02:21:11PM -0700, Tom Trebisky wrote:
> I have spent a couple of half-days trying to get keyboard events from a
> GTK drawing area with no luck,

I suppose you have read thread

  http://mail.gnome.org/archives/gtk-list/2007-September/msg00015.html

> I am getting mouse events nicely from the drawing area, but have been
> entirely stumped in getting keyboard events.  I have done google searches
> on the topic and taken the advice given, the code that I think is
> relevant is:
> 
>        GTK_WIDGET_SET_FLAGS ( da, GTK_CAN_FOCUS );

This is OK.

>          g_signal_connect ( GTK_OBJECT(da), "focus_event",
>                GTK_SIGNAL_FUNC(focus_handler), NULL );

This is written in some archaic dialect (although not
entirely, the corresponding archaic counterpart of
g_signal_connect() is gtk_signal_connect()).  Code written
in the last 5 years should read

    g_signal_connect(da, "focus-event",
                     G_CALLBACK(focus_handler), NULL);

Nevertheless, the functionality is the same.

>        gtk_widget_add_events ( GTK_WIDGET(da), GDK_FOCUS_CHANGE );

And this is the bug.  GDK_FOCUS_CHANGE is not an event mask
(i.e. GdkEventMask value), it's an event type (i.e.
GdkEventType valye).  It should be GDK_FOCUS_CHANGE_MASK.
Ditto in the key press case.

Also ensure you add events before the widget is realized.

Yeti

--
http://gwyddion.net/
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to