diff options
| author | Karoly Lorentey | 2004-07-22 22:01:29 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-07-22 22:01:29 +0000 |
| commit | 407e382d35ede779a23b974d7ac40a7d3d0fa5ff (patch) | |
| tree | 4a9e97dd58011b0ce2d6223626554765860fd6db /src | |
| parent | 31d7e9bc5a474c2da8c40f4812ea3e09cd5fb82c (diff) | |
| parent | bb6a9650da7971581f2ddf625c172b58a6806e7a (diff) | |
| download | emacs-407e382d35ede779a23b974d7ac40a7d3d0fa5ff.tar.gz emacs-407e382d35ede779a23b974d7ac40a7d3d0fa5ff.zip | |
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-461
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-462
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-463
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-220
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 73 | ||||
| -rw-r--r-- | src/atimer.c | 6 | ||||
| -rw-r--r-- | src/dispnew.c | 10 | ||||
| -rw-r--r-- | src/eval.c | 3 | ||||
| -rw-r--r-- | src/keyboard.c | 2 | ||||
| -rw-r--r-- | src/mac.c | 145 | ||||
| -rw-r--r-- | src/macterm.c | 4 | ||||
| -rw-r--r-- | src/process.c | 7 | ||||
| -rw-r--r-- | src/s/gnu-linux.h | 2 | ||||
| -rw-r--r-- | src/sysdep.c | 4 | ||||
| -rw-r--r-- | src/w32fns.c | 4 | ||||
| -rw-r--r-- | src/widget.c | 1 | ||||
| -rw-r--r-- | src/window.c | 54 | ||||
| -rw-r--r-- | src/window.h | 5 | ||||
| -rw-r--r-- | src/xdisp.c | 32 |
15 files changed, 242 insertions, 110 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 9765ec9403c..e51cdf554ce 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,76 @@ | |||
| 1 | 2004-07-22 Barry Fishman <barry_fishman@att.net> (tiny change) | ||
| 2 | |||
| 3 | * s/gnu-linux.h: Use GC_MARK_STACK if __amd64__ is defined. | ||
| 4 | |||
| 5 | 2004-07-21 Kim F. Storm <storm@cua.dk> | ||
| 6 | |||
| 7 | * window.h (struct glyph_matrix): New members nrows_scale_factor | ||
| 8 | and ncols_scale_factor. | ||
| 9 | |||
| 10 | * window.c (make_window): Initialize nrows_scale_factor and | ||
| 11 | ncols_scale_factor members. | ||
| 12 | |||
| 13 | * dispnew.c (margin_glyphs_to_reserve): Apply ncols_scale_factor. | ||
| 14 | (allocate_matrices_for_frame_redisplay): Fix left/right margin mix-up. | ||
| 15 | (required_matrix_height): Apply nrows_scale_factor. | ||
| 16 | (required_matrix_width): Apply ncols_scale_factor. | ||
| 17 | |||
| 18 | * xdisp.c (display_line): Increment nrows_scale_factor and set | ||
| 19 | fonts_changed_p if past last allocated row. | ||
| 20 | (append_glyph, append_composite_glyph, produce_image_glyph) | ||
| 21 | (append_stretch_glyph): Increment ncols_scale_factor and set | ||
| 22 | fonts_changed_p if current area is full. | ||
| 23 | |||
| 24 | 2004-07-21 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 25 | |||
| 26 | * widget.c (EmacsFrameDestroy): Don't abort if normal_gc is 0. | ||
| 27 | |||
| 28 | 2004-07-19 Luc Teirlinck <teirllm@auburn.edu> | ||
| 29 | |||
| 30 | * window.c (Fpos_visible_in_window_p, Fset_window_hscroll) | ||
| 31 | (Fwindow_inside_pixel_edges, Fwindow_end, Fset_window_point) | ||
| 32 | (Fset_window_start, Fscroll_up, Fscroll_down) | ||
| 33 | (Fother_window_for_scrolling, Fscroll_other_window) | ||
| 34 | (Fsave_window_excursion, Fset_window_vscroll) | ||
| 35 | (syms_of_window) <window-size-fixed>: Doc fixes. | ||
| 36 | |||
| 37 | 2004-07-19 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change) | ||
| 38 | |||
| 39 | * w32fns.c (Fx_file_dialog): Use ENCODE_FILE instead of | ||
| 40 | ENCODE_SYSTEM for filenames. | ||
| 41 | |||
| 42 | 2004-07-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 43 | |||
| 44 | * mac.c (sys_select): Block input around call to | ||
| 45 | ReceiveNextEvent to prevent breakage. Correctly handle | ||
| 46 | blocking on event queue only by calling ReceiveNextEvent | ||
| 47 | instead of select (since GUI events aren't on an fd). | ||
| 48 | (sys_read): Remove function | ||
| 49 | * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON | ||
| 50 | |||
| 51 | 2004-07-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 52 | |||
| 53 | * mac.c (sys_select): Redo sys_select to use alarm-based | ||
| 54 | polling instead of 1 sec timeouts (like solaris). | ||
| 55 | |||
| 56 | * macterm.c (x_make_frame_visible): Comment in polling on | ||
| 57 | frame creation. | ||
| 58 | |||
| 59 | * keyboard.c: Undef SIGIO on Carbon | ||
| 60 | |||
| 61 | * atimer.c (alarm_signal_handler): Call alarm handlers after | ||
| 62 | scheduling. | ||
| 63 | |||
| 64 | * eval.c (Feval): Remove quit_char test | ||
| 65 | |||
| 66 | * process.c (wait_reading_process_input): Remove clearing | ||
| 67 | stdin for select call on process input. | ||
| 68 | |||
| 69 | 2004-07-18 Luc Teirlinck <teirllm@auburn.edu> | ||
| 70 | |||
| 71 | * xdisp.c (syms_of_xdisp) <window-scroll-functions>: Correct | ||
| 72 | capitalization error in docstring. | ||
| 73 | |||
| 1 | 2004-07-17 Juanma Barranquero <lektu@terra.es> | 74 | 2004-07-17 Juanma Barranquero <lektu@terra.es> |
| 2 | 75 | ||
| 3 | * keyboard.c (not_single_kboard_state): Do nothing unless | 76 | * keyboard.c (not_single_kboard_state): Do nothing unless |
diff --git a/src/atimer.c b/src/atimer.c index 7e78bdad9c0..9ec0238ff28 100644 --- a/src/atimer.c +++ b/src/atimer.c | |||
| @@ -375,7 +375,9 @@ alarm_signal_handler (signo) | |||
| 375 | 375 | ||
| 376 | t = atimers; | 376 | t = atimers; |
| 377 | atimers = atimers->next; | 377 | atimers = atimers->next; |
| 378 | #ifndef MAC_OSX | ||
| 378 | t->fn (t); | 379 | t->fn (t); |
| 380 | #endif | ||
| 379 | 381 | ||
| 380 | if (t->type == ATIMER_CONTINUOUS) | 382 | if (t->type == ATIMER_CONTINUOUS) |
| 381 | { | 383 | { |
| @@ -387,6 +389,10 @@ alarm_signal_handler (signo) | |||
| 387 | t->next = free_atimers; | 389 | t->next = free_atimers; |
| 388 | free_atimers = t; | 390 | free_atimers = t; |
| 389 | } | 391 | } |
| 392 | #ifdef MAC_OSX | ||
| 393 | /* Fix for Ctrl-G. Perhaps this should apply to all platforms. */ | ||
| 394 | t->fn (t); | ||
| 395 | #endif | ||
| 390 | 396 | ||
| 391 | EMACS_GET_TIME (now); | 397 | EMACS_GET_TIME (now); |
| 392 | } | 398 | } |
diff --git a/src/dispnew.c b/src/dispnew.c index b519dfa0752..a89bb0a9bcc 100644 --- a/src/dispnew.c +++ b/src/dispnew.c | |||
| @@ -566,7 +566,7 @@ margin_glyphs_to_reserve (w, total_glyphs, margin) | |||
| 566 | int width = XFASTINT (w->total_cols); | 566 | int width = XFASTINT (w->total_cols); |
| 567 | double d = max (0, XFLOATINT (margin)); | 567 | double d = max (0, XFLOATINT (margin)); |
| 568 | d = min (width / 2 - 1, d); | 568 | d = min (width / 2 - 1, d); |
| 569 | n = (int) ((double) total_glyphs / width * d); | 569 | n = (int) ((double) total_glyphs / width * d) * w->ncols_scale_factor; |
| 570 | } | 570 | } |
| 571 | else | 571 | else |
| 572 | n = 0; | 572 | n = 0; |
| @@ -1900,10 +1900,10 @@ allocate_matrices_for_frame_redisplay (window, x, y, dim_only_p, | |||
| 1900 | || dim.width != w->desired_matrix->matrix_w | 1900 | || dim.width != w->desired_matrix->matrix_w |
| 1901 | || dim.height != w->desired_matrix->matrix_h | 1901 | || dim.height != w->desired_matrix->matrix_h |
| 1902 | || (margin_glyphs_to_reserve (w, dim.width, | 1902 | || (margin_glyphs_to_reserve (w, dim.width, |
| 1903 | w->right_margin_cols) | 1903 | w->left_margin_cols) |
| 1904 | != w->desired_matrix->left_margin_glyphs) | 1904 | != w->desired_matrix->left_margin_glyphs) |
| 1905 | || (margin_glyphs_to_reserve (w, dim.width, | 1905 | || (margin_glyphs_to_reserve (w, dim.width, |
| 1906 | w->left_margin_cols) | 1906 | w->right_margin_cols) |
| 1907 | != w->desired_matrix->right_margin_glyphs)) | 1907 | != w->desired_matrix->right_margin_glyphs)) |
| 1908 | *window_change_flags |= CHANGED_LEAF_MATRIX; | 1908 | *window_change_flags |= CHANGED_LEAF_MATRIX; |
| 1909 | 1909 | ||
| @@ -1971,7 +1971,7 @@ required_matrix_height (w) | |||
| 1971 | int ch_height = FRAME_SMALLEST_FONT_HEIGHT (f); | 1971 | int ch_height = FRAME_SMALLEST_FONT_HEIGHT (f); |
| 1972 | int window_pixel_height = window_box_height (w) + abs (w->vscroll); | 1972 | int window_pixel_height = window_box_height (w) + abs (w->vscroll); |
| 1973 | return (((window_pixel_height + ch_height - 1) | 1973 | return (((window_pixel_height + ch_height - 1) |
| 1974 | / ch_height) | 1974 | / ch_height) * w->nrows_scale_factor |
| 1975 | /* One partially visible line at the top and | 1975 | /* One partially visible line at the top and |
| 1976 | bottom of the window. */ | 1976 | bottom of the window. */ |
| 1977 | + 2 | 1977 | + 2 |
| @@ -1999,7 +1999,7 @@ required_matrix_width (w) | |||
| 1999 | 1999 | ||
| 2000 | /* Compute number of glyphs needed in a glyph row. */ | 2000 | /* Compute number of glyphs needed in a glyph row. */ |
| 2001 | return (((window_pixel_width + ch_width - 1) | 2001 | return (((window_pixel_width + ch_width - 1) |
| 2002 | / ch_width) | 2002 | / ch_width) * w->ncols_scale_factor |
| 2003 | /* 2 partially visible columns in the text area. */ | 2003 | /* 2 partially visible columns in the text area. */ |
| 2004 | + 2 | 2004 | + 2 |
| 2005 | /* One partially visible column at the right | 2005 | /* One partially visible column at the right |
diff --git a/src/eval.c b/src/eval.c index d7cfe959158..f28105ac987 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -2145,9 +2145,6 @@ DEFUN ("eval", Feval, Seval, 1, 1, 0, | |||
| 2145 | val = call_debugger (Fcons (Qexit, Fcons (val, Qnil))); | 2145 | val = call_debugger (Fcons (Qexit, Fcons (val, Qnil))); |
| 2146 | backtrace_list = backtrace.next; | 2146 | backtrace_list = backtrace.next; |
| 2147 | 2147 | ||
| 2148 | #ifdef HAVE_CARBON | ||
| 2149 | mac_check_for_quit_char(); | ||
| 2150 | #endif | ||
| 2151 | return val; | 2148 | return val; |
| 2152 | } | 2149 | } |
| 2153 | 2150 | ||
diff --git a/src/keyboard.c b/src/keyboard.c index 40a545180fe..4d18435e17d 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -595,7 +595,7 @@ int interrupts_deferred; | |||
| 595 | 595 | ||
| 596 | /* We are unable to use interrupts if FIONREAD is not available, | 596 | /* We are unable to use interrupts if FIONREAD is not available, |
| 597 | so flush SIGIO so we won't try. */ | 597 | so flush SIGIO so we won't try. */ |
| 598 | #ifndef FIONREAD | 598 | #if !defined (FIONREAD) || defined(HAVE_CARBON) |
| 599 | #ifdef SIGIO | 599 | #ifdef SIGIO |
| 600 | #undef SIGIO | 600 | #undef SIGIO |
| 601 | #endif | 601 | #endif |
| @@ -2769,6 +2769,8 @@ and t is the same as `SECONDARY'. */) | |||
| 2769 | extern int inhibit_window_system; | 2769 | extern int inhibit_window_system; |
| 2770 | extern int noninteractive; | 2770 | extern int noninteractive; |
| 2771 | 2771 | ||
| 2772 | #include "blockinput.h" | ||
| 2773 | |||
| 2772 | /* When Emacs is started from the Finder, SELECT always immediately | 2774 | /* When Emacs is started from the Finder, SELECT always immediately |
| 2773 | returns as if input is present when file descriptor 0 is polled for | 2775 | returns as if input is present when file descriptor 0 is polled for |
| 2774 | input. Strangely, when Emacs is run as a GUI application from the | 2776 | input. Strangely, when Emacs is run as a GUI application from the |
| @@ -2776,85 +2778,100 @@ extern int noninteractive; | |||
| 2776 | the system call SELECT corrects this discrepancy. */ | 2778 | the system call SELECT corrects this discrepancy. */ |
| 2777 | int | 2779 | int |
| 2778 | sys_select (n, rfds, wfds, efds, timeout) | 2780 | sys_select (n, rfds, wfds, efds, timeout) |
| 2779 | int n; | 2781 | int n; |
| 2780 | SELECT_TYPE *rfds; | 2782 | SELECT_TYPE *rfds; |
| 2781 | SELECT_TYPE *wfds; | 2783 | SELECT_TYPE *wfds; |
| 2782 | SELECT_TYPE *efds; | 2784 | SELECT_TYPE *efds; |
| 2783 | struct timeval *timeout; | 2785 | struct timeval *timeout; |
| 2784 | { | 2786 | { |
| 2785 | if (!inhibit_window_system && rfds && FD_ISSET (0, rfds)) | 2787 | OSErr err; |
| 2786 | return 1; | 2788 | EMACS_TIME end_time, now, remaining_time; |
| 2787 | else if (inhibit_window_system || noninteractive || | 2789 | |
| 2788 | (timeout && (EMACS_SECS(*timeout)==0) && | 2790 | if (inhibit_window_system || noninteractive |
| 2789 | (EMACS_USECS(*timeout)==0))) | 2791 | || rfds == NULL || !FD_ISSET (0, rfds)) |
| 2790 | return select(n, rfds, wfds, efds, timeout); | 2792 | return select (n, rfds, wfds, efds, timeout); |
| 2791 | else | 2793 | |
| 2792 | { | 2794 | if (wfds == NULL && efds == NULL) |
| 2793 | EMACS_TIME end_time, now; | 2795 | { |
| 2794 | 2796 | int i; | |
| 2795 | EMACS_GET_TIME (end_time); | 2797 | |
| 2796 | if (timeout) | 2798 | for (i = 1; i < n; i++) |
| 2797 | EMACS_ADD_TIME (end_time, end_time, *timeout); | 2799 | if (FD_ISSET (i, rfds)) |
| 2798 | 2800 | break; | |
| 2799 | do | 2801 | if (i == n) |
| 2800 | { | 2802 | { |
| 2801 | int r; | 2803 | EventTimeout timeout_sec = |
| 2802 | EMACS_TIME one_second; | 2804 | (timeout |
| 2803 | SELECT_TYPE orfds; | 2805 | ? (EMACS_SECS (*timeout) * kEventDurationSecond |
| 2804 | 2806 | + EMACS_USECS (*timeout) * kEventDurationMicrosecond) | |
| 2805 | FD_ZERO (&orfds); | 2807 | : kEventDurationForever); |
| 2806 | if (rfds) | 2808 | |
| 2809 | BLOCK_INPUT; | ||
| 2810 | err = ReceiveNextEvent (0, NULL, timeout_sec, | ||
| 2811 | kEventLeaveInQueue, NULL); | ||
| 2812 | UNBLOCK_INPUT; | ||
| 2813 | if (err == noErr) | ||
| 2807 | { | 2814 | { |
| 2808 | orfds = *rfds; | 2815 | FD_ZERO (rfds); |
| 2816 | FD_SET (0, rfds); | ||
| 2817 | return 1; | ||
| 2809 | } | 2818 | } |
| 2819 | else | ||
| 2820 | return 0; | ||
| 2821 | } | ||
| 2822 | } | ||
| 2810 | 2823 | ||
| 2811 | EMACS_SET_SECS (one_second, 1); | 2824 | if (timeout) |
| 2812 | EMACS_SET_USECS (one_second, 0); | 2825 | { |
| 2826 | remaining_time = *timeout; | ||
| 2827 | EMACS_GET_TIME (now); | ||
| 2828 | EMACS_ADD_TIME (end_time, now, remaining_time); | ||
| 2829 | } | ||
| 2830 | FD_CLR (0, rfds); | ||
| 2831 | do | ||
| 2832 | { | ||
| 2833 | EMACS_TIME select_timeout; | ||
| 2834 | SELECT_TYPE orfds = *rfds; | ||
| 2835 | int r; | ||
| 2813 | 2836 | ||
| 2814 | if (timeout && EMACS_TIME_LT(*timeout, one_second)) | 2837 | EMACS_SET_SECS_USECS (select_timeout, 0, 20000); |
| 2815 | one_second = *timeout; | ||
| 2816 | 2838 | ||
| 2817 | if ((r = select (n, &orfds, wfds, efds, &one_second)) > 0) | 2839 | if (timeout && EMACS_TIME_LT (remaining_time, select_timeout)) |
| 2840 | select_timeout = remaining_time; | ||
| 2841 | |||
| 2842 | r = select (n, &orfds, wfds, efds, &select_timeout); | ||
| 2843 | BLOCK_INPUT; | ||
| 2844 | err = ReceiveNextEvent (0, NULL, kEventDurationNoWait, | ||
| 2845 | kEventLeaveInQueue, NULL); | ||
| 2846 | UNBLOCK_INPUT; | ||
| 2847 | if (r > 0) | ||
| 2848 | { | ||
| 2849 | *rfds = orfds; | ||
| 2850 | if (err == noErr) | ||
| 2818 | { | 2851 | { |
| 2819 | *rfds = orfds; | 2852 | FD_SET (0, rfds); |
| 2820 | return r; | 2853 | r++; |
| 2821 | } | 2854 | } |
| 2855 | return r; | ||
| 2856 | } | ||
| 2857 | else if (err == noErr) | ||
| 2858 | { | ||
| 2859 | FD_ZERO (rfds); | ||
| 2860 | FD_SET (0, rfds); | ||
| 2861 | return 1; | ||
| 2862 | } | ||
| 2822 | 2863 | ||
| 2823 | mac_check_for_quit_char(); | 2864 | if (timeout) |
| 2824 | 2865 | { | |
| 2825 | EMACS_GET_TIME (now); | 2866 | EMACS_GET_TIME (now); |
| 2826 | EMACS_SUB_TIME (now, end_time, now); | 2867 | EMACS_SUB_TIME (remaining_time, end_time, now); |
| 2827 | } | 2868 | } |
| 2828 | while (!timeout || !EMACS_TIME_NEG_P (now)); | ||
| 2829 | |||
| 2830 | return 0; | ||
| 2831 | } | ||
| 2832 | } | ||
| 2833 | |||
| 2834 | #undef read | ||
| 2835 | int sys_read (fds, buf, nbyte) | ||
| 2836 | int fds; | ||
| 2837 | char *buf; | ||
| 2838 | unsigned int nbyte; | ||
| 2839 | { | ||
| 2840 | SELECT_TYPE rfds; | ||
| 2841 | EMACS_TIME one_second; | ||
| 2842 | int r; | ||
| 2843 | |||
| 2844 | /* Use select to block on IO while still checking for quit_char */ | ||
| 2845 | if (!inhibit_window_system && !noninteractive && | ||
| 2846 | ! (fcntl(fds, F_GETFL, 0) & O_NONBLOCK)) | ||
| 2847 | { | ||
| 2848 | FD_ZERO (&rfds); | ||
| 2849 | FD_SET (fds, &rfds); | ||
| 2850 | if (sys_select (fds+1, &rfds, 0, 0, NULL) < 0) | ||
| 2851 | return -1; | ||
| 2852 | } | 2869 | } |
| 2870 | while (!timeout || EMACS_TIME_LT (now, end_time)); | ||
| 2853 | 2871 | ||
| 2854 | return read (fds, buf, nbyte); | 2872 | return 0; |
| 2855 | } | 2873 | } |
| 2856 | 2874 | ||
| 2857 | |||
| 2858 | /* Set up environment variables so that Emacs can correctly find its | 2875 | /* Set up environment variables so that Emacs can correctly find its |
| 2859 | support files when packaged as an application bundle. Directories | 2876 | support files when packaged as an application bundle. Directories |
| 2860 | placed in /usr/local/share/emacs/<emacs-version>/, /usr/local/bin, | 2877 | placed in /usr/local/share/emacs/<emacs-version>/, /usr/local/bin, |
diff --git a/src/macterm.c b/src/macterm.c index efe3d166d11..eaf7517d71a 100644 --- a/src/macterm.c +++ b/src/macterm.c | |||
| @@ -5321,7 +5321,6 @@ x_make_frame_visible (f) | |||
| 5321 | 5321 | ||
| 5322 | XFlush (FRAME_MAC_DISPLAY (f)); | 5322 | XFlush (FRAME_MAC_DISPLAY (f)); |
| 5323 | 5323 | ||
| 5324 | #if 0 /* MAC_TODO */ | ||
| 5325 | /* Synchronize to ensure Emacs knows the frame is visible | 5324 | /* Synchronize to ensure Emacs knows the frame is visible |
| 5326 | before we do anything else. We do this loop with input not blocked | 5325 | before we do anything else. We do this loop with input not blocked |
| 5327 | so that incoming events are handled. */ | 5326 | so that incoming events are handled. */ |
| @@ -5365,9 +5364,6 @@ x_make_frame_visible (f) | |||
| 5365 | FRAME_SAMPLE_VISIBILITY (f); | 5364 | FRAME_SAMPLE_VISIBILITY (f); |
| 5366 | } | 5365 | } |
| 5367 | } | 5366 | } |
| 5368 | #else | ||
| 5369 | UNBLOCK_INPUT; | ||
| 5370 | #endif /* MAC_TODO */ | ||
| 5371 | } | 5367 | } |
| 5372 | 5368 | ||
| 5373 | /* Change from mapped state to withdrawn state. */ | 5369 | /* Change from mapped state to withdrawn state. */ |
diff --git a/src/process.c b/src/process.c index 71f38afc776..9e77123bee7 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -4190,12 +4190,13 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display) | |||
| 4190 | SELECT_TYPE Atemp, Ctemp; | 4190 | SELECT_TYPE Atemp, Ctemp; |
| 4191 | 4191 | ||
| 4192 | Atemp = input_wait_mask; | 4192 | Atemp = input_wait_mask; |
| 4193 | #ifdef MAC_OSX | 4193 | #if 0 |
| 4194 | /* On Mac OS X, the SELECT system call always says input is | 4194 | /* On Mac OS X 10.0, the SELECT system call always says input is |
| 4195 | present (for reading) at stdin, even when none is. This | 4195 | present (for reading) at stdin, even when none is. This |
| 4196 | causes the call to SELECT below to return 1 and | 4196 | causes the call to SELECT below to return 1 and |
| 4197 | status_notify not to be called. As a result output of | 4197 | status_notify not to be called. As a result output of |
| 4198 | subprocesses are incorrectly discarded. */ | 4198 | subprocesses are incorrectly discarded. |
| 4199 | */ | ||
| 4199 | FD_CLR (0, &Atemp); | 4200 | FD_CLR (0, &Atemp); |
| 4200 | #endif | 4201 | #endif |
| 4201 | Ctemp = connect_wait_mask; | 4202 | Ctemp = connect_wait_mask; |
diff --git a/src/s/gnu-linux.h b/src/s/gnu-linux.h index efdc2bc00ef..033ce49293a 100644 --- a/src/s/gnu-linux.h +++ b/src/s/gnu-linux.h | |||
| @@ -355,7 +355,7 @@ Boston, MA 02111-1307, USA. */ | |||
| 355 | 355 | ||
| 356 | #if defined __i386__ || defined __sparc__ || defined __mc68000__ \ | 356 | #if defined __i386__ || defined __sparc__ || defined __mc68000__ \ |
| 357 | || defined __alpha__ || defined __mips__ || defined __s390__ \ | 357 | || defined __alpha__ || defined __mips__ || defined __s390__ \ |
| 358 | || defined __arm__ || defined __powerpc__ | 358 | || defined __arm__ || defined __powerpc__ || defined __amd64__ |
| 359 | #define GC_SETJMP_WORKS 1 | 359 | #define GC_SETJMP_WORKS 1 |
| 360 | #define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS | 360 | #define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS |
| 361 | #ifdef __mc68000__ | 361 | #ifdef __mc68000__ |
diff --git a/src/sysdep.c b/src/sysdep.c index 20d57b6a6a3..018fdc1fd57 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -72,10 +72,6 @@ static int delete_exited_processes; | |||
| 72 | #endif | 72 | #endif |
| 73 | #endif /* not WINDOWSNT */ | 73 | #endif /* not WINDOWSNT */ |
| 74 | 74 | ||
| 75 | #ifdef HAVE_CARBON | ||
| 76 | #define read sys_read | ||
| 77 | #endif | ||
| 78 | |||
| 79 | /* Does anyone other than VMS need this? */ | 75 | /* Does anyone other than VMS need this? */ |
| 80 | #ifndef fwrite | 76 | #ifndef fwrite |
| 81 | #define sys_fwrite fwrite | 77 | #define sys_fwrite fwrite |
diff --git a/src/w32fns.c b/src/w32fns.c index d5ba6e9b078..0cb3abe91cd 100644 --- a/src/w32fns.c +++ b/src/w32fns.c | |||
| @@ -7735,14 +7735,14 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */) | |||
| 7735 | /* Create the dialog with PROMPT as title, using DIR as initial | 7735 | /* Create the dialog with PROMPT as title, using DIR as initial |
| 7736 | directory and using "*" as pattern. */ | 7736 | directory and using "*" as pattern. */ |
| 7737 | dir = Fexpand_file_name (dir, Qnil); | 7737 | dir = Fexpand_file_name (dir, Qnil); |
| 7738 | strncpy (init_dir, SDATA (ENCODE_SYSTEM (dir)), MAX_PATH); | 7738 | strncpy (init_dir, SDATA (ENCODE_FILE (dir)), MAX_PATH); |
| 7739 | init_dir[MAX_PATH] = '\0'; | 7739 | init_dir[MAX_PATH] = '\0'; |
| 7740 | unixtodos_filename (init_dir); | 7740 | unixtodos_filename (init_dir); |
| 7741 | 7741 | ||
| 7742 | if (STRINGP (default_filename)) | 7742 | if (STRINGP (default_filename)) |
| 7743 | { | 7743 | { |
| 7744 | char *file_name_only; | 7744 | char *file_name_only; |
| 7745 | char *full_path_name = SDATA (ENCODE_SYSTEM (default_filename)); | 7745 | char *full_path_name = SDATA (ENCODE_FILE (default_filename)); |
| 7746 | 7746 | ||
| 7747 | unixtodos_filename (full_path_name); | 7747 | unixtodos_filename (full_path_name); |
| 7748 | 7748 | ||
diff --git a/src/widget.c b/src/widget.c index dbf55a34d9c..57eef4059e6 100644 --- a/src/widget.c +++ b/src/widget.c | |||
| @@ -758,7 +758,6 @@ EmacsFrameDestroy (widget) | |||
| 758 | 758 | ||
| 759 | if (! s) abort (); | 759 | if (! s) abort (); |
| 760 | if (! s->output_data.x) abort (); | 760 | if (! s->output_data.x) abort (); |
| 761 | if (! s->output_data.x->normal_gc) abort (); | ||
| 762 | 761 | ||
| 763 | BLOCK_INPUT; | 762 | BLOCK_INPUT; |
| 764 | x_free_gcs (s); | 763 | x_free_gcs (s); |
diff --git a/src/window.c b/src/window.c index 0e318b039a4..2ab9957153f 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -262,6 +262,7 @@ make_window () | |||
| 262 | bzero (&p->last_cursor, sizeof (p->last_cursor)); | 262 | bzero (&p->last_cursor, sizeof (p->last_cursor)); |
| 263 | bzero (&p->phys_cursor, sizeof (p->phys_cursor)); | 263 | bzero (&p->phys_cursor, sizeof (p->phys_cursor)); |
| 264 | p->desired_matrix = p->current_matrix = 0; | 264 | p->desired_matrix = p->current_matrix = 0; |
| 265 | p->nrows_scale_factor = p->ncols_scale_factor = 1; | ||
| 265 | p->phys_cursor_type = -1; | 266 | p->phys_cursor_type = -1; |
| 266 | p->phys_cursor_width = -1; | 267 | p->phys_cursor_width = -1; |
| 267 | p->must_be_updated_p = 0; | 268 | p->must_be_updated_p = 0; |
| @@ -320,15 +321,17 @@ WINDOW defaults to the selected window. */) | |||
| 320 | 321 | ||
| 321 | DEFUN ("pos-visible-in-window-p", Fpos_visible_in_window_p, | 322 | DEFUN ("pos-visible-in-window-p", Fpos_visible_in_window_p, |
| 322 | Spos_visible_in_window_p, 0, 3, 0, | 323 | Spos_visible_in_window_p, 0, 3, 0, |
| 323 | doc: /* Return t if position POS is currently on the frame in WINDOW. | 324 | doc: /* Return non-nil if position POS is currently on the frame in WINDOW. |
| 324 | Return nil if that position is scrolled vertically out of view. | 325 | Return nil if that position is scrolled vertically out of view. |
| 325 | If a character is only partially visible, nil is returned, unless the | 326 | If a character is only partially visible, nil is returned, unless the |
| 326 | optional argument PARTIALLY is non-nil. | 327 | optional argument PARTIALLY is non-nil. |
| 328 | If POS is only out of view because of horizontal scrolling, return non-nil. | ||
| 327 | POS defaults to point in WINDOW; WINDOW defaults to the selected window. | 329 | POS defaults to point in WINDOW; WINDOW defaults to the selected window. |
| 328 | 330 | ||
| 329 | If POS is visible, return t if PARTIALLY is nil; if PARTIALLY is non-nil, | 331 | If POS is visible, return t if PARTIALLY is nil; if PARTIALLY is non-nil, |
| 330 | return value is a list (X Y PARTIAL) where X and Y are the pixel relative | 332 | return value is a list (X Y FULLY) where X and Y are the pixel coordinates |
| 331 | coordinate */) | 333 | relative to the top left corner of the window, and FULLY is t if the |
| 334 | character after POS is fully visible and nil otherwise. */) | ||
| 332 | (pos, window, partially) | 335 | (pos, window, partially) |
| 333 | Lisp_Object pos, window, partially; | 336 | Lisp_Object pos, window, partially; |
| 334 | { | 337 | { |
| @@ -432,7 +435,7 @@ DEFUN ("window-hscroll", Fwindow_hscroll, Swindow_hscroll, 0, 1, 0, | |||
| 432 | 435 | ||
| 433 | DEFUN ("set-window-hscroll", Fset_window_hscroll, Sset_window_hscroll, 2, 2, 0, | 436 | DEFUN ("set-window-hscroll", Fset_window_hscroll, Sset_window_hscroll, 2, 2, 0, |
| 434 | doc: /* Set number of columns WINDOW is scrolled from left margin to NCOL. | 437 | doc: /* Set number of columns WINDOW is scrolled from left margin to NCOL. |
| 435 | NCOL should be zero or positive. | 438 | Return NCOL. NCOL should be zero or positive. |
| 436 | 439 | ||
| 437 | Note that if `automatic-hscrolling' is non-nil, you cannot scroll the | 440 | Note that if `automatic-hscrolling' is non-nil, you cannot scroll the |
| 438 | window so that the location of point becomes invisible. */) | 441 | window so that the location of point becomes invisible. */) |
| @@ -546,7 +549,7 @@ display margins, fringes, header line, and/or mode line. */) | |||
| 546 | } | 549 | } |
| 547 | 550 | ||
| 548 | DEFUN ("window-inside-pixel-edges", Fwindow_inside_pixel_edges, Swindow_inside_pixel_edges, 0, 1, 0, | 551 | DEFUN ("window-inside-pixel-edges", Fwindow_inside_pixel_edges, Swindow_inside_pixel_edges, 0, 1, 0, |
| 549 | doc: /* Return a list of the edge coordinates of WINDOW. | 552 | doc: /* Return a list of the edge pixel coordinates of WINDOW. |
| 550 | \(LEFT TOP RIGHT BOTTOM), all relative to 0, 0 at top left corner of frame. | 553 | \(LEFT TOP RIGHT BOTTOM), all relative to 0, 0 at top left corner of frame. |
| 551 | RIGHT is one more than the rightmost x position used by text in WINDOW, | 554 | RIGHT is one more than the rightmost x position used by text in WINDOW, |
| 552 | and BOTTOM is one more than the bottommost y position used by text in WINDOW. | 555 | and BOTTOM is one more than the bottommost y position used by text in WINDOW. |
| @@ -988,6 +991,8 @@ DEFUN ("window-end", Fwindow_end, Swindow_end, 0, 2, 0, | |||
| 988 | This is updated by redisplay, when it runs to completion. | 991 | This is updated by redisplay, when it runs to completion. |
| 989 | Simply changing the buffer text or setting `window-start' | 992 | Simply changing the buffer text or setting `window-start' |
| 990 | does not update this value. | 993 | does not update this value. |
| 994 | Return nil if there is no recorded value. \(This can happen if the | ||
| 995 | last redisplay of WINDOW was preempted, and did not finish.) | ||
| 991 | If UPDATE is non-nil, compute the up-to-date position | 996 | If UPDATE is non-nil, compute the up-to-date position |
| 992 | if it isn't already recorded. */) | 997 | if it isn't already recorded. */) |
| 993 | (window, update) | 998 | (window, update) |
| @@ -1053,7 +1058,8 @@ if it isn't already recorded. */) | |||
| 1053 | } | 1058 | } |
| 1054 | 1059 | ||
| 1055 | DEFUN ("set-window-point", Fset_window_point, Sset_window_point, 2, 2, 0, | 1060 | DEFUN ("set-window-point", Fset_window_point, Sset_window_point, 2, 2, 0, |
| 1056 | doc: /* Make point value in WINDOW be at position POS in WINDOW's buffer. */) | 1061 | doc: /* Make point value in WINDOW be at position POS in WINDOW's buffer. |
| 1062 | Return POS. */) | ||
| 1057 | (window, pos) | 1063 | (window, pos) |
| 1058 | Lisp_Object window, pos; | 1064 | Lisp_Object window, pos; |
| 1059 | { | 1065 | { |
| @@ -1076,6 +1082,7 @@ DEFUN ("set-window-point", Fset_window_point, Sset_window_point, 2, 2, 0, | |||
| 1076 | 1082 | ||
| 1077 | DEFUN ("set-window-start", Fset_window_start, Sset_window_start, 2, 3, 0, | 1083 | DEFUN ("set-window-start", Fset_window_start, Sset_window_start, 2, 3, 0, |
| 1078 | doc: /* Make display in WINDOW start at position POS in WINDOW's buffer. | 1084 | doc: /* Make display in WINDOW start at position POS in WINDOW's buffer. |
| 1085 | Return POS. | ||
| 1079 | Optional third arg NOFORCE non-nil inhibits next redisplay | 1086 | Optional third arg NOFORCE non-nil inhibits next redisplay |
| 1080 | from overriding motion of point in order to display at this exact start. */) | 1087 | from overriding motion of point in order to display at this exact start. */) |
| 1081 | (window, pos, noforce) | 1088 | (window, pos, noforce) |
| @@ -4850,7 +4857,8 @@ scroll_command (n, direction) | |||
| 4850 | } | 4857 | } |
| 4851 | 4858 | ||
| 4852 | DEFUN ("scroll-up", Fscroll_up, Sscroll_up, 0, 1, "P", | 4859 | DEFUN ("scroll-up", Fscroll_up, Sscroll_up, 0, 1, "P", |
| 4853 | doc: /* Scroll text of current window upward ARG lines; or near full screen if no ARG. | 4860 | doc: /* Scroll text of current window upward ARG lines. |
| 4861 | If ARG is omitted or nil, scroll upward by a near full screen. | ||
| 4854 | A near full screen is `next-screen-context-lines' less than a full screen. | 4862 | A near full screen is `next-screen-context-lines' less than a full screen. |
| 4855 | Negative ARG means scroll downward. | 4863 | Negative ARG means scroll downward. |
| 4856 | If ARG is the atom `-', scroll downward by nearly full screen. | 4864 | If ARG is the atom `-', scroll downward by nearly full screen. |
| @@ -4863,7 +4871,8 @@ When calling from a program, supply as argument a number, nil, or `-'. */) | |||
| 4863 | } | 4871 | } |
| 4864 | 4872 | ||
| 4865 | DEFUN ("scroll-down", Fscroll_down, Sscroll_down, 0, 1, "P", | 4873 | DEFUN ("scroll-down", Fscroll_down, Sscroll_down, 0, 1, "P", |
| 4866 | doc: /* Scroll text of current window down ARG lines; or near full screen if no ARG. | 4874 | doc: /* Scroll text of current window down ARG lines. |
| 4875 | If ARG is omitted or nil, scroll down by a near full screen. | ||
| 4867 | A near full screen is `next-screen-context-lines' less than a full screen. | 4876 | A near full screen is `next-screen-context-lines' less than a full screen. |
| 4868 | Negative ARG means scroll upward. | 4877 | Negative ARG means scroll upward. |
| 4869 | If ARG is the atom `-', scroll upward by nearly full screen. | 4878 | If ARG is the atom `-', scroll upward by nearly full screen. |
| @@ -4877,10 +4886,11 @@ When calling from a program, supply as argument a number, nil, or `-'. */) | |||
| 4877 | 4886 | ||
| 4878 | DEFUN ("other-window-for-scrolling", Fother_window_for_scrolling, Sother_window_for_scrolling, 0, 0, 0, | 4887 | DEFUN ("other-window-for-scrolling", Fother_window_for_scrolling, Sother_window_for_scrolling, 0, 0, 0, |
| 4879 | doc: /* Return the other window for \"other window scroll\" commands. | 4888 | doc: /* Return the other window for \"other window scroll\" commands. |
| 4880 | If in the minibuffer, `minibuffer-scroll-window' if non-nil | ||
| 4881 | specifies the window. | ||
| 4882 | If `other-window-scroll-buffer' is non-nil, a window | 4889 | If `other-window-scroll-buffer' is non-nil, a window |
| 4883 | showing that buffer is used. */) | 4890 | showing that buffer is used. |
| 4891 | If in the minibuffer, `minibuffer-scroll-window' if non-nil | ||
| 4892 | specifies the window. This takes precedence over | ||
| 4893 | `other-window-scroll-buffer'. */) | ||
| 4884 | () | 4894 | () |
| 4885 | { | 4895 | { |
| 4886 | Lisp_Object window; | 4896 | Lisp_Object window; |
| @@ -4926,10 +4936,11 @@ if the current one is at the bottom. Negative ARG means scroll downward. | |||
| 4926 | If ARG is the atom `-', scroll downward by nearly full screen. | 4936 | If ARG is the atom `-', scroll downward by nearly full screen. |
| 4927 | When calling from a program, supply as argument a number, nil, or `-'. | 4937 | When calling from a program, supply as argument a number, nil, or `-'. |
| 4928 | 4938 | ||
| 4929 | If in the minibuffer, `minibuffer-scroll-window' if non-nil | ||
| 4930 | specifies the window to scroll. | ||
| 4931 | If `other-window-scroll-buffer' is non-nil, scroll the window | 4939 | If `other-window-scroll-buffer' is non-nil, scroll the window |
| 4932 | showing that buffer, popping the buffer up if necessary. */) | 4940 | showing that buffer, popping the buffer up if necessary. |
| 4941 | If in the minibuffer, `minibuffer-scroll-window' if non-nil | ||
| 4942 | specifies the window to scroll. This takes precedence over | ||
| 4943 | `other-window-scroll-buffer'. */) | ||
| 4933 | (arg) | 4944 | (arg) |
| 4934 | Lisp_Object arg; | 4945 | Lisp_Object arg; |
| 4935 | { | 4946 | { |
| @@ -5905,7 +5916,8 @@ redirection (see `redirect-frame-focus'). */) | |||
| 5905 | 5916 | ||
| 5906 | DEFUN ("save-window-excursion", Fsave_window_excursion, Ssave_window_excursion, | 5917 | DEFUN ("save-window-excursion", Fsave_window_excursion, Ssave_window_excursion, |
| 5907 | 0, UNEVALLED, 0, | 5918 | 0, UNEVALLED, 0, |
| 5908 | doc: /* Execute body, preserving window sizes and contents. | 5919 | doc: /* Execute BODY, preserving window sizes and contents. |
| 5920 | Return the value of the last form in BODY. | ||
| 5909 | Restore which buffer appears in which window, where display starts, | 5921 | Restore which buffer appears in which window, where display starts, |
| 5910 | and the value of point and mark for each window. | 5922 | and the value of point and mark for each window. |
| 5911 | Also restore the choice of selected window. | 5923 | Also restore the choice of selected window. |
| @@ -6165,7 +6177,11 @@ DEFUN ("set-window-vscroll", Fset_window_vscroll, Sset_window_vscroll, | |||
| 6165 | doc: /* Set amount by which WINDOW should be scrolled vertically to VSCROLL. | 6177 | doc: /* Set amount by which WINDOW should be scrolled vertically to VSCROLL. |
| 6166 | WINDOW nil means use the selected window. Normally, VSCROLL is a | 6178 | WINDOW nil means use the selected window. Normally, VSCROLL is a |
| 6167 | non-negative multiple of the canonical character height of WINDOW; | 6179 | non-negative multiple of the canonical character height of WINDOW; |
| 6168 | optional third arg PIXELS_P non-nil means that VSCROLL is in pixels. */) | 6180 | optional third arg PIXELS_P non-nil means that VSCROLL is in pixels. |
| 6181 | If PIXELS-P is nil, VSCROLL may have to be rounded so that it | ||
| 6182 | corresponds to an integral number of pixels. The return value is the | ||
| 6183 | result of this rounding. | ||
| 6184 | If PIXELS-P is non-nil, the return value is VSCROLL. */) | ||
| 6169 | (window, vscroll, pixels_p) | 6185 | (window, vscroll, pixels_p) |
| 6170 | Lisp_Object window, vscroll, pixels_p; | 6186 | Lisp_Object window, vscroll, pixels_p; |
| 6171 | { | 6187 | { |
| @@ -6649,9 +6665,11 @@ The selected frame is the one whose configuration has changed. */); | |||
| 6649 | 6665 | ||
| 6650 | DEFVAR_BOOL ("window-size-fixed", &window_size_fixed, | 6666 | DEFVAR_BOOL ("window-size-fixed", &window_size_fixed, |
| 6651 | doc: /* Non-nil in a buffer means windows displaying the buffer are fixed-size. | 6667 | doc: /* Non-nil in a buffer means windows displaying the buffer are fixed-size. |
| 6668 | If the value is`height', then only the window's height is fixed. | ||
| 6669 | If the value is `width', then only the window's width is fixed. | ||
| 6670 | Any other non-nil value fixes both the width and the height. | ||
| 6652 | Emacs won't change the size of any window displaying that buffer, | 6671 | Emacs won't change the size of any window displaying that buffer, |
| 6653 | unless you explicitly change the size, or Emacs has no other choice. | 6672 | unless you explicitly change the size, or Emacs has no other choice. */); |
| 6654 | This variable automatically becomes buffer-local when set. */); | ||
| 6655 | Fmake_variable_buffer_local (Qwindow_size_fixed); | 6673 | Fmake_variable_buffer_local (Qwindow_size_fixed); |
| 6656 | window_size_fixed = 0; | 6674 | window_size_fixed = 0; |
| 6657 | 6675 | ||
diff --git a/src/window.h b/src/window.h index 63a19cc4b0d..8df0b6bb3eb 100644 --- a/src/window.h +++ b/src/window.h | |||
| @@ -236,6 +236,11 @@ struct window | |||
| 236 | struct glyph_matrix *current_matrix; | 236 | struct glyph_matrix *current_matrix; |
| 237 | struct glyph_matrix *desired_matrix; | 237 | struct glyph_matrix *desired_matrix; |
| 238 | 238 | ||
| 239 | /* Scaling factor for the glyph_matrix size calculation in this window. | ||
| 240 | Used if window contains many small images or uses proportional fonts, | ||
| 241 | as the normal may yield a matrix which is too small. */ | ||
| 242 | int nrows_scale_factor, ncols_scale_factor; | ||
| 243 | |||
| 239 | /* Cursor position as of last update that completed without | 244 | /* Cursor position as of last update that completed without |
| 240 | pause. This is the position of last_point. */ | 245 | pause. This is the position of last_point. */ |
| 241 | struct cursor_pos last_cursor; | 246 | struct cursor_pos last_cursor; |
diff --git a/src/xdisp.c b/src/xdisp.c index b04eb7ab7b7..02f020ed57a 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -14461,9 +14461,13 @@ display_line (it) | |||
| 14461 | /* We always start displaying at hpos zero even if hscrolled. */ | 14461 | /* We always start displaying at hpos zero even if hscrolled. */ |
| 14462 | xassert (it->hpos == 0 && it->current_x == 0); | 14462 | xassert (it->hpos == 0 && it->current_x == 0); |
| 14463 | 14463 | ||
| 14464 | /* We must not display in a row that's not a text row. */ | 14464 | if (MATRIX_ROW_VPOS (row, it->w->desired_matrix) |
| 14465 | xassert (MATRIX_ROW_VPOS (row, it->w->desired_matrix) | 14465 | >= it->w->desired_matrix->nrows) |
| 14466 | < it->w->desired_matrix->nrows); | 14466 | { |
| 14467 | it->w->nrows_scale_factor++; | ||
| 14468 | fonts_changed_p = 1; | ||
| 14469 | return 0; | ||
| 14470 | } | ||
| 14467 | 14471 | ||
| 14468 | /* Is IT->w showing the region? */ | 14472 | /* Is IT->w showing the region? */ |
| 14469 | it->w->region_showing = it->region_beg_charpos > 0 ? Qt : Qnil; | 14473 | it->w->region_showing = it->region_beg_charpos > 0 ? Qt : Qnil; |
| @@ -18134,6 +18138,11 @@ append_glyph (it) | |||
| 18134 | glyph->font_type = FONT_TYPE_UNKNOWN; | 18138 | glyph->font_type = FONT_TYPE_UNKNOWN; |
| 18135 | ++it->glyph_row->used[area]; | 18139 | ++it->glyph_row->used[area]; |
| 18136 | } | 18140 | } |
| 18141 | else if (!fonts_changed_p) | ||
| 18142 | { | ||
| 18143 | it->w->ncols_scale_factor++; | ||
| 18144 | fonts_changed_p = 1; | ||
| 18145 | } | ||
| 18137 | } | 18146 | } |
| 18138 | 18147 | ||
| 18139 | /* Store one glyph for the composition IT->cmp_id in IT->glyph_row. | 18148 | /* Store one glyph for the composition IT->cmp_id in IT->glyph_row. |
| @@ -18171,6 +18180,11 @@ append_composite_glyph (it) | |||
| 18171 | glyph->font_type = FONT_TYPE_UNKNOWN; | 18180 | glyph->font_type = FONT_TYPE_UNKNOWN; |
| 18172 | ++it->glyph_row->used[area]; | 18181 | ++it->glyph_row->used[area]; |
| 18173 | } | 18182 | } |
| 18183 | else if (!fonts_changed_p) | ||
| 18184 | { | ||
| 18185 | it->w->ncols_scale_factor++; | ||
| 18186 | fonts_changed_p = 1; | ||
| 18187 | } | ||
| 18174 | } | 18188 | } |
| 18175 | 18189 | ||
| 18176 | 18190 | ||
| @@ -18340,6 +18354,11 @@ produce_image_glyph (it) | |||
| 18340 | glyph->font_type = FONT_TYPE_UNKNOWN; | 18354 | glyph->font_type = FONT_TYPE_UNKNOWN; |
| 18341 | ++it->glyph_row->used[area]; | 18355 | ++it->glyph_row->used[area]; |
| 18342 | } | 18356 | } |
| 18357 | else if (!fonts_changed_p) | ||
| 18358 | { | ||
| 18359 | it->w->ncols_scale_factor++; | ||
| 18360 | fonts_changed_p = 1; | ||
| 18361 | } | ||
| 18343 | } | 18362 | } |
| 18344 | } | 18363 | } |
| 18345 | 18364 | ||
| @@ -18383,6 +18402,11 @@ append_stretch_glyph (it, object, width, height, ascent) | |||
| 18383 | glyph->font_type = FONT_TYPE_UNKNOWN; | 18402 | glyph->font_type = FONT_TYPE_UNKNOWN; |
| 18384 | ++it->glyph_row->used[area]; | 18403 | ++it->glyph_row->used[area]; |
| 18385 | } | 18404 | } |
| 18405 | else if (!fonts_changed_p) | ||
| 18406 | { | ||
| 18407 | it->w->ncols_scale_factor++; | ||
| 18408 | fonts_changed_p = 1; | ||
| 18409 | } | ||
| 18386 | } | 18410 | } |
| 18387 | 18411 | ||
| 18388 | 18412 | ||
| @@ -22178,7 +22202,7 @@ all the functions in the list are called, with the frame as argument. */); | |||
| 22178 | Vwindow_size_change_functions = Qnil; | 22202 | Vwindow_size_change_functions = Qnil; |
| 22179 | 22203 | ||
| 22180 | DEFVAR_LISP ("window-scroll-functions", &Vwindow_scroll_functions, | 22204 | DEFVAR_LISP ("window-scroll-functions", &Vwindow_scroll_functions, |
| 22181 | doc: /* List of Functions to call before redisplaying a window with scrolling. | 22205 | doc: /* List of functions to call before redisplaying a window with scrolling. |
| 22182 | Each function is called with two arguments, the window | 22206 | Each function is called with two arguments, the window |
| 22183 | and its new display-start position. Note that the value of `window-end' | 22207 | and its new display-start position. Note that the value of `window-end' |
| 22184 | is not valid when these functions are called. */); | 22208 | is not valid when these functions are called. */); |