From: Eli Zaretskii Date: Sat, 6 Nov 2010 08:28:31 +0000 (+0200) Subject: Unify mouse-highlight code for all GUI and TTY sessions. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~45^2~370 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c1fc2d3a9c511d6893dfb919f543d747913d1539;p=emacs.git Unify mouse-highlight code for all GUI and TTY sessions. term.c: Remove static mouse_face_* variables. All users changed. (term_show_mouse_face, term_clear_mouse_face) (fast_find_position, term_mouse_highlight): Functions deleted. (tty_draw_row_with_mouse_face): New function. (term_mouse_movement): Call note_mouse_highlight instead of term_mouse_highlight. nsterm.m (ns_update_window_begin, ns_update_window_end) (ns_update_end, x_destroy_window, ns_frame_up_to_date) (ns_dumpglyphs_box_or_relief, ns_maybe_dumpglyphs_background) (ns_dumpglyphs_image, ns_dumpglyphs_stretch) (ns_initialize_display_info, keyDown, mouseMoved, mouseExited): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. xterm.c (x_update_window_begin, x_update_window_end) (x_update_end, XTframe_up_to_date, x_set_mouse_face_gc) (handle_one_xevent, x_free_frame_resources, x_term_init): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. w32term.c (x_update_window_begin, x_update_window_end) (x_update_end, w32_read_socket, x_free_frame_resources) (w32_initialize_display_info): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. xdisp.c (show_mouse_face, note_mode_line_or_margin_highlight) (note_mouse_highlight) [HAVE_WINDOW_SYSTEM]: Don't run GUI code unless the frame is on a window-system. (get_tool_bar_item, handle_tool_bar_click) (note_tool_bar_highlight, draw_glyphs, erase_phys_cursor) (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p) (note_mode_line_or_margin_highlight, note_mouse_highlight) (x_clear_window_mouse_face, cancel_mouse_face, expose_frame): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. (coords_in_mouse_face_p): Move prototype out of the HAVE_WINDOW_SYSTEM conditional. (x_y_to_hpos_vpos, frame_to_window_pixel_xy): Move out of the HAVE_WINDOW_SYSTEM block. (try_window_id) [HAVE_GPM || MSDOS]: Call x_clear_window_mouse_face. (draw_row_with_mouse_face): Implementation for HAVE_WINDOW_SYSTEM systems. Call tty_draw_row_with_mouse_face for TTY systems. (show_mouse_face): Call draw_row_with_mouse_face, instead of calling draw_glyphs directly. (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p) (cursor_in_mouse_face_p, rows_from_pos_range) (mouse_face_from_buffer_pos, mouse_face_from_string_pos) (note_mode_line_or_margin_highlight, note_mouse_highlight) (x_clear_window_mouse_face, cancel_mouse_face): Move out of the HAVE_WINDOW_SYSTEM block. Ifdef away window-system specific fragments. (note_mouse_highlight): Call popup_activated for MSDOS as well. Clear mouse highlight if pointer is over glyphs whose OBJECT is an integer. (mouse_face_from_buffer_pos): Add parentheses around && within ||. (x_consider_frame_title, tool_bar_lines_needed): Move prototypes to HAVE_WINDOW_SYSTEM-only part. (get_window_cursor_type): Move inside a HAVE_WINDOW_SYSTEM-only part. Remove "#ifdef HAVE_WINDOW_SYSTEM" from body of function. (null_glyph_slice): Move declaration into HAVE_WINDOW_SYSTEM-only part. dispnew.c (mirror_make_current): Set Y coordinate of the mode-line and header-line rows. (init_display): Setup initial frame's output_data for text terminal frames. xmenu.c (popup_activated): Don't define on MSDOS, which now has its own definition on msdos.c. msdos.c (show_mouse_face, clear_mouse_face) (fast_find_position, IT_note_mode_line_highlight) (IT_note_mouse_highlight): Functions deleted. (IT_frame_up_to_date, dos_rawgetc): Call note_mouse_highlight instead of IT_note_mouse_highlight. (draw_row_with_mouse_face, popup_activated): New functions. (dos_set_window_size, draw_row_with_mouse_face, IT_update_begin) (IT_update_end, IT_frame_up_to_date, internal_terminal_init) (dos_rawgetc): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. msdos.h (initialize_msdos_display): Add prototype. frame.h (MOUSE_HL_INFO): New macro. lisp.h (Mouse_HLInfo): New data type. xterm.h (struct x_display_info): w32term.h (struct w32_display_info): nsterm.h (struct ns_display_info): termchar.h (struct tty_display_info): Use it instead of mouse_face_* members. dispextern.h (show_mouse_face, clear_mouse_face): Update type of 1st argument. (frame_to_window_pixel_xy, note_mouse_highlight) (x_clear_window_mouse_face, cancel_mouse_face, clear_mouse_face) (show_mouse_face, cursor_in_mouse_face_p): Move prototypes out of HAVE_WINDOW_SYSTEM conditional. (draw_row_with_mouse_face): Declare prototype. (tty_draw_row_with_mouse_face): Declare prototype. --- c1fc2d3a9c511d6893dfb919f543d747913d1539 diff --cc src/ChangeLog index 17e4b422454,2859c8217f8..09afa259f83 --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,116 -1,151 +1,227 @@@ + 2010-11-05 Eli Zaretskii + - * xdisp.c (x_consider_frame_title, tool_bar_lines_needed): Move - prototypes to HAVE_WINDOW_SYSTEM-only part. - (get_window_cursor_type): Move inside a HAVE_WINDOW_SYSTEM-only - part. Remove "#ifdef HAVE_WINDOW_SYSTEM" from body of function. - (null_glyph_slice): Move declaration into HAVE_WINDOW_SYSTEM-only - part. - - * frame.h (MOUSE_HL_INFO): Fix definition to work both for - TTY-only and GUI builds. - - * dispnew.c (init_display): Setup initial frame's output_data for - text terminal frames. - - * frame.h (MOUSE_HL_INFO): Fix TTY definition. - - * dispextern.h (tty_draw_row_with_mouse_face): Add prototype. - - * xdisp.c (draw_row_with_mouse_face): Don't #ifdef away on MSDOS. - Call tty_draw_row_with_mouse_face on MSDOS as well. - - * msdos.c (tty_draw_row_with_mouse_face): Renamed from - draw_row_with_mouse_face. Make the argument list identical with - GPM implementation. - - * msdos.h (Display_Info): Restore typedef. - (initialize_msdos_display): Add prototype. - -2010-11-02 Eli Zaretskii ++ Unify mouse-highlight code for all GUI and TTY sessions. + + * term.c: Remove static mouse_face_* variables. All users + changed. + (term_show_mouse_face, term_clear_mouse_face) + (fast_find_position, term_mouse_highlight): Functions deleted. + (tty_draw_row_with_mouse_face): New function. + (term_mouse_movement): Call note_mouse_highlight instead of + term_mouse_highlight. + -2010-11-01 Eli Zaretskii - - * msdos.c (dos_set_window_size, draw_row_with_mouse_face) - (IT_update_begin, IT_update_end, IT_frame_up_to_date) - (internal_terminal_init, dos_rawgetc): Replace Display_Info with - Mouse_HLInfo everywhere where mouse_face_* members were accessed - for mouse highlight purposes. - + * nsterm.m (ns_update_window_begin, ns_update_window_end) + (ns_update_end, x_destroy_window, ns_frame_up_to_date) + (ns_dumpglyphs_box_or_relief, ns_maybe_dumpglyphs_background) + (ns_dumpglyphs_image, ns_dumpglyphs_stretch) + (ns_initialize_display_info, keyDown, mouseMoved, mouseExited): + Replace Display_Info with Mouse_HLInfo everywhere where + mouse_face_* members were accessed for mouse highlight purposes. + + * xterm.c (x_update_window_begin, x_update_window_end) + (x_update_end, XTframe_up_to_date, x_set_mouse_face_gc) + (handle_one_xevent, x_free_frame_resources, x_term_init): Replace + Display_Info with Mouse_HLInfo everywhere where mouse_face_* + members were accessed for mouse highlight purposes. + + * w32term.c (x_update_window_begin, x_update_window_end) + (x_update_end, w32_read_socket, x_free_frame_resources) + (w32_initialize_display_info): Replace Display_Info with + Mouse_HLInfo everywhere where mouse_face_* members were accessed + for mouse highlight purposes. + + * xdisp.c (show_mouse_face, note_mode_line_or_margin_highlight) + (note_mouse_highlight) [HAVE_WINDOW_SYSTEM]: Don't run GUI code + unless the frame is on a window-system. - -2010-10-31 Eli Zaretskii - - * xdisp.c (get_tool_bar_item, handle_tool_bar_click) ++ (get_tool_bar_item, handle_tool_bar_click) + (note_tool_bar_highlight, draw_glyphs, erase_phys_cursor) + (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p) + (note_mode_line_or_margin_highlight, note_mouse_highlight) + (x_clear_window_mouse_face, cancel_mouse_face, expose_frame): + Replace Display_Info with Mouse_HLInfo everywhere where + mouse_face_* members were accessed for mouse highlight purposes. - - * frame.h (MOUSE_HL_INFO): New macro. - - * lisp.h (Mouse_HLInfo): New data type. - - * xterm.h (struct x_display_info): - * w32term.h (struct w32_display_info): - * nsterm.h (struct ns_display_info): - * termchar.h (struct tty_display_info): Use it instead of - mouse_face_* members. - - * dispextern.h (DPYINFO_DEFINED): Remove definition. - (FRAME_X_DISPLAY_INFO): Remove definition. - (show_mouse_face, clear_mouse_face): Update type of 1st argument. - -2010-10-30 Eli Zaretskii - - * xdisp.c (coords_in_mouse_face_p): Move prototype out of the ++ (coords_in_mouse_face_p): Move prototype out of the + HAVE_WINDOW_SYSTEM conditional. + (x_y_to_hpos_vpos, frame_to_window_pixel_xy): Move out of the + HAVE_WINDOW_SYSTEM block. + (try_window_id) [HAVE_GPM || MSDOS]: Call + x_clear_window_mouse_face. + (draw_row_with_mouse_face): Implementation for HAVE_WINDOW_SYSTEM - systems. - (show_mouse_face): Call it, instead of calling draw_glyphs directly. ++ systems. Call tty_draw_row_with_mouse_face for TTY systems. ++ (show_mouse_face): Call draw_row_with_mouse_face, instead of ++ calling draw_glyphs directly. + (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p) + (cursor_in_mouse_face_p, rows_from_pos_range) + (mouse_face_from_buffer_pos, mouse_face_from_string_pos) + (note_mode_line_or_margin_highlight, note_mouse_highlight) + (x_clear_window_mouse_face, cancel_mouse_face): Move out of the + HAVE_WINDOW_SYSTEM block. Ifdef away window-system specific + fragments. + (note_mouse_highlight): Call popup_activated for MSDOS as well. + Clear mouse highlight if pointer is over glyphs whose OBJECT is an + integer. + (mouse_face_from_buffer_pos): Add parentheses around && within ||. - - * xmenu.c (popup_activated): Don't define on MSDOS. ++ (x_consider_frame_title, tool_bar_lines_needed): Move ++ prototypes to HAVE_WINDOW_SYSTEM-only part. ++ (get_window_cursor_type): Move inside a HAVE_WINDOW_SYSTEM-only ++ part. Remove "#ifdef HAVE_WINDOW_SYSTEM" from body of function. ++ (null_glyph_slice): Move declaration into HAVE_WINDOW_SYSTEM-only ++ part. + + * dispnew.c (mirror_make_current): Set Y coordinate of the + mode-line and header-line rows. ++ (init_display): Setup initial frame's output_data for text ++ terminal frames. + - * termchar.h (struct tty_display_info): Define mouse_face_* - members not only for MSDOS. Delete stray whitespace. - : New - struct members. - - * dispextern.h (DPYINFO_DEFINED) [HAVE_X_WINDOWS]: Define. - (DPYINFO_DEFINED) [HAVE_NTGUI]: Define. - (DPYINFO_DEFINED) [HAVE_NS]: Define. - (Display_Info) [!DPYINFO_DEFINED]: Define here. - (FRAME_X_DISPLAY_INFO) [HAVE_GPM]: Define. - (FRAME_X_DISPLAY_INFO): Define to NULL if not defined. - (frame_to_window_pixel_xy, note_mouse_highlight) - (x_clear_window_mouse_face, cancel_mouse_face, clear_mouse_face) - (show_mouse_face, cursor_in_mouse_face_p): Move prototypes out of - HAVE_WINDOW_SYSTEM conditional. - (draw_row_with_mouse_face): Declare prototype. - - * msdos.h (Display_Info): Don't define here. ++ * xmenu.c (popup_activated): Don't define on MSDOS, which now has ++ its own definition on msdos.c. + + * msdos.c (show_mouse_face, clear_mouse_face) + (fast_find_position, IT_note_mode_line_highlight) + (IT_note_mouse_highlight): Functions deleted. + (IT_frame_up_to_date, dos_rawgetc): Call note_mouse_highlight + instead of IT_note_mouse_highlight. + (draw_row_with_mouse_face, popup_activated): New functions. ++ (dos_set_window_size, draw_row_with_mouse_face, IT_update_begin) ++ (IT_update_end, IT_frame_up_to_date, internal_terminal_init) ++ (dos_rawgetc): Replace Display_Info with Mouse_HLInfo everywhere ++ where mouse_face_* members were accessed for mouse highlight ++ purposes. ++ ++ * msdos.h (initialize_msdos_display): Add prototype. ++ ++ * frame.h (MOUSE_HL_INFO): New macro. ++ ++ * lisp.h (Mouse_HLInfo): New data type. ++ ++ * xterm.h (struct x_display_info): ++ * w32term.h (struct w32_display_info): ++ * nsterm.h (struct ns_display_info): ++ * termchar.h (struct tty_display_info): Use it instead of ++ mouse_face_* members. ++ ++ * dispextern.h (show_mouse_face, clear_mouse_face): Update type of ++ 1st argument. ++ (frame_to_window_pixel_xy, note_mouse_highlight) ++ (x_clear_window_mouse_face, cancel_mouse_face, clear_mouse_face) ++ (show_mouse_face, cursor_in_mouse_face_p): Move prototypes out of ++ HAVE_WINDOW_SYSTEM conditional. ++ (draw_row_with_mouse_face): Declare prototype. ++ (tty_draw_row_with_mouse_face): Declare prototype. ++ +2010-11-05 Eli Zaretskii + + * term.c (append_glyphless_glyph, produce_glyphless_glyph): Remove + unused variables. + +2010-11-05 Adrian Robert + + * nsterm.m (EmacsView-mouseExited:): Correct error in conditional + logic pointed out by Eli Zaretskii. + +2010-11-04 Lars Magne Ingebrigtsen + + * coding.c (coding-category-list): Refer to set-coding-system-priority + instead of the obsolete set-coding-priority in the doc string. + + +2010-11-04 Adrian Robert + + * nsfont.m (nsfont_draw): Correct previous patch to return + correct value. + * nsimage.m (EmacsImage-setXBMColor:): Correct previous patch: + don't change the method signature, change the return. + +2010-11-04 Ismail Donmez (tiny change) + + * nsfont.m (nsfont_draw) + * nsimage.m (EmacsImage-setXBMColor:) + * nsterm.m (EmacsView-performDragOperation:): Correct empty return. + +2010-11-03 Julien Danjou + + * image.c (gif_load): Add support for transparency and specified + :background. + +2010-11-01 Kenichi Handa + + * dispextern.h (lookup_glyphless_char_display): Extern it. + + * termhooks.h (struct terminal): New member charset_list. + + * coding.c (Fset_terminal_coding_system_internal): Set the + `charset_list' member of struct terminal. + + * term.c (produce_glyphs): Handle the case it->what == IT_GLYPHLESS. + (append_glyphless_glyph, produce_glyphless_glyph): New functions. + + * xdisp.c (lookup_glyphless_char_display): Make it non-static. + (lookup_glyphless_char_display): Set it->what at the end. + (last_glyphless_glyph_frame, last_glyphless_glyph_face_id) + (last_glyphless_glyph_merged_face_id): Make them non-static. + + * w32term.c (x_draw_glyphless_glyph_string_foreground): + Fix the arg with_background for font->driver->draw. + +2010-11-01 Kenichi Handa + + * w32gui.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): + Surround chp by parentheses. + +2010-11-01 Kenichi Handa + + Implement various display methods for glyphless characters. + + * xdisp.c (Qglyphless_char, Vglyphless_char_display) + (Qglyphless_char_display, Qhexa_code, Qempty_box, Qthin_space) + (Qzero_width): New variables. + (THIN_SPACE_WIDTH): New macro. + (lookup_glyphless_char_display): New funciton. + (last_glyphless_glyph_frame, last_glyphless_glyph_face_id) + (last_glyphless_glyph_merged_face_id): New variables. + (get_next_display_element): Check glyphless characters. + (redisplay_internal): Initialize last_glyphless_glyph_frame and + last_glyphless_glyph_face_id. + (fill_glyphless_glyph_string): New function. + (BUILD_GLYPHLESS_GLYPH_STRING): New macro. + (BUILD_GLYPH_STRINGS): Handle the case GLYPHLESS_GLYPH. + (append_glyphless_glyph, produce_glyphless_glyph): New functions. + (x_produce_glyphs): If a suitable font is not found, produce a + glyphless glyph. Handle the case it->what == IT_GLYPHLESS. + (syms_of_xdisp): Intern and staticpro Qglyphless_char, + Qglyphless_char_display, Qhexa_code, Qempty_box, Qthin_space, and + Qzero_width. + (Vglyphless_char_display): Declare it as a Lisp variable. + + * dispextern.h (enum glyph_type): Add GLYPHLESS_GLYPH. + (struct glyph): Change the size of the member "type" to 3. + Add glyphless to the union slice and u. + (enum display_element_type): Add IT_GLYPHLESS. + (enum glyphless_display_method): New enum. + (struct it): New member glyphless_method. + (Vglyphless_char_display): Extern it. + + * xterm.c (x_draw_glyphless_glyph_string_foreground): New function. + (x_draw_glyph_string): Handle the case GLYPHLESS_GLYPH. + + * w32term.c (x_draw_glyphless_glyph_string_foreground): New function. + (x_draw_glyph_string): Handle the case GLYPHLESS_GLYPH. + + * nsterm.m (ns_draw_glyph_string): Handle the case + GLYPHLESS_GLYPH (the detail is not yet implemented). + +2010-10-31 Glenn Morris + + * xterm.c (x_connection_closed) [USE_X_TOOLKIT]: Fix merge, maybe. + + * frame.c (syms_of_frame) : + Default to nil if !HAVE_WINDOW_SYSTEM. (Bug#7299) + +2010-10-31 Chong Yidong + + * xterm.c (x_connection_closed): Print informative error message + when aborting on GTK. This requires using shut_down_emacs + directly instead of Fkill_emacs. 2010-10-29 Eli Zaretskii diff --cc src/nsterm.m index bdca33efed5,32235fd29c6..10607766086 --- a/src/nsterm.m +++ b/src/nsterm.m @@@ -5313,7 -5295,7 +5311,7 @@@ ns_term_shutdown (int sig NSTRACE (mouseExited); - if (!dpyinfo) - if (hlinfo || !emacsframe) ++ if (!hlinfo) return; last_mouse_movement_time = EV_TIMESTAMP (theEvent);