]> code.delx.au - gnu-emacs/commitdiff
Unify mouse-highlight code for all GUI and TTY sessions.
authorEli Zaretskii <eliz@gnu.org>
Sat, 6 Nov 2010 08:28:31 +0000 (10:28 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 6 Nov 2010 08:28:31 +0000 (10:28 +0200)
 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.

1  2 
src/ChangeLog
src/dispextern.h
src/nsterm.m
src/term.c
src/w32term.c
src/xdisp.c
src/xterm.c

diff --cc src/ChangeLog
index 17e4b4224544d04ceb8e7645ad981025abd8473e,2859c8217f8e25f4d14ba0c5363d41315269c58e..09afa259f8313e29a45e563970a4e0be8da33db2
 -      * 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  <eliz@gnu.org>
+ 2010-11-05  Eli Zaretskii  <eliz@gnu.org>
 -2010-11-01  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * 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.
 -
++      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-10-31  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * xdisp.c (get_tool_bar_item, handle_tool_bar_click)
+       * 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.
 -
 -      * 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  <eliz@gnu.org>
 -
 -      * xdisp.c (coords_in_mouse_face_p): Move prototype out of the
++      (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.
 -      systems.
 -      (show_mouse_face): Call it, instead of calling draw_glyphs directly.
++      (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
 -
 -      * xmenu.c (popup_activated): Don't define on MSDOS.
++      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 ||.
 -      * termchar.h (struct tty_display_info): Define mouse_face_*
 -      members not only for MSDOS.  Delete stray whitespace.
 -      <mouse_face_beg_x, mouse_face_beg_y, mouse_face_overlay>: 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.
++      (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.
++
 +2010-11-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * term.c (append_glyphless_glyph, produce_glyphless_glyph): Remove
 +      unused variables.
 +
 +2010-11-05  Adrian Robert  <Adrian.B.Robert@gmail.com>
 +
 +      * nsterm.m (EmacsView-mouseExited:): Correct error in conditional
 +      logic pointed out by Eli Zaretskii.
 +
 +2010-11-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * 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  <Adrian.B.Robert@gmail.com>
 +
 +      * 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  <ismail@namtrac.org>  (tiny change)
 +
 +      * nsfont.m (nsfont_draw)
 +      * nsimage.m (EmacsImage-setXBMColor:)
 +      * nsterm.m (EmacsView-performDragOperation:): Correct empty return.
 +
 +2010-11-03  Julien Danjou  <julien@danjou.info>
 +
 +      * image.c (gif_load): Add support for transparency and specified
 +      :background.
 +
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * 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  <handa@m17n.org>
 +
 +      * w32gui.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2):
 +      Surround chp by parentheses.
 +
 +2010-11-01  Kenichi Handa  <handa@m17n.org>
 +
 +      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  <rgm@gnu.org>
 +
 +      * xterm.c (x_connection_closed) [USE_X_TOOLKIT]: Fix merge, maybe.
 +
 +      * frame.c (syms_of_frame) <tool-bar-mode>:
 +      Default to nil if !HAVE_WINDOW_SYSTEM.  (Bug#7299)
 +
 +2010-10-31  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * 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  <eliz@gnu.org>
  
Simple merge
diff --cc src/nsterm.m
index bdca33efed56acc6a4eef5b5bd0c44dad7429075,32235fd29c6067436309874a57ed0bd75966fe16..10607766086705d49c9d3782851211f32a8cef42
@@@ -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);
diff --cc src/term.c
Simple merge
diff --cc src/w32term.c
Simple merge
diff --cc src/xdisp.c
Simple merge
diff --cc src/xterm.c
Simple merge