[Evolution-hackers] key handling bug, closer, but need help



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 gmail com>
Date: Jul 10, 2005 5:39 PM
Subject: key handling, need bug finding hint
To: gtk-devel-list 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 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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]