aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKaroly Lorentey2004-10-19 17:00:02 +0000
committerKaroly Lorentey2004-10-19 17:00:02 +0000
commit90b404757b24ea0c88d6ec3ed9c1ccce07bbd19f (patch)
treeb5cb05f7c5d0c27537362072badf76355d363319 /src
parentec16044407f468aacda9eb031fb7267d5ee0f899 (diff)
parentd4c2c0eff81e7540cbb0a32ef10017285f68e1aa (diff)
downloademacs-90b404757b24ea0c88d6ec3ed9c1ccce07bbd19f.tar.gz
emacs-90b404757b24ea0c88d6ec3ed9c1ccce07bbd19f.zip
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-616 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-617 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-618 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-619 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-620 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-621 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-622 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-623 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-624 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-625 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-51 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-52 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-53 Merge from emacs--cvs-trunk--0 git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-261
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog53
-rw-r--r--src/doc.c16
-rw-r--r--src/fontset.c29
-rw-r--r--src/gtkutil.c9
-rw-r--r--src/lisp.h1
-rw-r--r--src/m/ia64.h2
-rw-r--r--src/search.c21
-rw-r--r--src/w32fns.c12
-rw-r--r--src/w32term.c12
-rw-r--r--src/window.c11
-rw-r--r--src/xdisp.c29
-rw-r--r--src/xterm.h5
12 files changed, 130 insertions, 70 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 9fedb52f42c..7b22f043009 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,7 +1,58 @@
12004-10-18 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * gtkutil.c (xg_update_scrollbar_pos): Change XClearWindow to
4 gdk_window_clear and move gdk_window_process_all_updates after
5 clear so events are sent to the X server in correct order.
6
72004-10-18 Kenichi Handa <handa@m17n.org>
8
9 * fontset.c (fs_load_font): Use fast_string_match_ignore_case for
10 comparing font names.
11 (fs_query_fontset): Use fast_string_match for comparing fontset
12 names.
13 (list_fontsets): Likewise.
14
15 * search.c (fast_string_match_ignore_case): New function.
16
17 * lisp.h (fast_string_match_ignore_case): Extern it.
18
192004-10-17 Kim F. Storm <storm@cua.dk>
20
21 * xdisp.c (overlay_arrow_at_row): Return overlay string rather
22 than bitmap if there is not left fringe.
23 (get_overlay_arrow_glyph_row): Also used on windows system.
24 (display_line): Display overlay string if no left fringe.
25
262004-10-16 Jason Rumney <jasonr@gnu.org>
27
28 * w32fns.c (w32_font_match): Encode font name being matched.
29
302004-10-16 Richard M. Stallman <rms@gnu.org>
31
32 * window.c (Fspecial_display_p): Doc fix.
33
342004-10-15 Stefan <monnier@iro.umontreal.ca>
35
36 * doc.c (Fsubstitute_command_keys): Fix remap-handling.
37 Don't ignore menus, because where-is-internal already does it for us.
38
392004-10-15 Kim F. Storm <storm@cua.dk>
40
41 * xdisp.c (redisplay_window): Only update fringes and vertical
42 border on window frames.
43
442004-10-14 Andreas Schwab <schwab@suse.de>
45
46 * m/ia64.h (DATA_SEG_BITS): Don't define.
47
12004-10-14 Kim F. Storm <storm@cua.dk> 482004-10-14 Kim F. Storm <storm@cua.dk>
2 49
3 * xterm.h: Include Xutil.h after keysym.h to work around bug 50 * xterm.h: Include Xutil.h after keysym.h to work around bug
4 (incorrectly recognising AltGr key) in some X versions. 51 in some X versions.
52
532004-10-13 Stefan Monnier <monnier@iro.umontreal.ca>
54
55 * fns.c (map_char_table): Add missing gcpros.
5 56
62004-10-13 Stefan Monnier <monnier@iro.umontreal.ca> 572004-10-13 Stefan Monnier <monnier@iro.umontreal.ca>
7 58
diff --git a/src/doc.c b/src/doc.c
index e6914d24038..82df9134f61 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -774,28 +774,18 @@ thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ int
774 774
775 /* Save STRP in IDX. */ 775 /* Save STRP in IDX. */
776 idx = strp - SDATA (string); 776 idx = strp - SDATA (string);
777 tem = Fintern (make_string (start, length_byte), Qnil); 777 name = Fintern (make_string (start, length_byte), Qnil);
778 778
779 /* Ignore remappings unless there are no ordinary bindings. */ 779 /* Ignore remappings unless there are no ordinary bindings. */
780 tem = Fwhere_is_internal (tem, keymap, Qt, Qnil, Qt); 780 tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qt);
781 if (NILP (tem)) 781 if (NILP (tem))
782 tem = Fwhere_is_internal (tem, keymap, Qt, Qnil, Qnil); 782 tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qnil);
783 783
784 /* Note the Fwhere_is_internal can GC, so we have to take 784 /* Note the Fwhere_is_internal can GC, so we have to take
785 relocation of string contents into account. */ 785 relocation of string contents into account. */
786 strp = SDATA (string) + idx; 786 strp = SDATA (string) + idx;
787 start = SDATA (string) + start_idx; 787 start = SDATA (string) + start_idx;
788 788
789 /* Disregard menu bar bindings; it is positively annoying to
790 mention them when there's no menu bar, and it isn't terribly
791 useful even when there is a menu bar. */
792 if (!NILP (tem))
793 {
794 firstkey = Faref (tem, make_number (0));
795 if (EQ (firstkey, Qmenu_bar))
796 tem = Qnil;
797 }
798
799 if (NILP (tem)) /* but not on any keys */ 789 if (NILP (tem)) /* but not on any keys */
800 { 790 {
801 int offset = bufp - buf; 791 int offset = bufp - buf;
diff --git a/src/fontset.c b/src/fontset.c
index e99cc0ff6a3..7fbaee3c216 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -655,7 +655,7 @@ fs_load_font (f, c, fontname, id, face)
655 struct face *face; 655 struct face *face;
656{ 656{
657 Lisp_Object fontset; 657 Lisp_Object fontset;
658 Lisp_Object list, elt; 658 Lisp_Object list, elt, fullname;
659 int size = 0; 659 int size = 0;
660 struct font_info *fontp; 660 struct font_info *fontp;
661 int charset = CHAR_CHARSET (c); 661 int charset = CHAR_CHARSET (c);
@@ -701,10 +701,11 @@ fs_load_font (f, c, fontname, id, face)
701 font_info structure that are not set by (*load_font_func). */ 701 font_info structure that are not set by (*load_font_func). */
702 fontp->charset = charset; 702 fontp->charset = charset;
703 703
704 fullname = build_string (fontp->full_name);
704 fontp->vertical_centering 705 fontp->vertical_centering
705 = (STRINGP (Vvertical_centering_font_regexp) 706 = (STRINGP (Vvertical_centering_font_regexp)
706 && (fast_c_string_match_ignore_case 707 && (fast_string_match_ignore_case
707 (Vvertical_centering_font_regexp, fontp->full_name) >= 0)); 708 (Vvertical_centering_font_regexp, fullname) >= 0));
708 709
709 if (fontp->encoding[1] != FONT_ENCODING_NOT_DECIDED) 710 if (fontp->encoding[1] != FONT_ENCODING_NOT_DECIDED)
710 { 711 {
@@ -721,7 +722,6 @@ fs_load_font (f, c, fontname, id, face)
721 /* The font itself doesn't have information about encoding. */ 722 /* The font itself doesn't have information about encoding. */
722 int i; 723 int i;
723 724
724 fontname = fontp->full_name;
725 /* By default, encoding of ASCII chars is 0 (i.e. 0x00..0x7F), 725 /* By default, encoding of ASCII chars is 0 (i.e. 0x00..0x7F),
726 others is 1 (i.e. 0x80..0xFF). */ 726 others is 1 (i.e. 0x80..0xFF). */
727 fontp->encoding[0] = 0; 727 fontp->encoding[0] = 0;
@@ -733,8 +733,7 @@ fs_load_font (f, c, fontname, id, face)
733 elt = XCAR (list); 733 elt = XCAR (list);
734 if (CONSP (elt) 734 if (CONSP (elt)
735 && STRINGP (XCAR (elt)) && CONSP (XCDR (elt)) 735 && STRINGP (XCAR (elt)) && CONSP (XCDR (elt))
736 && (fast_c_string_match_ignore_case (XCAR (elt), fontname) 736 && (fast_string_match_ignore_case (XCAR (elt), fullname) >= 0))
737 >= 0))
738 { 737 {
739 Lisp_Object tmp; 738 Lisp_Object tmp;
740 739
@@ -848,18 +847,17 @@ fs_query_fontset (name, regexpp)
848 847
849 for (i = 0; i < ASIZE (Vfontset_table); i++) 848 for (i = 0; i < ASIZE (Vfontset_table); i++)
850 { 849 {
851 Lisp_Object fontset; 850 Lisp_Object fontset, this_name;
852 const unsigned char *this_name;
853 851
854 fontset = FONTSET_FROM_ID (i); 852 fontset = FONTSET_FROM_ID (i);
855 if (NILP (fontset) 853 if (NILP (fontset)
856 || !BASE_FONTSET_P (fontset)) 854 || !BASE_FONTSET_P (fontset))
857 continue; 855 continue;
858 856
859 this_name = SDATA (FONTSET_NAME (fontset)); 857 this_name = FONTSET_NAME (fontset);
860 if (regexpp 858 if (regexpp
861 ? fast_c_string_match_ignore_case (name, this_name) >= 0 859 ? fast_string_match (name, this_name) >= 0
862 : !strcmp (SDATA (name), this_name)) 860 : !strcmp (SDATA (name), SDATA (this_name)))
863 return i; 861 return i;
864 } 862 }
865 return -1; 863 return -1;
@@ -913,19 +911,18 @@ list_fontsets (f, pattern, size)
913 911
914 for (id = 0; id < ASIZE (Vfontset_table); id++) 912 for (id = 0; id < ASIZE (Vfontset_table); id++)
915 { 913 {
916 Lisp_Object fontset; 914 Lisp_Object fontset, name;
917 const unsigned char *name;
918 915
919 fontset = FONTSET_FROM_ID (id); 916 fontset = FONTSET_FROM_ID (id);
920 if (NILP (fontset) 917 if (NILP (fontset)
921 || !BASE_FONTSET_P (fontset) 918 || !BASE_FONTSET_P (fontset)
922 || !EQ (frame, FONTSET_FRAME (fontset))) 919 || !EQ (frame, FONTSET_FRAME (fontset)))
923 continue; 920 continue;
924 name = SDATA (FONTSET_NAME (fontset)); 921 name = FONTSET_NAME (fontset);
925 922
926 if (!NILP (regexp) 923 if (!NILP (regexp)
927 ? (fast_c_string_match_ignore_case (regexp, name) < 0) 924 ? (fast_string_match (regexp, name) < 0)
928 : strcmp (SDATA (pattern), name)) 925 : strcmp (SDATA (pattern), SDATA (name)))
929 continue; 926 continue;
930 927
931 if (size) 928 if (size)
diff --git a/src/gtkutil.c b/src/gtkutil.c
index fabdae74dc6..4d166a4d01e 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2888,9 +2888,6 @@ xg_update_scrollbar_pos (f, scrollbar_id, top, left, width, height,
2888 gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top); 2888 gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top);
2889 gtk_widget_set_size_request (wscroll, width, height); 2889 gtk_widget_set_size_request (wscroll, width, height);
2890 2890
2891 /* Must force out update so changed scroll bars gets redrawn. */
2892 gdk_window_process_all_updates ();
2893
2894 /* Scroll bars in GTK has a fixed width, so if we say width 16, it 2891 /* Scroll bars in GTK has a fixed width, so if we say width 16, it
2895 will only be its fixed width (14 is default) anyway, the rest is 2892 will only be its fixed width (14 is default) anyway, the rest is
2896 blank. We are drawing the mode line across scroll bars when 2893 blank. We are drawing the mode line across scroll bars when
@@ -2917,9 +2914,11 @@ xg_update_scrollbar_pos (f, scrollbar_id, top, left, width, height,
2917 scroll bar so that there is some space (typically 1 pixel) between 2914 scroll bar so that there is some space (typically 1 pixel) between
2918 the scroll bar and the edge of the window and between the scroll 2915 the scroll bar and the edge of the window and between the scroll
2919 bar and the fringe. */ 2916 bar and the fringe. */
2917 gdk_window_clear (wscroll->window);
2920 2918
2921 XClearWindow (FRAME_X_DISPLAY (f), GTK_WIDGET_TO_X_WIN (wscroll)); 2919 /* Must force out update so changed scroll bars gets redrawn. */
2922 2920 gdk_window_process_all_updates ();
2921
2923 SET_FRAME_GARBAGED (f); 2922 SET_FRAME_GARBAGED (f);
2924 cancel_mouse_face (f); 2923 cancel_mouse_face (f);
2925 } 2924 }
diff --git a/src/lisp.h b/src/lisp.h
index 133c5c07c56..ce0fdf96e43 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2792,6 +2792,7 @@ EXFUN (Fmatch_end, 1);
2792EXFUN (Flooking_at, 1); 2792EXFUN (Flooking_at, 1);
2793extern int fast_string_match P_ ((Lisp_Object, Lisp_Object)); 2793extern int fast_string_match P_ ((Lisp_Object, Lisp_Object));
2794extern int fast_c_string_match_ignore_case P_ ((Lisp_Object, const char *)); 2794extern int fast_c_string_match_ignore_case P_ ((Lisp_Object, const char *));
2795extern int fast_string_match_ignore_case P_ ((Lisp_Object, Lisp_Object));
2795extern int scan_buffer P_ ((int, int, int, int, int *, int)); 2796extern int scan_buffer P_ ((int, int, int, int, int *, int));
2796extern int scan_newline P_ ((int, int, int, int, int, int)); 2797extern int scan_newline P_ ((int, int, int, int, int, int));
2797extern int find_next_newline P_ ((int, int)); 2798extern int find_next_newline P_ ((int, int));
diff --git a/src/m/ia64.h b/src/m/ia64.h
index 7114382d513..947bb9d4562 100644
--- a/src/m/ia64.h
+++ b/src/m/ia64.h
@@ -133,8 +133,6 @@ extern void r_alloc_free ();
133 133
134#endif /* not NOT_C_CODE */ 134#endif /* not NOT_C_CODE */
135 135
136#define DATA_SEG_BITS 0x6000000000000000
137
138#define HAVE_TEXT_START 136#define HAVE_TEXT_START
139 137
140/* arch-tag: 9b8e9fb2-2e49-4c22-b68f-11a488e77c66 138/* arch-tag: 9b8e9fb2-2e49-4c22-b68f-11a488e77c66
diff --git a/src/search.c b/src/search.c
index 0375f353dd2..f7bee1b8683 100644
--- a/src/search.c
+++ b/src/search.c
@@ -493,6 +493,27 @@ fast_c_string_match_ignore_case (regexp, string)
493 immediate_quit = 0; 493 immediate_quit = 0;
494 return val; 494 return val;
495} 495}
496
497/* Like fast_string_match but ignore case. */
498
499int
500fast_string_match_ignore_case (regexp, string)
501 Lisp_Object regexp, string;
502{
503 int val;
504 struct re_pattern_buffer *bufp;
505
506 bufp = compile_pattern (regexp, 0, Vascii_downcase_table,
507 0, STRING_MULTIBYTE (string));
508 immediate_quit = 1;
509 re_match_object = string;
510
511 val = re_search (bufp, (char *) SDATA (string),
512 SBYTES (string), 0,
513 SBYTES (string), 0);
514 immediate_quit = 0;
515 return val;
516}
496 517
497/* The newline cache: remembering which sections of text have no newlines. */ 518/* The newline cache: remembering which sections of text have no newlines. */
498 519
diff --git a/src/w32fns.c b/src/w32fns.c
index 5cfc4adb0af..1e52155ab3b 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -5370,7 +5370,7 @@ x_to_w32_font (lpxstr, lplogfont)
5370 setup_coding_system 5370 setup_coding_system
5371 (Fcheck_coding_system (Vlocale_coding_system), &coding); 5371 (Fcheck_coding_system (Vlocale_coding_system), &coding);
5372 coding.src_multibyte = 1; 5372 coding.src_multibyte = 1;
5373 coding.dst_multibyte = 1; 5373 coding.dst_multibyte = 0;
5374 /* Need to set COMPOSITION_DISABLED, otherwise Emacs crashes in 5374 /* Need to set COMPOSITION_DISABLED, otherwise Emacs crashes in
5375 encode_coding_iso2022 trying to dereference a null pointer. */ 5375 encode_coding_iso2022 trying to dereference a null pointer. */
5376 coding.composing = COMPOSITION_DISABLED; 5376 coding.composing = COMPOSITION_DISABLED;
@@ -5607,12 +5607,14 @@ w32_font_match (fontname, pattern)
5607 char * fontname; 5607 char * fontname;
5608 char * pattern; 5608 char * pattern;
5609{ 5609{
5610 char *regex = alloca (strlen (pattern) * 2 + 3); 5610 char *font_name_copy;
5611 char *font_name_copy = alloca (strlen (fontname) + 1);
5612 char *ptr; 5611 char *ptr;
5612 Lisp_Object encoded_font_name;
5613 char *regex = alloca (strlen (pattern) * 2 + 3);
5613 5614
5614 /* Copy fontname so we can modify it during comparison. */ 5615 /* Convert fontname to unibyte for match. */
5615 strcpy (font_name_copy, fontname); 5616 encoded_font_name = string_make_unibyte (build_string (fontname));
5617 font_name_copy = SDATA (encoded_font_name);
5616 5618
5617 ptr = regex; 5619 ptr = regex;
5618 *ptr++ = '^'; 5620 *ptr++ = '^';
diff --git a/src/w32term.c b/src/w32term.c
index 3d50e93b761..9238b7959d5 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -1209,7 +1209,6 @@ w32_text_out (s, x, y,chars,nchars)
1209} 1209}
1210 1210
1211 1211
1212
1213static void x_set_glyph_string_clipping P_ ((struct glyph_string *)); 1212static void x_set_glyph_string_clipping P_ ((struct glyph_string *));
1214static void x_set_glyph_string_gc P_ ((struct glyph_string *)); 1213static void x_set_glyph_string_gc P_ ((struct glyph_string *));
1215static void x_draw_glyph_string_background P_ ((struct glyph_string *, 1214static void x_draw_glyph_string_background P_ ((struct glyph_string *,
@@ -2061,7 +2060,6 @@ x_draw_image_foreground (s)
2061} 2060}
2062 2061
2063 2062
2064
2065/* Draw a relief around the image glyph string S. */ 2063/* Draw a relief around the image glyph string S. */
2066 2064
2067static void 2065static void
@@ -2812,14 +2810,6 @@ x_new_focus_frame (dpyinfo, frame)
2812 if (old_focus && old_focus->auto_lower) 2810 if (old_focus && old_focus->auto_lower)
2813 x_lower_frame (old_focus); 2811 x_lower_frame (old_focus);
2814 2812
2815
2816
2817
2818
2819
2820
2821
2822
2823 if (dpyinfo->w32_focus_frame && dpyinfo->w32_focus_frame->auto_raise) 2813 if (dpyinfo->w32_focus_frame && dpyinfo->w32_focus_frame->auto_raise)
2824 pending_autoraise_frame = dpyinfo->w32_focus_frame; 2814 pending_autoraise_frame = dpyinfo->w32_focus_frame;
2825 else 2815 else
@@ -4688,7 +4678,6 @@ w32_read_socket (sd, expected, hold_quit)
4688 if (f) 4678 if (f)
4689 x_new_focus_frame (dpyinfo, f); 4679 x_new_focus_frame (dpyinfo, f);
4690 4680
4691
4692 dpyinfo->grabbed = 0; 4681 dpyinfo->grabbed = 0;
4693 check_visibility = 1; 4682 check_visibility = 1;
4694 break; 4683 break;
@@ -4906,7 +4895,6 @@ w32_read_socket (sd, expected, hold_quit)
4906} 4895}
4907 4896
4908 4897
4909
4910 4898
4911/*********************************************************************** 4899/***********************************************************************
4912 Text Cursor 4900 Text Cursor
diff --git a/src/window.c b/src/window.c
index 22ca145b206..6b244ca5353 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3216,10 +3216,13 @@ display_buffer_1 (window)
3216} 3216}
3217 3217
3218DEFUN ("special-display-p", Fspecial_display_p, Sspecial_display_p, 1, 1, 0, 3218DEFUN ("special-display-p", Fspecial_display_p, Sspecial_display_p, 1, 1, 0,
3219 doc: /* Returns non-nil if a buffer named BUFFER-NAME would be created specially. 3219 doc: /* Returns non-nil if a buffer named BUFFER-NAME gets a special frame.
3220The value is actually t if the frame should be called with default frame 3220If the value is t, a frame would be created for that buffer
3221parameters, and a list of frame parameters if they were specified. 3221using the default frame parameters. If the value is a list,
3222See `special-display-buffer-names', and `special-display-regexps'. */) 3222it is a list of frame parameters that would be used
3223to make a frame for that buffer.
3224The variables `special-display-buffer-names'
3225and `special-display-regexps' control this. */)
3223 (buffer_name) 3226 (buffer_name)
3224 Lisp_Object buffer_name; 3227 Lisp_Object buffer_name;
3225{ 3228{
diff --git a/src/xdisp.c b/src/xdisp.c
index 434128ea487..81a535f6b0e 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -9521,11 +9521,13 @@ update_overlay_arrows (up_to_date)
9521} 9521}
9522 9522
9523 9523
9524/* Return overlay arrow string at row, or nil. */ 9524/* Return overlay arrow string to display at row.
9525 Return t if display as bitmap in left fringe.
9526 Return nil if no overlay arrow. */
9525 9527
9526static Lisp_Object 9528static Lisp_Object
9527overlay_arrow_at_row (f, row, pbitmap) 9529overlay_arrow_at_row (it, row, pbitmap)
9528 struct frame *f; 9530 struct it *it;
9529 struct glyph_row *row; 9531 struct glyph_row *row;
9530 int *pbitmap; 9532 int *pbitmap;
9531{ 9533{
@@ -9548,9 +9550,10 @@ overlay_arrow_at_row (f, row, pbitmap)
9548 && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) 9550 && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val)))
9549 { 9551 {
9550 val = overlay_arrow_string_or_property (var, pbitmap); 9552 val = overlay_arrow_string_or_property (var, pbitmap);
9551 if (FRAME_WINDOW_P (f)) 9553 if (FRAME_WINDOW_P (it->f)
9554 && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0)
9552 return Qt; 9555 return Qt;
9553 else if (STRINGP (val)) 9556 if (STRINGP (val))
9554 return val; 9557 return val;
9555 break; 9558 break;
9556 } 9559 }
@@ -14077,8 +14080,8 @@ usage: (trace-to-stderr STRING &rest OBJECTS) */)
14077 Building Desired Matrix Rows 14080 Building Desired Matrix Rows
14078 ***********************************************************************/ 14081 ***********************************************************************/
14079 14082
14080/* Return a temporary glyph row holding the glyphs of an overlay 14083/* Return a temporary glyph row holding the glyphs of an overlay arrow.
14081 arrow. Only used for non-window-redisplay windows. */ 14084 Used for non-window-redisplay windows, and for windows w/o left fringe. */
14082 14085
14083static struct glyph_row * 14086static struct glyph_row *
14084get_overlay_arrow_glyph_row (w, overlay_arrow_string) 14087get_overlay_arrow_glyph_row (w, overlay_arrow_string)
@@ -14957,11 +14960,11 @@ display_line (it)
14957 better to let it be displayed like cursors under X. */ 14960 better to let it be displayed like cursors under X. */
14958 if (! overlay_arrow_seen 14961 if (! overlay_arrow_seen
14959 && (overlay_arrow_string 14962 && (overlay_arrow_string
14960 = overlay_arrow_at_row (it->f, row, &overlay_arrow_bitmap), 14963 = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap),
14961 !NILP (overlay_arrow_string))) 14964 !NILP (overlay_arrow_string)))
14962 { 14965 {
14963 /* Overlay arrow in window redisplay is a fringe bitmap. */ 14966 /* Overlay arrow in window redisplay is a fringe bitmap. */
14964 if (!FRAME_WINDOW_P (it->f)) 14967 if (STRINGP (overlay_arrow_string))
14965 { 14968 {
14966 struct glyph_row *arrow_row 14969 struct glyph_row *arrow_row
14967 = get_overlay_arrow_glyph_row (it->w, overlay_arrow_string); 14970 = get_overlay_arrow_glyph_row (it->w, overlay_arrow_string);
@@ -14986,10 +14989,12 @@ display_line (it)
14986 row->used[TEXT_AREA] = p2 - row->glyphs[TEXT_AREA]; 14989 row->used[TEXT_AREA] = p2 - row->glyphs[TEXT_AREA];
14987 } 14990 }
14988 } 14991 }
14989 14992 else
14993 {
14994 it->w->overlay_arrow_bitmap = overlay_arrow_bitmap;
14995 row->overlay_arrow_p = 1;
14996 }
14990 overlay_arrow_seen = 1; 14997 overlay_arrow_seen = 1;
14991 it->w->overlay_arrow_bitmap = overlay_arrow_bitmap;
14992 row->overlay_arrow_p = 1;
14993 } 14998 }
14994 14999
14995 /* Compute pixel dimensions of this line. */ 15000 /* Compute pixel dimensions of this line. */
diff --git a/src/xterm.h b/src/xterm.h
index 53f0081b215..bb1fe9ddc4c 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -21,8 +21,13 @@ Boston, MA 02111-1307, USA. */
21 21
22#include <X11/Xlib.h> 22#include <X11/Xlib.h>
23#include <X11/cursorfont.h> 23#include <X11/cursorfont.h>
24
25/* Include Xutil.h after keysym.h to work around a bug that prevents
26 correct recognition of AltGr key in some X versions. */
27
24#include <X11/keysym.h> 28#include <X11/keysym.h>
25#include <X11/Xutil.h> 29#include <X11/Xutil.h>
30
26#include <X11/Xatom.h> 31#include <X11/Xatom.h>
27#include <X11/Xresource.h> 32#include <X11/Xresource.h>
28 33