diff options
| author | Miles Bader | 2005-01-29 00:06:24 +0000 |
|---|---|---|
| committer | Miles Bader | 2005-01-29 00:06:24 +0000 |
| commit | 5f85994ad17fbe952504bfafb49fbef4ded186af (patch) | |
| tree | 33522e4a7a8ddc7c7efa704bd6264f9722ad4ce8 /src | |
| parent | 87795686a9e8ea51ec492d01d7dce4698b14f3af (diff) | |
| parent | aba1948af5107ad44c467e4f97792af5ce75a7d7 (diff) | |
| download | emacs-5f85994ad17fbe952504bfafb49fbef4ded186af.tar.gz emacs-5f85994ad17fbe952504bfafb49fbef4ded186af.zip | |
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-7
Merge from emacs--cvs-trunk--0
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-52
- miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-53
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-54
Update from CVS: lisp/cus-start.el (all): Add `undo-outer-limit'.
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-55
- miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-57
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-58
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-7
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-8
- miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-11
Update from CVS
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 164 | ||||
| -rw-r--r-- | src/dispextern.h | 2 | ||||
| -rw-r--r-- | src/keymap.c | 6 | ||||
| -rw-r--r-- | src/macterm.c | 25 | ||||
| -rw-r--r-- | src/w32term.c | 30 | ||||
| -rw-r--r-- | src/xdisp.c | 85 | ||||
| -rw-r--r-- | src/xterm.c | 67 |
7 files changed, 218 insertions, 161 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e9a38a7d64c..3bb83dc10e2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,38 @@ | |||
| 1 | 2005-01-28 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * keymap.c (access_keymap): YAILOM. | ||
| 4 | |||
| 5 | 2005-01-27 Kim F. Storm <storm@cua.dk> | ||
| 6 | |||
| 7 | * xdisp.c (get_phys_cursor_geometry): New function to calculate | ||
| 8 | phys cursor position and size for hollow cursor. Position is | ||
| 9 | aligned with get_glyph_string_clip_rect and ensures that a hollow | ||
| 10 | cursor is shown, even when the actual glyph is not visible. | ||
| 11 | |||
| 12 | * dispextern.h (get_phys_cursor_geometry): Add prototype. | ||
| 13 | |||
| 14 | * xterm.c (x_clip_to_row): Ensure y >= 0. | ||
| 15 | (x_draw_hollow_cursor): Use get_phys_cursor_geometry. | ||
| 16 | |||
| 17 | * w32term.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. | ||
| 18 | |||
| 19 | * macterm.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. | ||
| 20 | |||
| 21 | 2005-01-27 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 22 | |||
| 23 | * xterm.c (x_error_quitter): Add a prototype. Make it static again. | ||
| 24 | |||
| 25 | 2005-01-27 Kim F. Storm <storm@cua.dk> | ||
| 26 | |||
| 27 | * xdisp.c (get_glyph_string_clip_rect): Always show a cursor | ||
| 28 | glyph, even when row is only partially visible and actual cursor | ||
| 29 | position is not visible. | ||
| 30 | |||
| 31 | 2005-01-24 Richard M. Stallman <rms@gnu.org> | ||
| 32 | |||
| 33 | * xterm.c (x_error_quitter): No longer static, and moved after | ||
| 34 | x_error_handler. | ||
| 35 | |||
| 1 | 2005-01-24 Kim F. Storm <storm@cua.dk> | 36 | 2005-01-24 Kim F. Storm <storm@cua.dk> |
| 2 | 37 | ||
| 3 | * xdisp.c (move_it_by_lines): If we move forward after going too | 38 | * xdisp.c (move_it_by_lines): If we move forward after going too |
| @@ -51,7 +86,7 @@ | |||
| 51 | 2005-01-22 Steven Tamm <steventamm@mac.com> | 86 | 2005-01-22 Steven Tamm <steventamm@mac.com> |
| 52 | 87 | ||
| 53 | * s/darwin.h: Removed PTY_ITERATION from here. | 88 | * s/darwin.h: Removed PTY_ITERATION from here. |
| 54 | (DARWIN): Defined. | 89 | (DARWIN): Define. |
| 55 | * process.c (init_process): Default process-connection-type to | 90 | * process.c (init_process): Default process-connection-type to |
| 56 | nil on darwin 6 or less, t if it is 7 or higher. This way the | 91 | nil on darwin 6 or less, t if it is 7 or higher. This way the |
| 57 | broken pty behavior is still allowed on darwin 6 for interactive | 92 | broken pty behavior is still allowed on darwin 6 for interactive |
| @@ -94,17 +129,16 @@ | |||
| 94 | 129 | ||
| 95 | 2005-01-20 Steven Tamm <steventamm@mac.com> | 130 | 2005-01-20 Steven Tamm <steventamm@mac.com> |
| 96 | 131 | ||
| 97 | * editfns.c (Voperating_system_release): Added. | 132 | * editfns.c (Voperating_system_release): Add. |
| 98 | (init_editfns): Assign new variable operating-system-release | 133 | (init_editfns): Assign new variable operating-system-release |
| 99 | based on call to uname if available. | 134 | based on call to uname if available. |
| 100 | (get_operating_system_release): Added function to | 135 | (get_operating_system_release): Add function to |
| 101 | allow c-level access to operating system release. | 136 | allow c-level access to operating system release. |
| 102 | 137 | ||
| 103 | * config.h: Regenerated. | 138 | * config.h: Regenerated. |
| 104 | 139 | ||
| 105 | * s/darwin.h (PTY_ITERATION): Don't allow PTYs on darwin 6 or | 140 | * s/darwin.h (PTY_ITERATION): Don't allow PTYs on darwin 6 or less. |
| 106 | less. | 141 | (MIN_PTY_KERNEL_VERSION): Define minimum kernel version for |
| 107 | (MIN_PTY_KERNEL_VERSION): Defined minimum kernel version for | ||
| 108 | using ptys as '7'. | 142 | using ptys as '7'. |
| 109 | 143 | ||
| 110 | 2005-01-20 Kim F. Storm <storm@cua.dk> | 144 | 2005-01-20 Kim F. Storm <storm@cua.dk> |
| @@ -146,8 +180,8 @@ | |||
| 146 | 180 | ||
| 147 | 2005-01-17 Kim F. Storm <storm@cua.dk> | 181 | 2005-01-17 Kim F. Storm <storm@cua.dk> |
| 148 | 182 | ||
| 149 | * dispnew.c (mode_line_string, marginal_area_string): Fix | 183 | * dispnew.c (mode_line_string, marginal_area_string): |
| 150 | off-by-one error in search for glyph. | 184 | Fix off-by-one error in search for glyph. |
| 151 | 185 | ||
| 152 | 2005-01-16 Kim F. Storm <storm@cua.dk> | 186 | 2005-01-16 Kim F. Storm <storm@cua.dk> |
| 153 | 187 | ||
| @@ -155,7 +189,7 @@ | |||
| 155 | 189 | ||
| 156 | 2005-01-16 Steven Tamm <steventamm@mac.com> | 190 | 2005-01-16 Steven Tamm <steventamm@mac.com> |
| 157 | 191 | ||
| 158 | * macterm.c (mac_to_x_fontname): Removed spurious argument. | 192 | * macterm.c (mac_to_x_fontname): Remove spurious argument. |
| 159 | 193 | ||
| 160 | 2005-01-16 Andreas Schwab <schwab@suse.de> | 194 | 2005-01-16 Andreas Schwab <schwab@suse.de> |
| 161 | 195 | ||
| @@ -171,7 +205,7 @@ | |||
| 171 | * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW) | 205 | * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW) |
| 172 | (READABLE_EVENTS_FILTER_EVENTS, READABLE_EVENTS_IGNORE_SQUEEZABLES): | 206 | (READABLE_EVENTS_FILTER_EVENTS, READABLE_EVENTS_IGNORE_SQUEEZABLES): |
| 173 | New flags for readable_events. | 207 | New flags for readable_events. |
| 174 | (get_filtered_input_pending, readable_filtered_events): Removed. | 208 | (get_filtered_input_pending, readable_filtered_events): Remove. |
| 175 | (tracking_off): Call readable_events and get_input_pending with | 209 | (tracking_off): Call readable_events and get_input_pending with |
| 176 | flag READABLE_EVENTS_DO_TIMERS_NOW. | 210 | flag READABLE_EVENTS_DO_TIMERS_NOW. |
| 177 | (readable_events): Move code from old readable_filtered_events here, | 211 | (readable_events): Move code from old readable_filtered_events here, |
| @@ -211,8 +245,8 @@ | |||
| 211 | 245 | ||
| 212 | 2005-01-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 246 | 2005-01-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 213 | 247 | ||
| 214 | * macfns.c (x_set_foreground_color, x_set_background_color): Sync | 248 | * macfns.c (x_set_foreground_color, x_set_background_color): |
| 215 | with xfns.c. | 249 | Sync with xfns.c. |
| 216 | (mac_window, x_create_tip_frame): Use XSetWindowBackground. | 250 | (mac_window, x_create_tip_frame): Use XSetWindowBackground. |
| 217 | * macterm.c (XSetBackground, XSetWindowBackground): New functions. | 251 | * macterm.c (XSetBackground, XSetWindowBackground): New functions. |
| 218 | * macterm.h (XSetBackground, XSetWindowBackground): Add externs. | 252 | * macterm.h (XSetBackground, XSetWindowBackground): Add externs. |
| @@ -269,8 +303,8 @@ | |||
| 269 | (get_next_display_element): Test Vshow_nonbreak_escape. | 303 | (get_next_display_element): Test Vshow_nonbreak_escape. |
| 270 | Do not setup escape_glyph_face. | 304 | Do not setup escape_glyph_face. |
| 271 | Properly merge escape-glyph face or face from display table with | 305 | Properly merge escape-glyph face or face from display table with |
| 272 | current face for escape and control characters. Set | 306 | current face for escape and control characters. |
| 273 | it->dpvec_face_id to relevant face id instead of adding it to each | 307 | Set it->dpvec_face_id to relevant face id instead of adding it to each |
| 274 | element of display vector. | 308 | element of display vector. |
| 275 | (next_element_from_display_vector): If it->dpvec_face_id is set, | 309 | (next_element_from_display_vector): If it->dpvec_face_id is set, |
| 276 | use that instead of lface_id from glyph itself. | 310 | use that instead of lface_id from glyph itself. |
| @@ -294,8 +328,7 @@ | |||
| 294 | 328 | ||
| 295 | * gtkutil.c (xg_gtk_scroll_destroy, xg_create_scroll_bar) | 329 | * gtkutil.c (xg_gtk_scroll_destroy, xg_create_scroll_bar) |
| 296 | (xg_tool_bar_callback, xg_tool_bar_help_callback) | 330 | (xg_tool_bar_callback, xg_tool_bar_help_callback) |
| 297 | (update_frame_tool_bar): Cast to EMACS_INT to avoid compiler | 331 | (update_frame_tool_bar): Cast to EMACS_INT to avoid compiler warning. |
| 298 | warning. | ||
| 299 | 332 | ||
| 300 | * xselect.c (x_get_foreign_selection, x_fill_property_data) | 333 | * xselect.c (x_get_foreign_selection, x_fill_property_data) |
| 301 | (Fx_get_atom_name, Fx_send_client_event): Replace XFLOAT with | 334 | (Fx_get_atom_name, Fx_send_client_event): Replace XFLOAT with |
| @@ -353,8 +386,8 @@ | |||
| 353 | [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. | 386 | [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. |
| 354 | [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a | 387 | [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a |
| 355 | file dialog is in action. | 388 | file dialog is in action. |
| 356 | [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise. Reject | 389 | [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise. |
| 357 | only when there are no filename items. Set background color | 390 | Reject only when there are no filename items. Set background color |
| 358 | before (un)highlighting the window below the dragged items. | 391 | before (un)highlighting the window below the dragged items. |
| 359 | (XTread_socket) [!USE_CARBON_EVENTS]: Don't call do_window_update. | 392 | (XTread_socket) [!USE_CARBON_EVENTS]: Don't call do_window_update. |
| 360 | 393 | ||
| @@ -438,8 +471,7 @@ | |||
| 438 | 471 | ||
| 439 | * fileio.c (Finsert_file_contents): Don't use | 472 | * fileio.c (Finsert_file_contents): Don't use |
| 440 | current_buffer->buffer_file_coding_system even if REPLACE is | 473 | current_buffer->buffer_file_coding_system even if REPLACE is |
| 441 | non-nil. Call Qafter_insert_file_set_coding with the second arg | 474 | non-nil. Call Qafter_insert_file_set_coding with the second arg VISIT. |
| 442 | VISIT. | ||
| 443 | 475 | ||
| 444 | * fontset.h (struct font_info): New members space_width and | 476 | * fontset.h (struct font_info): New members space_width and |
| 445 | average_width. | 477 | average_width. |
| @@ -452,8 +484,7 @@ | |||
| 452 | * xterm.c (x_new_font): Set FRAME_COLUMN_WIDTH to | 484 | * xterm.c (x_new_font): Set FRAME_COLUMN_WIDTH to |
| 453 | fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to | 485 | fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to |
| 454 | fontp->space_width. | 486 | fontp->space_width. |
| 455 | (x_load_font): Calculate fontp->space_width and | 487 | (x_load_font): Calculate fontp->space_width and fontp->average_width. |
| 456 | fontp->average_width. | ||
| 457 | (x_term_init): Initialize dpyinfo->Xatom_AVERAGE_WIDTH. | 488 | (x_term_init): Initialize dpyinfo->Xatom_AVERAGE_WIDTH. |
| 458 | 489 | ||
| 459 | * xdisp.c (x_produce_glyphs): Calculate tab width by | 490 | * xdisp.c (x_produce_glyphs): Calculate tab width by |
| @@ -462,8 +493,7 @@ | |||
| 462 | 2004-12-29 Sanghyuk Suh <han9kin@mac.com> | 493 | 2004-12-29 Sanghyuk Suh <han9kin@mac.com> |
| 463 | 494 | ||
| 464 | * macterm.c (SelectionRange): Add Xcode position apple event struct. | 495 | * macterm.c (SelectionRange): Add Xcode position apple event struct. |
| 465 | (do_ae_open_documents): Handle Xcode-style file position open | 496 | (do_ae_open_documents): Handle Xcode-style file position open events. |
| 466 | events. | ||
| 467 | 497 | ||
| 468 | 2004-12-29 Luc Teirlinck <teirllm@auburn.edu> | 498 | 2004-12-29 Luc Teirlinck <teirllm@auburn.edu> |
| 469 | 499 | ||
| @@ -489,11 +519,16 @@ | |||
| 489 | init_mac_drag_n_drop. | 519 | init_mac_drag_n_drop. |
| 490 | (mac_do_track_drag): New function and declaration. | 520 | (mac_do_track_drag): New function and declaration. |
| 491 | (install_window_handler): Return OSErr value. | 521 | (install_window_handler): Return OSErr value. |
| 492 | (install_window_handler) [TARGET_API_MAC_CARBON]: Register | 522 | (install_window_handler) [TARGET_API_MAC_CARBON]: |
| 493 | handlers for tracking/receiving drag-and-drop items. | 523 | Register handlers for tracking/receiving drag-and-drop items. |
| 494 | (do_ae_open_documents): Generate unibyte strings for filenames. | 524 | (do_ae_open_documents): Generate unibyte strings for filenames. |
| 495 | (mac_do_receive_drag) [TARGET_API_MAC_CARBON] : Likewise. Reject | 525 | <<<<<<< ChangeLog |
| 496 | only non-filename items. Set event modifiers. Set return value. | 526 | (mac_do_receive_drag) [TARGET_API_MAC_CARBON] : Likewise. |
| 527 | Reject only non-filename items. Set event modifiers and return value. | ||
| 528 | ======= | ||
| 529 | (mac_do_receive_drag) [TARGET_API_MAC_CARBON] : Likewise. | ||
| 530 | Reject only non-filename items. Set event modifiers, and return value. | ||
| 531 | >>>>>>> 1.4187 | ||
| 497 | 532 | ||
| 498 | 2004-12-28 Dan Nicolaescu <dann@ics.uci.edu> | 533 | 2004-12-28 Dan Nicolaescu <dann@ics.uci.edu> |
| 499 | 534 | ||
| @@ -517,8 +552,8 @@ | |||
| 517 | * xmenu.c (popup_get_selection): Only pop down dialogs | 552 | * xmenu.c (popup_get_selection): Only pop down dialogs |
| 518 | on C-g and Escape. | 553 | on C-g and Escape. |
| 519 | (popup_get_selection): Remove parameter down_on_keypress. | 554 | (popup_get_selection): Remove parameter down_on_keypress. |
| 520 | (create_and_show_popup_menu, create_and_show_dialog): Remove | 555 | (create_and_show_popup_menu, create_and_show_dialog): |
| 521 | parameter down_on_keypress to popup_get_selection. | 556 | Remove parameter down_on_keypress to popup_get_selection. |
| 522 | 557 | ||
| 523 | 2004-12-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 558 | 2004-12-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 524 | 559 | ||
| @@ -535,8 +570,8 @@ | |||
| 535 | 570 | ||
| 536 | * frame.c (x_set_frame_parameters, x_report_frame_params) | 571 | * frame.c (x_set_frame_parameters, x_report_frame_params) |
| 537 | (x_set_fullscreen): Remove #ifndef HAVE_CARBON. | 572 | (x_set_fullscreen): Remove #ifndef HAVE_CARBON. |
| 538 | (x_set_border_width, Vdefault_frame_scroll_bars): Change | 573 | (x_set_border_width, Vdefault_frame_scroll_bars): |
| 539 | HAVE_CARBON to MAC_OS. | 574 | Change HAVE_CARBON to MAC_OS. |
| 540 | 575 | ||
| 541 | * image.c [MAC_OS]: Include sys/stat.h. | 576 | * image.c [MAC_OS]: Include sys/stat.h. |
| 542 | [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and | 577 | [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and |
| @@ -544,8 +579,7 @@ | |||
| 544 | 579 | ||
| 545 | * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern. | 580 | * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern. |
| 546 | [!MAC_OSX] (select): Use mac_wait_next_event. | 581 | [!MAC_OSX] (select): Use mac_wait_next_event. |
| 547 | [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to | 582 | [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to Vexec_suffixes. |
| 548 | Vexec_suffixes. | ||
| 549 | [!MAC_OSX] (select, run_mac_command): Change `#ifdef | 583 | [!MAC_OSX] (select, run_mac_command): Change `#ifdef |
| 550 | TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. | 584 | TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. |
| 551 | (mac_clear_font_name_table): Add extern. | 585 | (mac_clear_font_name_table): Add extern. |
| @@ -564,21 +598,19 @@ | |||
| 564 | * macfns.c (mac_initialized): Remove extern. | 598 | * macfns.c (mac_initialized): Remove extern. |
| 565 | (stricmp): Put in #if 0. All callers changed to use xstricmp in | 599 | (stricmp): Put in #if 0. All callers changed to use xstricmp in |
| 566 | xfaces.c. | 600 | xfaces.c. |
| 567 | (strnicmp): Decrement `n' at the end of each loop, not the | 601 | (strnicmp): Decrement `n' at the end of each loop, not the beginning. |
| 568 | beginning. | 602 | (check_mac): Use the term "Mac native windows" instead of "Mac OS". |
| 569 | (check_mac): Use the term "Mac native windows" instead of "Mac | ||
| 570 | OS". | ||
| 571 | (check_x_display_info, x_display_info_for_name): Sync with xfns.c. | 603 | (check_x_display_info, x_display_info_for_name): Sync with xfns.c. |
| 572 | (mac_get_rdb_resource): New function (from w32reg.c). | 604 | (mac_get_rdb_resource): New function (from w32reg.c). |
| 573 | (x_get_string_resource): Use it. | 605 | (x_get_string_resource): Use it. |
| 574 | (install_window_handler): Add extern. | 606 | (install_window_handler): Add extern. |
| 575 | (mac_window): New function. | 607 | (mac_window): New function. |
| 576 | (Fx_create_frame): Use it instead of make_mac_frame. Set | 608 | (Fx_create_frame): Use it instead of make_mac_frame. |
| 577 | parameter for Qfullscreen. Call x_wm_set_size_hint. | 609 | Set parameter for Qfullscreen. Call x_wm_set_size_hint. |
| 578 | (Fx_open_connection, Fx_close_connection): New defuns. | 610 | (Fx_open_connection, Fx_close_connection): New defuns. |
| 579 | (syms_of_macfns): Defsubr them. | 611 | (syms_of_macfns): Defsubr them. |
| 580 | (x_create_tip_frame) [TARGET_API_MAC_CARBON]: Add | 612 | (x_create_tip_frame) [TARGET_API_MAC_CARBON]: |
| 581 | kWindowNoUpdatesAttribute to the window attribute. | 613 | Add kWindowNoUpdatesAttribute to the window attribute. |
| 582 | (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow. | 614 | (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow. |
| 583 | (x_create_tip_frame): Don't call ShowWindow. | 615 | (x_create_tip_frame): Don't call ShowWindow. |
| 584 | (Fx_show_tip): Call ShowWindow. | 616 | (Fx_show_tip): Call ShowWindow. |
| @@ -587,8 +619,7 @@ | |||
| 587 | (mac_frame_parm_handlers): Set handlers for Qfullscreen. | 619 | (mac_frame_parm_handlers): Set handlers for Qfullscreen. |
| 588 | (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0. | 620 | (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0. |
| 589 | 621 | ||
| 590 | * macgui.h [!MAC_OSX]: Don't include Controls.h. Include | 622 | * macgui.h [!MAC_OSX]: Don't include Controls.h. Include Windows.h. |
| 591 | Windows.h. | ||
| 592 | (Window): Typedef to WindowPtr and move outside `#if | 623 | (Window): Typedef to WindowPtr and move outside `#if |
| 593 | TARGET_API_MAC_CARBON'. | 624 | TARGET_API_MAC_CARBON'. |
| 594 | (XSizeHints): New struct. | 625 | (XSizeHints): New struct. |
| @@ -607,8 +638,12 @@ | |||
| 607 | (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window | 638 | (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window |
| 608 | if the position is neither user-specified nor program-specified. | 639 | if the position is neither user-specified nor program-specified. |
| 609 | (x_free_frame_resources): Free size_hints. | 640 | (x_free_frame_resources): Free size_hints. |
| 610 | (x_wm_set_size_hint): Allocate size_hints if needed. Set | 641 | <<<<<<< ChangeLog |
| 611 | size_hints. | 642 | (x_wm_set_size_hint): Allocate size_hints if needed. |
| 643 | Set size_hints. | ||
| 644 | ======= | ||
| 645 | (x_wm_set_size_hint): Allocate size_hints if needed. Set size_hints. | ||
| 646 | >>>>>>> 1.4187 | ||
| 612 | (mac_clear_font_name_table): New function. | 647 | (mac_clear_font_name_table): New function. |
| 613 | (mac_do_list_fonts): Initialize font_name_table if needed. | 648 | (mac_do_list_fonts): Initialize font_name_table if needed. |
| 614 | (x_list_fonts): Don't initialize font_name_table. Add BLOCK_INPUT | 649 | (x_list_fonts): Don't initialize font_name_table. Add BLOCK_INPUT |
| @@ -622,8 +657,7 @@ | |||
| 622 | (do_window_update): Add BeginUpdate/EndUpdate for the tooltip | 657 | (do_window_update): Add BeginUpdate/EndUpdate for the tooltip |
| 623 | window. Use UpdateControls. Get the rectangle that should be | 658 | window. Use UpdateControls. Get the rectangle that should be |
| 624 | updated and restrict the target of expose_frame to it. | 659 | updated and restrict the target of expose_frame to it. |
| 625 | (do_grow_window): Set minimum height/width according to | 660 | (do_grow_window): Set minimum height/width according to size_hints. |
| 626 | size_hints. | ||
| 627 | (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow. | 661 | (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow. |
| 628 | (do_zoom_window): Don't use x_set_window_size. | 662 | (do_zoom_window): Don't use x_set_window_size. |
| 629 | [USE_CARBON_EVENTS] (mac_handle_window_event): New function. | 663 | [USE_CARBON_EVENTS] (mac_handle_window_event): New function. |
| @@ -635,10 +669,10 @@ | |||
| 635 | (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event. | 669 | (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event. |
| 636 | Update mouse_region when mouse is moved. | 670 | Update mouse_region when mouse is moved. |
| 637 | (make_mac_frame): Remove. | 671 | (make_mac_frame): Remove. |
| 638 | (make_mac_terminal_frame): Put in #ifdef MAC_OS8. Initialize | 672 | (make_mac_terminal_frame): Put in #ifdef MAC_OS8. |
| 639 | mouse pointer shapes. Change values of f->left_pos and | 673 | Initialize mouse pointer shapes. Change values of f->left_pos and |
| 640 | f->top_pos. Don't use make_mac_frame. Use NewCWindow. Don't | 674 | f->top_pos. Don't use make_mac_frame. Use NewCWindow. |
| 641 | call ShowWindow. | 675 | Don't call ShowWindow. |
| 642 | (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from | 676 | (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from |
| 643 | Vinvocation_name and Vsystem_name. | 677 | Vinvocation_name and Vsystem_name. |
| 644 | (mac_make_rdb): New function (from w32term.c). | 678 | (mac_make_rdb): New function (from w32term.c). |
| @@ -661,17 +695,21 @@ | |||
| 661 | 695 | ||
| 662 | 2004-12-27 Richard M. Stallman <rms@gnu.org> | 696 | 2004-12-27 Richard M. Stallman <rms@gnu.org> |
| 663 | 697 | ||
| 664 | * buffer.c (Fbuffer_disable_undo): Deleted (moved to simple.el). | 698 | <<<<<<< ChangeLog |
| 699 | * buffer.c (Fbuffer_disable_undo): Delete (moved to simple.el). | ||
| 700 | ======= | ||
| 701 | * buffer.c (Fbuffer_disable_undo): Delete (move to simple.el). | ||
| 702 | >>>>>>> 1.4187 | ||
| 665 | (syms_of_buffer): Don't defsubr it. | 703 | (syms_of_buffer): Don't defsubr it. |
| 666 | 704 | ||
| 667 | * process.c (list_processes_1): Set undo_list instead | 705 | * process.c (list_processes_1): Set undo_list instead |
| 668 | of calling Fbuffer_disable_undo. | 706 | of calling Fbuffer_disable_undo. |
| 669 | 707 | ||
| 670 | * xdisp.c (single_display_spec_string_p): Renamed from | 708 | * xdisp.c (single_display_spec_string_p): Rename from |
| 671 | single_display_prop_string_p. | 709 | single_display_prop_string_p. |
| 672 | (single_display_spec_intangible_p): Renamed from | 710 | (single_display_spec_intangible_p): Rename from |
| 673 | single_display_prop_intangible_p. | 711 | single_display_prop_intangible_p. |
| 674 | (handle_single_display_spec): Renamed from handle_single_display_prop. | 712 | (handle_single_display_spec): Rename from handle_single_display_prop. |
| 675 | Rewritten to be easier to understand. | 713 | Rewritten to be easier to understand. |
| 676 | 714 | ||
| 677 | Change in load-history format. Functions now get (defun . NAME), | 715 | Change in load-history format. Functions now get (defun . NAME), |
| @@ -755,7 +793,7 @@ | |||
| 755 | 793 | ||
| 756 | * alloc.c (Fgarbage_collect): Update call to truncate_undo_list. | 794 | * alloc.c (Fgarbage_collect): Update call to truncate_undo_list. |
| 757 | Call that at the very start. | 795 | Call that at the very start. |
| 758 | (undo_limit, undo_strong_limit, undo_outer_limit): Moved to undo.c. | 796 | (undo_limit, undo_strong_limit, undo_outer_limit): Move to undo.c. |
| 759 | (syms_of_alloc): Don't define undo-limit, | 797 | (syms_of_alloc): Don't define undo-limit, |
| 760 | undo-strong-limit and undo-outer-limit here. | 798 | undo-strong-limit and undo-outer-limit here. |
| 761 | 799 | ||
| @@ -790,8 +828,8 @@ | |||
| 790 | 828 | ||
| 791 | 2004-12-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 829 | 2004-12-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 792 | 830 | ||
| 793 | * macterm.c (endif, x_font_name_to_mac_font_name): Use | 831 | * macterm.c (endif, x_font_name_to_mac_font_name): |
| 794 | maccentraleurroman instead of maccentraleuropean | 832 | Use maccentraleurroman instead of maccentraleuropean |
| 795 | (mac_c_string_match, mac_do_list_fonts): Speed up font search by | 833 | (mac_c_string_match, mac_do_list_fonts): Speed up font search by |
| 796 | quickly finding a specific font without needing regexps. | 834 | quickly finding a specific font without needing regexps. |
| 797 | 835 | ||
| @@ -817,8 +855,8 @@ | |||
| 817 | 855 | ||
| 818 | * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK. | 856 | * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK. |
| 819 | 857 | ||
| 820 | * process.c (send_process_trap, sigchld_handler): Call | 858 | * process.c (send_process_trap, sigchld_handler): |
| 821 | SIGNAL_THREAD_CHECK. | 859 | Call SIGNAL_THREAD_CHECK. |
| 822 | 860 | ||
| 823 | * data.c (arith_error): Call SIGNAL_THREAD_CHECK. | 861 | * data.c (arith_error): Call SIGNAL_THREAD_CHECK. |
| 824 | 862 | ||
| @@ -908,7 +946,7 @@ | |||
| 908 | 946 | ||
| 909 | * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC. | 947 | * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC. |
| 910 | 948 | ||
| 911 | 2004-12-07 Stefan <monnier@iro.umontreal.ca> | 949 | 2004-12-07 Stefan Monnier <monnier@iro.umontreal.ca> |
| 912 | 950 | ||
| 913 | * eval.c (init_eval_once): Increase max_specpdl_size to 1000. | 951 | * eval.c (init_eval_once): Increase max_specpdl_size to 1000. |
| 914 | 952 | ||
| @@ -2056,7 +2094,7 @@ | |||
| 2056 | 2094 | ||
| 2057 | * window.c (Fspecial_display_p): Doc fix. | 2095 | * window.c (Fspecial_display_p): Doc fix. |
| 2058 | 2096 | ||
| 2059 | 2004-10-15 Stefan <monnier@iro.umontreal.ca> | 2097 | 2004-10-15 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2060 | 2098 | ||
| 2061 | * doc.c (Fsubstitute_command_keys): Fix remap-handling. | 2099 | * doc.c (Fsubstitute_command_keys): Fix remap-handling. |
| 2062 | Don't ignore menus, because where-is-internal already does it for us. | 2100 | Don't ignore menus, because where-is-internal already does it for us. |
diff --git a/src/dispextern.h b/src/dispextern.h index ac56cdd31f2..5edc213fba1 100644 --- a/src/dispextern.h +++ b/src/dispextern.h | |||
| @@ -2640,6 +2640,8 @@ extern void x_fix_overlapping_area P_ ((struct window *, struct glyph_row *, | |||
| 2640 | extern void draw_phys_cursor_glyph P_ ((struct window *, | 2640 | extern void draw_phys_cursor_glyph P_ ((struct window *, |
| 2641 | struct glyph_row *, | 2641 | struct glyph_row *, |
| 2642 | enum draw_glyphs_face)); | 2642 | enum draw_glyphs_face)); |
| 2643 | extern int get_phys_cursor_geometry P_ ((struct window *, struct glyph_row *, | ||
| 2644 | struct glyph *, int *)); | ||
| 2643 | extern void erase_phys_cursor P_ ((struct window *)); | 2645 | extern void erase_phys_cursor P_ ((struct window *)); |
| 2644 | extern void display_and_set_cursor P_ ((struct window *, | 2646 | extern void display_and_set_cursor P_ ((struct window *, |
| 2645 | int, int, int, int, int)); | 2647 | int, int, int, int, int)); |
diff --git a/src/keymap.c b/src/keymap.c index 074cc1706bf..2977b4dec09 100644 --- a/src/keymap.c +++ b/src/keymap.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* Manipulation of keymaps | 1 | /* Manipulation of keymaps |
| 2 | Copyright (C) 1985, 86,87,88,93,94,95,98,99, 2000, 01, 2004 | 2 | Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1998, 1999, 2000, |
| 3 | Free Software Foundation, Inc. | 3 | 2001, 2004, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | This file is part of GNU Emacs. | 5 | This file is part of GNU Emacs. |
| 6 | 6 | ||
| @@ -527,7 +527,7 @@ access_keymap (map, idx, t_ok, noinherit, autoload) | |||
| 527 | GCPRO1 (map); | 527 | GCPRO1 (map); |
| 528 | /* A strange value in which Meta is set would cause | 528 | /* A strange value in which Meta is set would cause |
| 529 | infinite recursion. Protect against that. */ | 529 | infinite recursion. Protect against that. */ |
| 530 | if (meta_prefix_char & CHAR_META) | 530 | if (XINT (meta_prefix_char) & CHAR_META) |
| 531 | meta_prefix_char = make_number (27); | 531 | meta_prefix_char = make_number (27); |
| 532 | meta_map = get_keymap (access_keymap (map, meta_prefix_char, | 532 | meta_map = get_keymap (access_keymap (map, meta_prefix_char, |
| 533 | t_ok, noinherit, autoload), | 533 | t_ok, noinherit, autoload), |
diff --git a/src/macterm.c b/src/macterm.c index 9a1ee834ce5..aeed88013e5 100644 --- a/src/macterm.c +++ b/src/macterm.c | |||
| @@ -4737,29 +4737,10 @@ x_draw_hollow_cursor (w, row) | |||
| 4737 | if (cursor_glyph == NULL) | 4737 | if (cursor_glyph == NULL) |
| 4738 | return; | 4738 | return; |
| 4739 | 4739 | ||
| 4740 | /* Compute the width of the rectangle to draw. If on a stretch | 4740 | /* Compute frame-relative coordinates for phys cursor. */ |
| 4741 | glyph, and `x-stretch-block-cursor' is nil, don't draw a | ||
| 4742 | rectangle as wide as the glyph, but use a canonical character | ||
| 4743 | width instead. */ | ||
| 4744 | wd = cursor_glyph->pixel_width - 1; | ||
| 4745 | if (cursor_glyph->type == STRETCH_GLYPH | ||
| 4746 | && !x_stretch_cursor_p) | ||
| 4747 | wd = min (FRAME_COLUMN_WIDTH (f), wd); | ||
| 4748 | w->phys_cursor_width = wd; | ||
| 4749 | |||
| 4750 | /* Compute frame-relative coordinates from window-relative | ||
| 4751 | coordinates. */ | ||
| 4752 | x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); | 4741 | x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); |
| 4753 | y = WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y); | 4742 | y = get_phys_cursor_geometry (w, row, cursor_glyph, &h); |
| 4754 | 4743 | wd = w->phys_cursor_width; | |
| 4755 | /* Compute the proper height and ascent of the rectangle, based | ||
| 4756 | on the actual glyph. Using the full height of the row looks | ||
| 4757 | bad when there are tall images on that row. */ | ||
| 4758 | h = max (min (FRAME_LINE_HEIGHT (f), row->height), | ||
| 4759 | cursor_glyph->ascent + cursor_glyph->descent); | ||
| 4760 | if (h < row->height) | ||
| 4761 | y += row->ascent /* - w->phys_cursor_ascent */ + cursor_glyph->descent - h; | ||
| 4762 | h--; | ||
| 4763 | 4744 | ||
| 4764 | /* The foreground of cursor_gc is typically the same as the normal | 4745 | /* The foreground of cursor_gc is typically the same as the normal |
| 4765 | background color, which can cause the cursor box to be invisible. */ | 4746 | background color, which can cause the cursor box to be invisible. */ |
diff --git a/src/w32term.c b/src/w32term.c index bffdd8f2565..151afb7e841 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -5088,7 +5088,7 @@ x_draw_hollow_cursor (w, row) | |||
| 5088 | struct frame *f = XFRAME (WINDOW_FRAME (w)); | 5088 | struct frame *f = XFRAME (WINDOW_FRAME (w)); |
| 5089 | HDC hdc; | 5089 | HDC hdc; |
| 5090 | RECT rect; | 5090 | RECT rect; |
| 5091 | int wd, h; | 5091 | int h; |
| 5092 | struct glyph *cursor_glyph; | 5092 | struct glyph *cursor_glyph; |
| 5093 | HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel); | 5093 | HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel); |
| 5094 | 5094 | ||
| @@ -5098,34 +5098,12 @@ x_draw_hollow_cursor (w, row) | |||
| 5098 | if (cursor_glyph == NULL) | 5098 | if (cursor_glyph == NULL) |
| 5099 | return; | 5099 | return; |
| 5100 | 5100 | ||
| 5101 | /* Compute frame-relative coordinates from window-relative | 5101 | /* Compute frame-relative coordinates for phys cursor. */ |
| 5102 | coordinates. */ | ||
| 5103 | rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); | 5102 | rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); |
| 5104 | rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y) | 5103 | rect.top = get_phys_cursor_geometry (w, row, cursor_glyph, &h); |
| 5105 | + row->ascent - w->phys_cursor_ascent); | ||
| 5106 | |||
| 5107 | /* Compute the proper height and ascent of the rectangle, based | ||
| 5108 | on the actual glyph. Using the full height of the row looks | ||
| 5109 | bad when there are tall images on that row. */ | ||
| 5110 | h = max (min (FRAME_LINE_HEIGHT (f), row->height), | ||
| 5111 | cursor_glyph->ascent + cursor_glyph->descent); | ||
| 5112 | if (h < row->height) | ||
| 5113 | rect.top += row->ascent /* - w->phys_cursor_ascent */ + cursor_glyph->descent - h; | ||
| 5114 | h--; | ||
| 5115 | |||
| 5116 | rect.bottom = rect.top + h; | 5104 | rect.bottom = rect.top + h; |
| 5105 | rect.right = rect.left + w->phys_cursor_width; | ||
| 5117 | 5106 | ||
| 5118 | /* Compute the width of the rectangle to draw. If on a stretch | ||
| 5119 | glyph, and `x-stretch-block-cursor' is nil, don't draw a | ||
| 5120 | rectangle as wide as the glyph, but use a canonical character | ||
| 5121 | width instead. */ | ||
| 5122 | wd = cursor_glyph->pixel_width; /* TODO: Why off by one compared with X? */ | ||
| 5123 | if (cursor_glyph->type == STRETCH_GLYPH | ||
| 5124 | && !x_stretch_cursor_p) | ||
| 5125 | wd = min (FRAME_COLUMN_WIDTH (f), wd); | ||
| 5126 | w->phys_cursor_width = wd; | ||
| 5127 | |||
| 5128 | rect.right = rect.left + wd; | ||
| 5129 | hdc = get_frame_dc (f); | 5107 | hdc = get_frame_dc (f); |
| 5130 | /* Set clipping, draw the rectangle, and reset clipping again. */ | 5108 | /* Set clipping, draw the rectangle, and reset clipping again. */ |
| 5131 | w32_clip_to_row (w, row, TEXT_AREA, hdc); | 5109 | w32_clip_to_row (w, row, TEXT_AREA, hdc); |
diff --git a/src/xdisp.c b/src/xdisp.c index a8f36e04e38..7d7e510892b 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -1840,7 +1840,7 @@ get_glyph_string_clip_rect (s, nr) | |||
| 1840 | if (s->hl == DRAW_CURSOR) | 1840 | if (s->hl == DRAW_CURSOR) |
| 1841 | { | 1841 | { |
| 1842 | struct glyph *glyph = s->first_glyph; | 1842 | struct glyph *glyph = s->first_glyph; |
| 1843 | int height; | 1843 | int height, max_y; |
| 1844 | 1844 | ||
| 1845 | if (s->x > r.x) | 1845 | if (s->x > r.x) |
| 1846 | { | 1846 | { |
| @@ -1849,13 +1849,26 @@ get_glyph_string_clip_rect (s, nr) | |||
| 1849 | } | 1849 | } |
| 1850 | r.width = min (r.width, glyph->pixel_width); | 1850 | r.width = min (r.width, glyph->pixel_width); |
| 1851 | 1851 | ||
| 1852 | /* Don't draw cursor glyph taller than our actual glyph. */ | 1852 | /* If r.y is below window bottom, ensure that we still see a cursor. */ |
| 1853 | height = max (FRAME_LINE_HEIGHT (s->f), glyph->ascent + glyph->descent); | 1853 | height = min (glyph->ascent + glyph->descent, |
| 1854 | if (height < r.height) | 1854 | min (FRAME_LINE_HEIGHT (s->f), s->row->visible_height)); |
| 1855 | max_y = window_text_bottom_y (s->w) - height; | ||
| 1856 | max_y = WINDOW_TO_FRAME_PIXEL_Y (s->w, max_y); | ||
| 1857 | if (s->ybase - glyph->ascent > max_y) | ||
| 1855 | { | 1858 | { |
| 1856 | int max_y = r.y + r.height; | 1859 | r.y = max_y; |
| 1857 | r.y = min (max_y, s->ybase + glyph->descent - height); | 1860 | r.height = height; |
| 1858 | r.height = min (max_y - r.y, height); | 1861 | } |
| 1862 | else | ||
| 1863 | { | ||
| 1864 | /* Don't draw cursor glyph taller than our actual glyph. */ | ||
| 1865 | height = max (FRAME_LINE_HEIGHT (s->f), glyph->ascent + glyph->descent); | ||
| 1866 | if (height < r.height) | ||
| 1867 | { | ||
| 1868 | max_y = r.y + r.height; | ||
| 1869 | r.y = min (max_y, max (r.y, s->ybase + glyph->descent - height)); | ||
| 1870 | r.height = min (max_y - r.y, height); | ||
| 1871 | } | ||
| 1859 | } | 1872 | } |
| 1860 | } | 1873 | } |
| 1861 | 1874 | ||
| @@ -1866,6 +1879,64 @@ get_glyph_string_clip_rect (s, nr) | |||
| 1866 | #endif | 1879 | #endif |
| 1867 | } | 1880 | } |
| 1868 | 1881 | ||
| 1882 | |||
| 1883 | /* EXPORT: | ||
| 1884 | Return the position and height of the phys cursor in window W. | ||
| 1885 | Set w->phys_cursor_width to width of phys cursor. | ||
| 1886 | */ | ||
| 1887 | |||
| 1888 | int | ||
| 1889 | get_phys_cursor_geometry (w, row, glyph, heightp) | ||
| 1890 | struct window *w; | ||
| 1891 | struct glyph_row *row; | ||
| 1892 | struct glyph *glyph; | ||
| 1893 | int *heightp; | ||
| 1894 | { | ||
| 1895 | struct frame *f = XFRAME (WINDOW_FRAME (w)); | ||
| 1896 | int x, y, wd, h, h0, y0; | ||
| 1897 | |||
| 1898 | /* Compute the width of the rectangle to draw. If on a stretch | ||
| 1899 | glyph, and `x-stretch-block-cursor' is nil, don't draw a | ||
| 1900 | rectangle as wide as the glyph, but use a canonical character | ||
| 1901 | width instead. */ | ||
| 1902 | wd = glyph->pixel_width - 1; | ||
| 1903 | #ifdef HAVE_NTGUI | ||
| 1904 | wd++; /* Why? */ | ||
| 1905 | #endif | ||
| 1906 | if (glyph->type == STRETCH_GLYPH | ||
| 1907 | && !x_stretch_cursor_p) | ||
| 1908 | wd = min (FRAME_COLUMN_WIDTH (f), wd); | ||
| 1909 | w->phys_cursor_width = wd; | ||
| 1910 | |||
| 1911 | y = w->phys_cursor.y + row->ascent - glyph->ascent; | ||
| 1912 | |||
| 1913 | /* If y is below window bottom, ensure that we still see a cursor. */ | ||
| 1914 | h0 = min (FRAME_LINE_HEIGHT (f), row->visible_height); | ||
| 1915 | |||
| 1916 | h = max (h0, glyph->ascent + glyph->descent); | ||
| 1917 | h0 = min (h0, glyph->ascent + glyph->descent); | ||
| 1918 | |||
| 1919 | y0 = WINDOW_HEADER_LINE_HEIGHT (w); | ||
| 1920 | if (y < y0) | ||
| 1921 | { | ||
| 1922 | h = max (h - (y0 - y) + 1, h0); | ||
| 1923 | y = y0 - 1; | ||
| 1924 | } | ||
| 1925 | else | ||
| 1926 | { | ||
| 1927 | y0 = window_text_bottom_y (w) - h0; | ||
| 1928 | if (y > y0) | ||
| 1929 | { | ||
| 1930 | h += y - y0; | ||
| 1931 | y = y0; | ||
| 1932 | } | ||
| 1933 | } | ||
| 1934 | |||
| 1935 | *heightp = h - 1; | ||
| 1936 | return WINDOW_TO_FRAME_PIXEL_Y (w, y); | ||
| 1937 | } | ||
| 1938 | |||
| 1939 | |||
| 1869 | #endif /* HAVE_WINDOW_SYSTEM */ | 1940 | #endif /* HAVE_WINDOW_SYSTEM */ |
| 1870 | 1941 | ||
| 1871 | 1942 | ||
diff --git a/src/xterm.c b/src/xterm.c index a68725a463c..c54b96a19b7 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* X Communication module for terminals which understand the X protocol. | 1 | /* X Communication module for terminals which understand the X protocol. |
| 2 | Copyright (C) 1989, 93, 94, 95, 96, 97, 98, 1999, 2000,01,02,03,04 | 2 | Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, |
| 3 | Free Software Foundation, Inc. | 3 | 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | This file is part of GNU Emacs. | 5 | This file is part of GNU Emacs. |
| 6 | 6 | ||
| @@ -7157,7 +7157,7 @@ x_clip_to_row (w, row, area, gc) | |||
| 7157 | window_box (w, area, &window_x, &window_y, &window_width, 0); | 7157 | window_box (w, area, &window_x, &window_y, &window_width, 0); |
| 7158 | 7158 | ||
| 7159 | clip_rect.x = window_x; | 7159 | clip_rect.x = window_x; |
| 7160 | clip_rect.y = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); | 7160 | clip_rect.y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, row->y)); |
| 7161 | clip_rect.y = max (clip_rect.y, window_y); | 7161 | clip_rect.y = max (clip_rect.y, window_y); |
| 7162 | clip_rect.width = window_width; | 7162 | clip_rect.width = window_width; |
| 7163 | clip_rect.height = row->visible_height; | 7163 | clip_rect.height = row->visible_height; |
| @@ -7187,29 +7187,10 @@ x_draw_hollow_cursor (w, row) | |||
| 7187 | if (cursor_glyph == NULL) | 7187 | if (cursor_glyph == NULL) |
| 7188 | return; | 7188 | return; |
| 7189 | 7189 | ||
| 7190 | /* Compute the width of the rectangle to draw. If on a stretch | 7190 | /* Compute frame-relative coordinates for phys cursor. */ |
| 7191 | glyph, and `x-stretch-block-cursor' is nil, don't draw a | ||
| 7192 | rectangle as wide as the glyph, but use a canonical character | ||
| 7193 | width instead. */ | ||
| 7194 | wd = cursor_glyph->pixel_width - 1; | ||
| 7195 | if (cursor_glyph->type == STRETCH_GLYPH | ||
| 7196 | && !x_stretch_cursor_p) | ||
| 7197 | wd = min (FRAME_COLUMN_WIDTH (f), wd); | ||
| 7198 | w->phys_cursor_width = wd; | ||
| 7199 | |||
| 7200 | /* Compute frame-relative coordinates from window-relative | ||
| 7201 | coordinates. */ | ||
| 7202 | x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); | 7191 | x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); |
| 7203 | y = WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y); | 7192 | y = get_phys_cursor_geometry (w, row, cursor_glyph, &h); |
| 7204 | 7193 | wd = w->phys_cursor_width; | |
| 7205 | /* Compute the proper height and ascent of the rectangle, based | ||
| 7206 | on the actual glyph. Using the full height of the row looks | ||
| 7207 | bad when there are tall images on that row. */ | ||
| 7208 | h = max (min (FRAME_LINE_HEIGHT (f), row->height), | ||
| 7209 | cursor_glyph->ascent + cursor_glyph->descent); | ||
| 7210 | if (h < row->height) | ||
| 7211 | y += row->ascent /* - w->phys_cursor_ascent */ + cursor_glyph->descent - h; | ||
| 7212 | h--; | ||
| 7213 | 7194 | ||
| 7214 | /* The foreground of cursor_gc is typically the same as the normal | 7195 | /* The foreground of cursor_gc is typically the same as the normal |
| 7215 | background color, which can cause the cursor box to be invisible. */ | 7196 | background color, which can cause the cursor box to be invisible. */ |
| @@ -7773,11 +7754,32 @@ x_connection_closed (dpy, error_message) | |||
| 7773 | error ("%s", error_msg); | 7754 | error ("%s", error_msg); |
| 7774 | } | 7755 | } |
| 7775 | 7756 | ||
| 7757 | /* We specifically use it before defining it, so that gcc doesn't inline it, | ||
| 7758 | otherwise gdb doesn't know how to properly put a breakpoint on it. */ | ||
| 7759 | static void x_error_quitter (Display *display, XErrorEvent *error); | ||
| 7760 | |||
| 7761 | /* This is the first-level handler for X protocol errors. | ||
| 7762 | It calls x_error_quitter or x_error_catcher. */ | ||
| 7763 | |||
| 7764 | static int | ||
| 7765 | x_error_handler (display, error) | ||
| 7766 | Display *display; | ||
| 7767 | XErrorEvent *error; | ||
| 7768 | { | ||
| 7769 | if (! NILP (x_error_message_string)) | ||
| 7770 | x_error_catcher (display, error); | ||
| 7771 | else | ||
| 7772 | x_error_quitter (display, error); | ||
| 7773 | return 0; | ||
| 7774 | } | ||
| 7776 | 7775 | ||
| 7777 | /* This is the usual handler for X protocol errors. | 7776 | /* This is the usual handler for X protocol errors. |
| 7778 | It kills all frames on the display that we got the error for. | 7777 | It kills all frames on the display that we got the error for. |
| 7779 | If that was the only one, it prints an error message and kills Emacs. */ | 7778 | If that was the only one, it prints an error message and kills Emacs. */ |
| 7780 | 7779 | ||
| 7780 | /* It is after x_error_handler so that it won't get inlined in | ||
| 7781 | x_error_handler. */ | ||
| 7782 | |||
| 7781 | static void | 7783 | static void |
| 7782 | x_error_quitter (display, error) | 7784 | x_error_quitter (display, error) |
| 7783 | Display *display; | 7785 | Display *display; |
| @@ -7795,21 +7797,6 @@ x_error_quitter (display, error) | |||
| 7795 | } | 7797 | } |
| 7796 | 7798 | ||
| 7797 | 7799 | ||
| 7798 | /* This is the first-level handler for X protocol errors. | ||
| 7799 | It calls x_error_quitter or x_error_catcher. */ | ||
| 7800 | |||
| 7801 | static int | ||
| 7802 | x_error_handler (display, error) | ||
| 7803 | Display *display; | ||
| 7804 | XErrorEvent *error; | ||
| 7805 | { | ||
| 7806 | if (! NILP (x_error_message_string)) | ||
| 7807 | x_error_catcher (display, error); | ||
| 7808 | else | ||
| 7809 | x_error_quitter (display, error); | ||
| 7810 | return 0; | ||
| 7811 | } | ||
| 7812 | |||
| 7813 | /* This is the handler for X IO errors, always. | 7800 | /* This is the handler for X IO errors, always. |
| 7814 | It kills all frames on the display that we lost touch with. | 7801 | It kills all frames on the display that we lost touch with. |
| 7815 | If that was the only one, it prints an error message and kills Emacs. */ | 7802 | If that was the only one, it prints an error message and kills Emacs. */ |