On 2/14/12, jumbophut <removed> wrote:
> const gchar *str = "q";
> gtk_accelerator_parse(str, &keyval, &keymods);
> GClosure * closure = g_cclosure_new_swap(G_CALLBACK(popup), NULL, NULL);
>
> This successfully triggers the popup routine whenever I press the key
> q (i.e. on the downstroke).
>
> Now I change one line:
>
> const gchar *str = "<Release>q";
>
> According to the documentation, this should trigger the popup routine
> when I _release_ the q key (i.e. on the upstroke).  However, it
> doesn't work.

Perhaps answering my own question, I believe the reason it doesn't
work is that gtk_window_key_release_event never even calls
gtk_window_activate_key (the latter is required to trigger any
registered accelerators).  This is in contrast to
gtk_window_key_press_event, which does call the activate routine.

If this is correct, there is a bug in the documentation, since there
would never be any point in using "<release>".  Would it be possible
for someone out there to confirm that I am reading the GTK+ source
correctly?  I will then look into how I would go about getting the
documentation changed?

On a slightly related note, even when using key press rather than key
release, I discovered that the cursor keys cannot be used as
accelerators.  This is "documented" only in the source code, and
attempting to assign them as accelerators fails completely silently
(grrrr).

-- 
Tony (echo 'spend!,pocket awide' | sed 'y/acdeikospntw!, /l...@omcgtjuba.phi/')
_______________________________________________
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