[Evolution-hackers] key handling bug, closer, but need help
Roland Orre
roland.orre at gmail.com
Sun Jul 10 18:04:10 EDT 2005
As I wrote earlier I had problems with emacs keys in
evolution and I have now localized the problem to
when gtk looks up the key in the key binding table.
I sent this message to the gtk-devel-list earlier as it
relates to gtk bug findings, but havent' got any reply
from there so I hope for better luck here.
---------- Forwarded message ----------
From: Roland Orre <roland.orre at gmail.com>
Date: Jul 10, 2005 5:39 PM
Subject: key handling, need bug finding hint
To: gtk-devel-list at gnome.org
I'm trying to find a bug causing emacs keys not working properly in
evolution. I suspect that the key binding table becomes destroyed of
some reason, as the key table lookup may first
succeed, and later fail. I don't yet know which package to
suspect.
***************************************************************
My question: Is there a simple way to check/verify/print the
structure of the gtk key-binding hash table?
***************************************************************
Description follows:
In 50% of the invocations of evolution it works for the first editor
invocation of the editor, but not the following.
I'm using sources from gtk+-2.6.4, gtkhtml-3.6.1 and evolution 2.2.1.1 for now.
The key bindings are read from a file keybindingsrc.emacs with
gtk_rc_parse and lands into structure html_class->emacs_bindings
and are interpreted in the following way:
gtk_binding_set_activate (html_class->emacs_bindings,
event->keyval,event->state, GTK_OBJECT (widget));
This results in a call to binding_ht_lookup_entry where the follwing fails:
<<<<<
lookup_entry.keyval = keyval;
lookup_entry.modifiers = modifiers;
entry = g_hash_table_lookup (binding_entry_hash_table,
&lookup_entry);
/* added debug print roland.orre at neurologic.se */
if (entry) {
printf("gtk: entry found for keyval %d\n", keyval);
printf("gtk: modifiers = %lx\n",modifiers);
}
else {
printf("gtk: entry was not found for keyval %d \n",keyval);
printf("gtk: modifiers = %lx\n",modifiers);
}
>>>>>
The key binding hash table is pointing to the same address all
the time, which is the reason I believe it has been distorted
before the second editor invocation. The lookup of the keys
from this table has first succeded and at the next editor
invocation failed. I have turned off passing of keys
to parent class.
Best regards
Roland Orre
More information about the evolution-hackers
mailing list