For wm_take_focus, use x_any_window_to_frame.
Don't use FRAME_XIC if it is null, here.
(dumpglyphs): Use 8-bit output to X, rather than 16-bit,
if the character values permit that.
(x_new_fontset): If frame F has already using FONTSET, avoid the
duplicated work. Use FS_LOAD_FONT.
(x_list_fonts): Call Fassoc to search Valternate_charset_table.
(x_load_font): Get around a buf of XListFonts
x_wm_set_size_hint if window has no parent yet.
Simplify the call to x_real_positions.
(x_make_frame_visible): Use win_gravity to decide whether to
call XMoveWindow. Also, don't do it if frame already visible.
when frame was made invisible.
(x_make_frame_visible): Put the call to x_set_offset back as it was.
Near the end, instead call XMoveWindow, but only if original
positions were not negative.
mapping the window and accepting input.
(x_calc_absolute_position): Do nothing if current position
is already for the top-left corner.
Handle errors in XTranslateCoordinates.
(XTread_socket): Simplify handling of ConfigureNotify events.
Always call x_wm_set_size_hint for them.
No need to call XTranslateCoordinates here.
(x_clear_errors): New function.
Save value of x_catch_errors and pass to x_uncatch_errors.
(x_catch_errors): Use specpdl so can be nested.
Use a Lisp string to as the buffer for the X message.
(x_uncatch_errors, x_had_errors_p, x_check_errors): Related changes.
(x_catch_errors_unwind): New function.
(x_error_quitter): Call x_error_catcher if appropriate.
(x_error_message_string): New variable.
(syms_of_xterm): Defvar it.
(x_caught_error_message): Variable deleted.
(X_ERROR_MESSAGE_SIZE): Renamed from X_CAUGHT_ERROR_MESSAGE_SIZE.
(x_error_handler): New function, calls x_error_quitter or ..._checker.
(x_initialize): Use x_error_handler as error handler for X.
use-default-ascent.
Fill background in advance if font has
non-zero _MULE_BASELINE_OFFSET property.
(x_load_font, x_term_init): Handle font property _MULE_DEFAULT_ASCENT.
(PER_CHAR_METRIC): New macro.
(dumpglyphs): New argument CMPCHARP. Handle multibyte characters.
(XTwrite_glyphs, redraw_previous_char, redraw_following_char):
Supply argument CMPCHARP to dumpglyphs.
(dumprectangle): Display whole glyph of wide-column characters.
Supply argument CMPCHARP to dumpglyphs.
(show_mouse_face): Supply argument CMPCHARP to dumpglyphs.
(x_draw_box): Pay attention to wide-column characters.
(x_draw_single_glyph): Supply argument CMPCHARP to dumpglyphs.
(x_new_font): Call fs_load_font for actual font loading work.
(x_new_fontset): New function.
(x_get_font_info, x_list_fonts, x_load_font, x_query_font): New
functions providing API to fontset handler.
(x_term_init): Initialize several new members of struct x_display_info.
(clear_cursor, x_display_bar_cursor, x_display_box_cursor)
(x_set_window_size): Use phys_cursor_on field in frame.
(x_update_cursor): Negative phys_cursor_x no longer means anything.
(x_scroll_bar_expose): Use VERTICAL_SCROLL_BAR_WIDTH_TRIM.
(XTchange_line_highlight, dumpglyphs, XTclear_end_of_line)
(do_line_dance, pixel_to_glyph_coords): Use FRAME_WINDOW_WIDTH.
(x_scroll_bar_move, x_scroll_bar_create):
Add a border around the actual window.
(x_scroll_bar_expose): Don't trim the width here.
and VERTICAL_SCROLL_BAR_TOP_RANGE.
(XTclear_end_of_line): Shift end-of-line when there is a
left-side scroll bar by FRAME_LEFT_SCROLL_BAR_WIDTH.
(do_line_dance): Take into account the width of a left-side scroll bar.
(dumprectangle): Trim at FRAME_EXTERNAL_WIDTH instead of FRAME_WIDTH.
(fast_find_position): Use new macro WINDOW_LEFT_MARGIN.
(show_mouse_face): Likewise.
(x_scroll_bar_set_handle): VERTICAL_SCROLL_BAR_INSIDE_WIDTH now
requires the frame as an argument.
(x_scroll_bar_expose): Narrow the box slightly for a left-side scroll bar.
(show_mouse_face, clear_cursor): Likewise.
(x_display_cursor): New args X and Y.
(XTupdate_end, XTcursor_to, XTwrite_glyphs): Pass new args.
(XTupdate_begin): Initialize curs_x, curs_y here.