# HG changeset patch # User Jim Blandy # Date 718081425 0 # Node ID 5f327f1dddd36c96a7551328ff2b9beb64b51ff6 # Parent b56c2c450d492f90fc52147666395a085bdf9d85 * keyboard.c (modify_event_symbol): Make sure that the unmodified event header gets the proper properties set on it, by recursing and letting the same code build the properties for all event symbols. * keyboard.c (Qmouse_click): Fix typo which assigned `mouse-click' symbol to Qmouse_movement. diff -r b56c2c450d49 -r 5f327f1dddd3 src/keyboard.c --- a/src/keyboard.c Sat Oct 03 02:21:51 1992 +0000 +++ b/src/keyboard.c Sat Oct 03 03:03:45 1992 +0000 @@ -2109,25 +2109,6 @@ /* We don't have an entry for the symbol; we have to build it. */ - /* Make sure there's an assoc for the unmodified symbol. - Any non-empty alist should contain an entry for the unmodified symbol. */ - XFASTINT (temp) = 0; - - if (NILP (*slot)) - { - unmodified = intern (name_table [symbol_num]); - *slot = Fcons (Fcons (temp, unmodified), Qnil); - Fput (unmodified, Qevent_kind, symbol_kind); - Fput (unmodified, Qevent_symbol_elements, Fcons (unmodified, Qnil)); - } - else - { - temp = Fassq (temp, *slot); - if (NILP (temp)) - abort (); - unmodified = XCONS (temp)->cdr; - } - /* Create a modified version of the symbol, and add it to the alist. */ { Lisp_Object modified; @@ -2153,8 +2134,27 @@ modifier_list = Fcons (XVECTOR (modifier_symbols)->contents[i], modifier_list); - Fput (modified, Qevent_symbol_elements, - Fcons (unmodified, modifier_list)); + /* Put an unmodified version of the symbol at the head of the + list of symbol elements. */ + { + /* We recurse to get the unmodified symbol; this allows us to + write out the code to build event headers only once. + + Note that we put ourselves in the symbol_table before we + recurse, so when an unmodified symbol calls this code + to put itself on its Qevent_symbol_elements property, we do + terminate. */ + Lisp_Object unmodified = + modify_event_symbol (symbol_num, + ((modifiers & (down_modifier | drag_modifier)) + ? click_modifier + : 0), + symbol_kind, + name_table, symbol_table, table_size); + + Fput (modified, Qevent_symbol_elements, + Fcons (unmodified, modifier_list)); + } } return modified; @@ -3607,7 +3607,7 @@ Qfunction_key = intern ("function-key"); staticpro (&Qfunction_key); - Qmouse_movement = intern ("mouse-click"); + Qmouse_click = intern ("mouse-click"); staticpro (&Qmouse_click); Qmouse_movement = intern ("scrollbar-click"); staticpro (&Qmouse_movement);