(note_mouse_movement): Say mouse moved if current frame differs
from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
(XTmouse_position): Set last_mouse_glyph_frame.
(XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event.
(mac_draw_string_common) [MAC_OSX && WORDS_BIG_ENDIAN]: Fix typo.
Use EndianU16_BtoN.
(mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls.
(x_per_char_metric, XLoadQueryFont)
[MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get
glyph bounds.
(mac_to_x_fontname, mac_do_list_fonts)
(mac_initialize_display_info): Change screen resolutions to 72dpi.
(FRAME_NORMAL_GC): New macro.
(mac_draw_line, mac_clear_area, mac_clear_window)
(mac_fill_rectangle, mac_draw_string, mac_draw_string_16)
(mac_draw_image_string, mac_draw_image_string_16): Rename from
XDrawLine, XClearArea, XClearWindow, XFillRectangle, XDrawString,
XDrawString16, XDrawImageString, and XDrawImageString16, respectively.
All uses changed.
(mac_draw_line, mac_erase_rectangle, mac_clear_area)
(mac_clear_window, mac_draw_bitmap, mac_draw_rectangle)
(mac_invert_rectangle, mac_draw_string_common, mac_draw_string)
(mac_draw_string_16, mac_draw_image_string)
(mac_draw_image_string_16, mac_copy_area, mac_copy_area_with_mask)
(mac_scroll_area): Drawing functions now take frame as destination.
All uses changed.
(mac_draw_string_common): Get port height with FRAME_PIXEL_HEIGHT.
(x_draw_fringe_bitmap): Set clipping area in face->gc.
(glyph_rect, remember_mouse_glyph): Remove mac specific versions.
(XTmouse_position): Adapt to use generic remember_mouse_glyph
instead of pixel_to_glyph_coords.
(fm_font_family_alist): New variable.
(syms_of_macterm): Initialize and staticpro it.
(decode_mac_font_name): Replace '-' in family name with '_' if it
occurs just once. Lower family name.
(parse_x_font_name): Rename from x_font_name_to_mac_font_name.
All uses changed. Remove argument MF and code conversion for it.
Add argument SIZE. Rename argument MF_DECODED to FAMILY, and CS
to CHARSET. Parse font size. Lower family name. Return integer
value for status of parsing.
(init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name.
Don't use Fdowncase because family name is already lowered by
decode_mac_font_name.
(init_font_name_table): Always call decode_mac_font_name. Add
pair of family name and its reference to fm_font_family_alist.
(mac_clear_font_name_table): Clear fm_font_family_alist.
(XLoadQueryFont): Move font size parsing part to parse_x_font_name.
Lookup fm_font_family_alist to get font family reference.
(XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family
name is already lowered by parse_x_font_name.
(mac_compute_glyph_string_overhangs, init_font_name_table)
(XLoadQueryFont, mac_unload_font) [USE_ATSUI]: Add ATSUI support.
(atsu_get_text_layout_with_text_ptr) [USE_ATSUI]: New function.
(x_draw_glyph_string_background)
(x_draw_glyph_string_foreground) [MAC_OS8 && USE_ATSUI]: Don't use
XDrawImageString. Always draw background and foreground separately.
(x_draw_glyph_string_foreground) [USE_ATSUI]: Don't use 8-bit
functions for one-byte chars when using ATSUI-compatible fonts.
(atsu_font_id_hash) [USE_ATSUI]: New variable.
(syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it.
(XLoadQueryFont): Set min_byte1, max_byte1, min_char_or_byte2, and
max_char_or_byte2 more in detail.
(quit_char_comp, mac_check_for_quit_char) [MAC_OSX]: Remove functions.
(xlfdpat_destroy, xlfdpat_create, xlfdpat_exact_p)
(xlfdpat_block_match_1, xlfdpat_match): New functions.
(xlfdpat_block_match): New macro.
(mac_to_x_fontname): Don't use tolower for non-ASCII characters.
(x_font_name_to_mac_font_name): Set coding.dst_multibyte to 0.
(add_font_name_table_entry): Increase font_name_table_size more
rapidly.
(mac_c_string_match): Remove function.
(mac_do_list_fonts): Use XLFD pattern match instead of regular
expression match.
(mac_handle_visibility_change): New function.
(x_make_frame_invisible, x_iconify_frame)
(XTread_socket) [!USE_CARBON_EVENTS]: Use it.
[USE_CARBON_EVENTS] (mac_handle_window_event)
(install_window_handler): Handle visibilty change events.
(x_make_frame_visible): Don't reposition window if it is iconified
or asked for visible before. Select and uncollapse window when it
is made visible.
(x_make_frame_invisible): Don't reset x_highlight_frame.
(x_iconify_frame): Likewise. Make invisible frame visible before
it is iconified.
(read_socket_inev): Move variable outside #if USE_CARBON_EVENTS.
(do_window_update): Don't change visibility of invisible frame.
(XSetFont): Add declaration.
(mac_set_forecolor, mac_set_backcolor, mac_set_colors): Remove
functions.
(GC_FORE_COLOR, GC_BACK_COLOR, GC_FONT, MAC_WINDOW_NORMAL_GC): New
defines.
(XDrawLine, mac_draw_line_to_pixmap, XClearWindow)
(mac_draw_bitmap, XCreatePixmapFromBitmapData, XFillRectangle)
(mac_draw_rectangle, mac_draw_string_common, mac_scroll_area): Use
them.
(mac_erase_rectangle): New function.
(XClearArea, x_draw_fringe_bitmap, x_clear_glyph_string_rect)
(x_draw_stretch_glyph_string): Use it.
(XChangeGC, XCreateGC, XGetGCValues, XSetForeground)
(XSetBackground, XSetFont): Adjust for new GC implementation.
(x_draw_fringe_bitmap, x_draw_box_rect): Use GC to set colors.
(XTset_vertical_scroll_bar): Clear area under scroll bar.
(x_use_underline_position_properties, last_mouse_press_frame)
(x_noop_count, Qvendor_specific_keysyms): Remove unused variables.
(syms_of_macterm, mac_initialize): Don't initialize them.
(waiting_for_input, initial_argv, initial_argc)
(Vcommand_line_args, Vx_no_window_manager, errno, window_scroll)
(set_frame_menubar, path_from_vol_dir_name): Remove externs.
(extra_keyboard_modifiers): Fix type in extern.
(x_window_to_frame, x_window_to_scroll_bar): Remove declarations.
(x_scroll_bar_report_motion): Add argument types to declaration.
(mac_compute_glyph_string_overhangs): Add declaration.
(disable_mouse_highlight): Remove unused variable.
[USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click)
(x_scroll_bar_handle_press, x_scroll_bar_handle_release)
(x_scroll_bar_handle_drag): Remove argument `timestamp'. All
callers changed.
[USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set
timestamp.
[USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise.
(x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar
only when its width is less than the height.
(XTredeem_scroll_bar): Sync with xterm.c.
(font_name_table, font_name_table_size, font_name_count): Make
static.
(drag_and_drop_file_list): Remove variable. Previous use is now
local to function.
(do_ae_open_documents): Move DRAG_N_DROP event construction part
from XTread_socket.
(XTread_socket): Consolidate setting of event timestamp. Move
DRAG_N_DROP event construction part to do_ae_open_documents.
Support extra_keyboard_modifiers.
VERTICAL_BORDER_FACE_ID for vertical border line.
(mac_encode_char): Call check_ccl_update in advance.
(mac_to_x_fontname, x_font_name_to_mac_font_name)
(init_font_name_table, mac_do_list_fonts, XLoadQueryFont): Don't
assume that font family length is less than 32.
(x_compute_min_glyph_bounds): Make static.
(x_load_font): Never set fonts_changed_p to zero.
overhangs unless the given glyph type is noncomposite CHAR_GLYPH.
[USE_CARBON_EVENTS] (mac_convert_event_ref): Convert dead key down
events.
(XTread_socket): Don't pass keyboard events with the option
modifier to the system when Vmac_command_key_is_meta is nil or
Vmac_option_modifier is non-nil.
[USE_CARBON_EVENTS] (read_socket_inev): New variable.
[USE_CARBON_EVENTS] (init_command_handler): Fix argument.
[USE_CARBON_EVENTS] (mac_handle_mouse_event): New Carbon event
handler function.
(install_window_handler) [USE_CARBON_EVENTS]: Install it.
(XTread_socket) [USE_CARBON_EVENTS]: Move mouse wheel event
handler part to mac_handle_mouse_event.
Rename from get_control_part_bound. All callers changed.
(x_scroll_bar_clear): New function.
(x_clear_frame): Use it.
(XTset_vertical_scroll_bar): Don't call Draw1Control.
(x_scroll_bar_handle_click): Change type of second argument from
int to ControlPartCode.
(check_alarm): Remove declaration.
(XTread_Socket) [!TARGET_API_MAC_CARBON]: Don't call it.
(XTread_Socket): Use ControlPartCode instead of SInt16.
variable.
(mac_handle_tool_bar_click): Remove unused function and
declaration.
[USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback)
(install_scroll_bar_timer, set_scroll_bar_timer)
(control_part_code_to_scroll_bar_part, construct_scroll_bar_click)
(get_control_part_bound, x_scroll_bar_handle_press)
(x_scroll_bar_handle_release, x_scroll_bar_handle_drag)
(x_set_toolkit_scroll_bar_thumb): New functions and declarations.
[USE_TOOLKIT_SCROLL_BARS] (last_scroll_bar_part, scroll_bar_timer)
(scroll_bar_timer_event_posted_p): New variables.
[USE_TOOLKIT_SCROLL_BARS] (SCROLL_BAR_FIRST_DELAY)
(SCROLL_BAR_CONTINUOUS_DELAY): New macros.
(x_scroll_bar_create): Set control reference with NewControl.
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Initialize
track_top and track_height to nil.
(x_scroll_bar_set_handle, x_scroll_bar_note_movement): Put
functions in #ifndef USE_TOOLKIT_SCROLL_BARS.
(XTset_vertical_scroll_bar): Don't make space between scroll bar
and associated window.
(XTset_vertical_scroll_bar) [MAC_OSX]: Get scroll bar area width
from window config.
(XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: Set
track_top and track_height to nil when scroll bar size is changed.
Recalculate them if they are nil.
(XTread_socket) [MAC_OSX]: Use control kind to determine if the
clicked control is a scroll bar.
(XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Use toolkit scroll bar
event handler functions. Don't add modifiers to scroll bar click
events. Call scroll bar release handler when window is
deactivated.
(mac_initialize): Remove unused code for X toolkit.
(syms_of_macterm) [!USE_TOOLKIT_SCROLL_BARS]: Initialize
Vx_toolkit_scroll_bars to nil.
(syms_of_mac): Don't initialize them.
(Vmac_charset_info_alist): New variable.
(syms_of_mac): Defvar it.
(create_text_encoding_info_alist): New function.
(decode_mac_font_name, mac_to_x_fontname)
(x_font_name_to_mac_font_name, init_font_name_table): Don't hard
code the correspondence among XLFD charsets, Mac script codes, and
Emacs coding systems. Use Vmac_charset_info_alist and result of
create_text_encoding_info_alist instead.
(init_font_name_table) [TARGET_API_MAC_CARBON]: Use Font Manager
routines also on Mac OS Classic.
(init_font_name_table) [!TARGET_API_MAC_CARBON]: Use
add_font_name_table_entry.
(mac_do_list_fonts): Regard 0 in XLFD scaleble fields as
specified. Derive unspecified scalable fields from specified one.
(x_list_fonts): Consider Valternate_fontname_alist.
(kDefaultFontSize): Change value from 9 to 12.
(XLoadQueryFont): Get decoded font family, font face, and charset
from x_font_name_to_mac_font_name. Set full name of loaded font.
(mac_unload_font): Free `full_name' member.
(x_load_font): Don't try XLoadQueryFont if x_list_fonts returns
NULL. Copy full_name member of struct MacFontStruct to that of
struct font_info.
(last_window): New variable.
(XTreassert_line_highlight, x_change_line_highlight): Remove
declarations.
(mac_focus_changed, x_detect_focus_change): New functions and
declarations.
(XTextExtents16, front_emacs_window): Remove function.
(mac_focus_frame): New function.
(XTmouse_position, do_menu_choice, do_zoom_window, XTread_socket)
(mac_check_for_quit_char): Use it instead of front_emacs_window.
(x_scroll_bar_report_motion): Obtain window from control owner.
(x_make_frame_invisible): Set window manager size hint.
(do_mouse_moved): Remove function.
(XTread_socket): Move its contents here. Generate select-window
event on mouse movement if needed. Use x_detect_focus_change on
activate/deactivate events. Don't deiconify frame or invalidate
window rectangle when dnd items are dropped. Don't
activate/deactivate root control.
(frame_highlight, frame_unhighlight): Activate/deactivate root
control here.
(syms_of_macterm): Delete DEFVAR_BOOL for x_autoselect_window_p.
Remove variables.
(XTread_socket): Store language-change event if keyboard script change
is detected. Don't convert input to `mac_keyboard_text_encoding'.
(syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding.
(mac_make_rdb): Create resource database from preferences and argument
string.
(mac_term_init): Save resource database to cddr part of
name_list_element.
declarations.
(mac_set_colors): Take argument for saving background color. All
callers changed.
(XDrawLine, XClearArea, mac_draw_bitmap, XFillRectangle)
(mac_draw_rectangle, mac_draw_string_common): Save and Restore
background color.
(x_update_end, mac_do_track_drag): Don't reset background color.
(mac_define_frame_cursor) [!TARGET_API_MAC_CARBON]: Use
SetThemeCursor.
(x_set_window_size) [TARGET_API_MAC_CARBON]: Move progress indicator
control to the upper-right corner of the window.
(arrow_cursor) [!TARGET_API_MAC_CARBON]: Remove variable.
(do_init_managers) [!TARGET_API_MAC_CARBON]: Don't initialize it.
(do_window_update): Update controls after updating content area.
(mac_handle_window_event): Remove unused extern.
(XTread_socket): Check both control handle and control part code to
determine whether a scroll bar is clicked. Activate/deactivate root
control instead of contained scroll bar controls.
(make_mac_terminal_frame): Use ThemeCursor constants.
[__MRC__ && TARGET_API_MAC_CARBON]: Don't declare `qd'.
(x_free_frame_resources): Call remove_window_handler for non-tooltip
windows.
[TARGET_API_MAC_CARBON]: Don't include headers that are included via
Carbon.h.
[TARGET_API_MAC_CARBON] (mac_do_track_dragUPP)
(mac_do_receive_dragUPP): New variables.
(mac_handle_service_event, init_service_handler): Put declarations and
definitions in #ifdef MAC_OSX.
(install_window_handler) [TARGET_API_MAC_CARBON]: Create UPPs for
drag-and-drop handler functions and register them.
(remove_window_handler): New function.
(do_ae_open_documents, mac_do_receive_drag) [!MAC_OSX]: Use
fsspec_to_posix_pathname.
(main): Change #if !TARGET_API_MAC_CARBON to #ifdef MAC_OS8.
(XTread_socket) [!MAC_OSX]: Don't pass keyboard events to TSM.
[MAC_OS8] (make_mac_terminal_frame) [TARGET_API_MAC_CARBON]: Set
default cursors.
(mac_initialize) [USE_CARBON_EVENTS && !MAC_OSX] : Don't call
init_service_handler or init_quit_char_handler.
(mac_initialize) [!MAC_OSX]: Don't call MakeMeTheFrontProcess.
clip_tail.
* xdisp.c (get_glyph_string_clip_rect): Restrict horizontal clip
region to the area between clip_head and clip_tail.
(draw_glyphs): Record the area that need to be actually redrawn to
the new variables clip_head and clip_tail when there are
overhangs. Set values of these variables to the corresponding
members in struct glyph_string. Refine x coordinates for
* macgui.h (STORE_XCHARSETSTRUCT): New macro.
* macterm.c (mac_compute_glyph_string_overhangs): Implement with
QDTextBounds.
(x_draw_glyph_string): Don't fill the background of the successor
of a glyph with a right overhang if the successor will draw a
cursor.
(XLoadQueryFont): Obtain font metrics using QDTextBounds.
(x_redisplay_interface): Add entry for
compute_glyph_string_overhangs.