(call_function): New function.
(handle_single_display_prop): Use call_function and FUNCTIONP
instead of checking whether if font_height is a symbol and
using eval_form.
(note_mode_line_highlight): Store additional information about the
help-echo in help_echo_object and help_echo_pos. Check both
`local-map' and `keymap' properties for changing the cursor
(note_mouse_highlight): Store additional information about the
help-echo in help_echo_object and help_echo_pos.
(note_tool_bar_highlight): Set help_echo_object to nil and
help_echo_pos to -1.
(XTread_socket): Use gen_help_event instead of filling
input_events manually.
(syms_of_xterm): Staticpro help_echo_object.
if HELP is a function, call it with OBJECT and POS as parameters
to get the help to display.
(gen_help_event, kbd_buffer_store_help_event): New functions.
(kbd_buffer_get_event): Construct the Lisp help-event differently.
(read_char): Call show_help_echo with new parameters.
(x_scroll_bar_handle_click, SET_SAVED_MENU_EVENT, XTread_socket):
Always set `arg' member of input_events.
(construct_menu_click): Unused function removed.
frame_or_window slot of TOOL_BAR_EVENT input events instead of
consing. For prefix events, store the frame in the `arg' slot of
the event, otherwise store the key there.
(XTread_socket): Instead of consing, use the frame_or_window slot
of HELP_EVENTs for the frame, and the `arg' slot for the help
string.
`arg' member of the input event; don't cons.
(menubar_selection_callback): Use the `arg' slot of input events
to queue additional information, instead of consing.
kbd_buffer_frame_or_window. Now used for all Lisp objects
referenced from the input queue.
(kbd_buffer_store_event): Always use structure assignment for
copying input events. Record all Lisp objects referenced from
events in kbd_buffer_gcpro.
(kbd_buffer_get_event): Construct Lisp `help-echo' events
differently from input events. Test for prefix menu_bar_events
and TOOL_BAR_EVENTs differently. Reset all slots used by an input
event in kbd_buffer_gcpro to nil.
(make_lispy_event) <TOOL_BAR_EVENT>: Treat an input event whose
frame_or_window is equal to its arg member as prefix events.
(stuff_buffered_input): Reset all slots in kbd_buffer_gcpro
used by an input event to nil.
(init_keyboard): Use two times the size of the input queue
for kbd_buffer_gcpro.
(syms_of_keyboard): Likewise.