aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKaroly Lorentey2005-04-19 13:33:31 +0000
committerKaroly Lorentey2005-04-19 13:33:31 +0000
commit8d6f9bce72ee94ed6c297b79a181eac3f5beca74 (patch)
tree36cf3b6a5923171e371f9236eab36ad7de742b48 /src
parent774a8da14bb2520b6adad223ab13f0b64f002872 (diff)
parentcd01ded928a8d082b9dbed6e9747c3d31b337b71 (diff)
downloademacs-8d6f9bce72ee94ed6c297b79a181eac3f5beca74.tar.gz
emacs-8d6f9bce72ee94ed6c297b79a181eac3f5beca74.zip
Merged from miles@gnu.org--gnu-2005 (patch 66, 266-268)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-266 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-267 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-268 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-66 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-330
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog53
-rw-r--r--src/dispextern.h8
-rw-r--r--src/dispnew.c6
-rw-r--r--src/fns.c4
-rw-r--r--src/fringe.c16
-rw-r--r--src/lread.c6
-rw-r--r--src/macterm.c6
-rw-r--r--src/window.c1
-rw-r--r--src/window.h3
-rw-r--r--src/xdisp.c52
-rw-r--r--src/xfaces.c5
-rw-r--r--src/xmenu.c10
12 files changed, 110 insertions, 60 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 3483a2c5905..ac7d5fb07f3 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,55 @@
12005-04-18 Kim F. Storm <storm@cua.dk>
2
3 * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap.
4 It replaces the corresponding member from struct window, as a
5 window may now show multiple overlay arrows.
6 Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap.
7
8 * dispnew.c (row_equal_p, update_window_line, scrolling_window):
9 Compare overlay_arrow_bitmap than overlay_arrow_p members.
10
11 * fringe.c (draw_fringe_bitmap): Use overlay_arrow_bitmap from row
12 rather than from window.
13 (update_window_fringes): Compare overlay_arrow_bitmap rather than
14 overlay_arrow_p members.
15 (Ffringe_bitmaps_at_pos): Return fringe overlay_arrow_bitmap name
16 if not default.
17
18 * window.h (struct window): Remove member overlay_arrow_bitmap.
19
20 * window.c (make_window): Don't initialize overlay_arrow_bitmap.
21
22 * xdisp.c (overlay_arrow_string_or_property): Remove PBITMAP arg.
23 Calls changed. Don't check for overlay-arrow-bitmap property here.
24 (overlay_arrow_at_row): Remove PBITMAP arg. Instead, if left
25 fringe is present, return Lisp integer for bitmap (or -1 for default).
26 Fix value of overlay-arrow-bitmap property to be a symbol, use
27 lookup_fringe_bitmap to parse it.
28 (display_line): Change call to overlay_arrow_at_row. Store integer
29 return value as overlay bitmap in row rather than window.
30 Only show overlay arrow if row displays text, or if no other overlay
31 arrow is seen in window (if overlay marker is at point-max).
32
332005-04-18 Thien-Thi Nguyen <ttn@gnu.org>
34
35 * xfaces.c (realize_x_face) [!HAVE_WINDOW_SYSTEM]: Return NULL.
36
372005-04-18 Lute Kamstra <lute@gnu.org>
38
39 * lread.c (Vloads_in_progress): Static.
40 * fns.c (Vloads_in_progress): Remove extern.
41 (load_in_progress): Add extern.
42 (Frequire): Use load_in_progress instead of Vloads_in_progress.
43
442005-04-18 Thien-Thi Nguyen <ttn@gnu.org>
45
46 * xmenu.c (Fx_popup_menu): Initialize error_name to NULL.
47
482005-04-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
49
50 * macterm.c (XTread_socket): Don't beep on keyboard input even if
51 no frame is visible.
52
12005-04-16 Dan Nicolaescu <dann@ics.uci.edu> 532005-04-16 Dan Nicolaescu <dann@ics.uci.edu>
2 54
3 * term.c (struct keys): Add support for shifted keys. 55 * term.c (struct keys): Add support for shifted keys.
@@ -110,7 +162,6 @@
110 into "(any string)". 162 into "(any string)".
111 163
112 * lread.c (Vloads_in_progress): Not static. 164 * lread.c (Vloads_in_progress): Not static.
113
114 * fns.c (Vloads_in_progress): Add extern. 165 * fns.c (Vloads_in_progress): Add extern.
115 (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil. 166 (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil.
116 167
diff --git a/src/dispextern.h b/src/dispextern.h
index fbc816865b4..abcda4fc731 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -726,6 +726,11 @@ struct glyph_row
726 position of the next row. */ 726 position of the next row. */
727 struct display_pos end; 727 struct display_pos end;
728 728
729 /* Non-zero means the overlay arrow bitmap is on this line.
730 -1 means use default overlay arrow bitmap, else
731 it specifies actual fringe bitmap number. */
732 int overlay_arrow_bitmap;
733
729 /* Left fringe bitmap number (enum fringe_bitmap_type). */ 734 /* Left fringe bitmap number (enum fringe_bitmap_type). */
730 unsigned left_user_fringe_bitmap : FRINGE_ID_BITS; 735 unsigned left_user_fringe_bitmap : FRINGE_ID_BITS;
731 736
@@ -764,9 +769,6 @@ struct glyph_row
764 unsigned truncated_on_left_p : 1; 769 unsigned truncated_on_left_p : 1;
765 unsigned truncated_on_right_p : 1; 770 unsigned truncated_on_right_p : 1;
766 771
767 /* 1 means the overlay arrow is on this line. */
768 unsigned overlay_arrow_p : 1;
769
770 /* 1 means that this row displays a continued line, i.e. it has a 772 /* 1 means that this row displays a continued line, i.e. it has a
771 continuation mark at the right side. */ 773 continuation mark at the right side. */
772 unsigned continued_p : 1; 774 unsigned continued_p : 1;
diff --git a/src/dispnew.c b/src/dispnew.c
index f549a8dde91..d7b5590c532 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -1506,7 +1506,7 @@ row_equal_p (w, a, b, mouse_face_p)
1506 || a->left_fringe_face_id != b->left_fringe_face_id 1506 || a->left_fringe_face_id != b->left_fringe_face_id
1507 || a->right_fringe_bitmap != b->right_fringe_bitmap 1507 || a->right_fringe_bitmap != b->right_fringe_bitmap
1508 || a->right_fringe_face_id != b->right_fringe_face_id 1508 || a->right_fringe_face_id != b->right_fringe_face_id
1509 || a->overlay_arrow_p != b->overlay_arrow_p 1509 || a->overlay_arrow_bitmap != b->overlay_arrow_bitmap
1510 || a->exact_window_width_line_p != b->exact_window_width_line_p 1510 || a->exact_window_width_line_p != b->exact_window_width_line_p
1511 || a->overlapped_p != b->overlapped_p 1511 || a->overlapped_p != b->overlapped_p
1512 || (MATRIX_ROW_CONTINUATION_LINE_P (a) 1512 || (MATRIX_ROW_CONTINUATION_LINE_P (a)
@@ -4539,7 +4539,7 @@ update_window_line (w, vpos, mouse_face_overwritten_p)
4539 || desired_row->y != current_row->y 4539 || desired_row->y != current_row->y
4540 || desired_row->visible_height != current_row->visible_height 4540 || desired_row->visible_height != current_row->visible_height
4541 || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p 4541 || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p
4542 || desired_row->overlay_arrow_p != current_row->overlay_arrow_p 4542 || desired_row->overlay_arrow_bitmap != current_row->overlay_arrow_bitmap
4543 || current_row->redraw_fringe_bitmaps_p 4543 || current_row->redraw_fringe_bitmaps_p
4544 || desired_row->mode_line_p != current_row->mode_line_p 4544 || desired_row->mode_line_p != current_row->mode_line_p
4545 || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p 4545 || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p
@@ -5051,7 +5051,7 @@ scrolling_window (w, header_line_p)
5051 || to->right_fringe_bitmap != from->right_fringe_bitmap 5051 || to->right_fringe_bitmap != from->right_fringe_bitmap
5052 || to->left_fringe_face_id != from->left_fringe_face_id 5052 || to->left_fringe_face_id != from->left_fringe_face_id
5053 || to->right_fringe_face_id != from->right_fringe_face_id 5053 || to->right_fringe_face_id != from->right_fringe_face_id
5054 || to->overlay_arrow_p != from->overlay_arrow_p)) 5054 || to->overlay_arrow_bitmap != from->overlay_arrow_bitmap))
5055 from->redraw_fringe_bitmaps_p = 1; 5055 from->redraw_fringe_bitmaps_p = 1;
5056 assign_row (to, from); 5056 assign_row (to, from);
5057 to->enabled_p = 1, from->enabled_p = 0; 5057 to->enabled_p = 1, from->enabled_p = 0;
diff --git a/src/fns.c b/src/fns.c
index e921579f79b..daa9e10c465 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -66,7 +66,7 @@ int use_file_dialog;
66extern int minibuffer_auto_raise; 66extern int minibuffer_auto_raise;
67extern Lisp_Object minibuf_window; 67extern Lisp_Object minibuf_window;
68extern Lisp_Object Vlocale_coding_system; 68extern Lisp_Object Vlocale_coding_system;
69extern Lisp_Object Vloads_in_progress; 69extern int load_in_progress;
70 70
71Lisp_Object Qstring_lessp, Qprovide, Qrequire; 71Lisp_Object Qstring_lessp, Qprovide, Qrequire;
72Lisp_Object Qyes_or_no_p_history; 72Lisp_Object Qyes_or_no_p_history;
@@ -3460,7 +3460,7 @@ The normal messages at start and end of loading FILENAME are suppressed. */)
3460 even if the feature specified is already loaded. 3460 even if the feature specified is already loaded.
3461 But not more than once in any file, 3461 But not more than once in any file,
3462 and not when we aren't loading a file. */ 3462 and not when we aren't loading a file. */
3463 if (! NILP (Vloads_in_progress)) 3463 if (load_in_progress)
3464 { 3464 {
3465 tem = Fcons (Qrequire, feature); 3465 tem = Fcons (Qrequire, feature);
3466 if (NILP (Fmember (tem, Vcurrent_load_list))) 3466 if (NILP (Fmember (tem, Vcurrent_load_list)))
diff --git a/src/fringe.c b/src/fringe.c
index 39479dfed21..19e6e60d114 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -700,11 +700,11 @@ draw_fringe_bitmap (w, row, left_p)
700 700
701 draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP); 701 draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP);
702 702
703 if (left_p && row->overlay_arrow_p) 703 if (left_p && row->overlay_arrow_bitmap != NO_FRINGE_BITMAP)
704 draw_fringe_bitmap_1 (w, row, 1, 1, 704 draw_fringe_bitmap_1 (w, row, 1, 1,
705 (w->overlay_arrow_bitmap 705 (row->overlay_arrow_bitmap < 0
706 ? w->overlay_arrow_bitmap 706 ? OVERLAY_ARROW_BITMAP
707 : OVERLAY_ARROW_BITMAP)); 707 : row->overlay_arrow_bitmap));
708} 708}
709 709
710 710
@@ -960,10 +960,10 @@ update_window_fringes (w, force_p)
960 cur->right_fringe_face_id = right_face_id; 960 cur->right_fringe_face_id = right_face_id;
961 } 961 }
962 962
963 if (row->overlay_arrow_p != cur->overlay_arrow_p) 963 if (row->overlay_arrow_bitmap != cur->overlay_arrow_bitmap)
964 { 964 {
965 redraw_p = row->redraw_fringe_bitmaps_p = cur->redraw_fringe_bitmaps_p = 1; 965 redraw_p = row->redraw_fringe_bitmaps_p = cur->redraw_fringe_bitmaps_p = 1;
966 cur->overlay_arrow_p = row->overlay_arrow_p; 966 cur->overlay_arrow_bitmap = row->overlay_arrow_bitmap;
967 } 967 }
968 968
969 row->left_fringe_bitmap = left; 969 row->left_fringe_bitmap = left;
@@ -1414,7 +1414,9 @@ Return nil if POS is not visible in WINDOW. */)
1414 if (row) 1414 if (row)
1415 return list3 (get_fringe_bitmap_name (row->left_fringe_bitmap), 1415 return list3 (get_fringe_bitmap_name (row->left_fringe_bitmap),
1416 get_fringe_bitmap_name (row->right_fringe_bitmap), 1416 get_fringe_bitmap_name (row->right_fringe_bitmap),
1417 (row->overlay_arrow_p ? Qt : Qnil)); 1417 (row->overlay_arrow_bitmap == 0 ? Qnil
1418 : row->overlay_arrow_bitmap < 0 ? Qt
1419 : get_fringe_bitmap_name (row->overlay_arrow_bitmap)));
1418 else 1420 else
1419 return Qnil; 1421 return Qnil;
1420} 1422}
diff --git a/src/lread.c b/src/lread.c
index d36d45c8c7d..869e95a00e0 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1,6 +1,6 @@
1/* Lisp parsing and input streams. 1/* Lisp parsing and input streams.
2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997, 1998, 2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997, 1998,
3 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. 3 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -90,7 +90,7 @@ Lisp_Object Qinhibit_file_name_operation;
90extern Lisp_Object Qevent_symbol_element_mask; 90extern Lisp_Object Qevent_symbol_element_mask;
91extern Lisp_Object Qfile_exists_p; 91extern Lisp_Object Qfile_exists_p;
92 92
93/* non-zero if inside `load' */ 93/* non-zero iff inside `load' */
94int load_in_progress; 94int load_in_progress;
95 95
96/* Directory in which the sources were found. */ 96/* Directory in which the sources were found. */
@@ -194,7 +194,7 @@ static int new_backquote_flag;
194/* A list of file names for files being loaded in Fload. Used to 194/* A list of file names for files being loaded in Fload. Used to
195 check for recursive loads. */ 195 check for recursive loads. */
196 196
197Lisp_Object Vloads_in_progress; 197static Lisp_Object Vloads_in_progress;
198 198
199/* Non-zero means load dangerous compiled Lisp files. */ 199/* Non-zero means load dangerous compiled Lisp files. */
200 200
diff --git a/src/macterm.c b/src/macterm.c
index 5aab6ec5364..7bef378b590 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -8590,13 +8590,15 @@ XTread_socket (sd, expected, hold_quit)
8590 struct frame *f = mac_focus_frame (dpyinfo); 8590 struct frame *f = mac_focus_frame (dpyinfo);
8591 WindowPtr window_ptr; 8591 WindowPtr window_ptr;
8592 8592
8593 if (!f) 8593#if 0
8594 if (dpyinfo->x_focus_frame == NULL)
8594 { 8595 {
8595 /* Beep if wheel move occurs when all the frames 8596 /* Beep if wheel move occurs when all the frames
8596 are invisible. */ 8597 are invisible. */
8597 SysBeep(1); 8598 SysBeep(1);
8598 break; 8599 break;
8599 } 8600 }
8601#endif
8600 8602
8601 GetEventParameter(eventRef, kEventParamMouseWheelDelta, 8603 GetEventParameter(eventRef, kEventParamMouseWheelDelta,
8602 typeSInt32, NULL, sizeof (SInt32), 8604 typeSInt32, NULL, sizeof (SInt32),
@@ -9011,6 +9013,7 @@ XTread_socket (sd, expected, hold_quit)
9011 break; 9013 break;
9012#endif 9014#endif
9013 9015
9016#if 0
9014 if (dpyinfo->x_focus_frame == NULL) 9017 if (dpyinfo->x_focus_frame == NULL)
9015 { 9018 {
9016 /* Beep if keyboard input occurs when all the frames 9019 /* Beep if keyboard input occurs when all the frames
@@ -9018,6 +9021,7 @@ XTread_socket (sd, expected, hold_quit)
9018 SysBeep (1); 9021 SysBeep (1);
9019 break; 9022 break;
9020 } 9023 }
9024#endif
9021 9025
9022 { 9026 {
9023 static SInt16 last_key_script = -1; 9027 static SInt16 last_key_script = -1;
diff --git a/src/window.c b/src/window.c
index a1b3c879bb5..86c16ff5719 100644
--- a/src/window.c
+++ b/src/window.c
@@ -288,7 +288,6 @@ make_window ()
288 p->fringes_outside_margins = Qnil; 288 p->fringes_outside_margins = Qnil;
289 p->scroll_bar_width = Qnil; 289 p->scroll_bar_width = Qnil;
290 p->vertical_scroll_bar_type = Qt; 290 p->vertical_scroll_bar_type = Qt;
291 p->overlay_arrow_bitmap = 0;
292 291
293 Vwindow_list = Qnil; 292 Vwindow_list = Qnil;
294 return val; 293 return val;
diff --git a/src/window.h b/src/window.h
index 8df0b6bb3eb..493b5aa9486 100644
--- a/src/window.h
+++ b/src/window.h
@@ -259,9 +259,6 @@ struct window
259 /* This is handy for undrawing the cursor. */ 259 /* This is handy for undrawing the cursor. */
260 int phys_cursor_ascent, phys_cursor_height; 260 int phys_cursor_ascent, phys_cursor_height;
261 261
262 /* Alternate overlay-arrow-bitmap in this window. */
263 int overlay_arrow_bitmap;
264
265 /* Non-zero means the cursor is currently displayed. This can be 262 /* Non-zero means the cursor is currently displayed. This can be
266 set to zero by functions overpainting the cursor image. */ 263 set to zero by functions overpainting the cursor image. */
267 unsigned phys_cursor_on_p : 1; 264 unsigned phys_cursor_on_p : 1;
diff --git a/src/xdisp.c b/src/xdisp.c
index c832f1fa5e0..12ee4fef7d3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -9638,22 +9638,14 @@ redisplay ()
9638 9638
9639 9639
9640static Lisp_Object 9640static Lisp_Object
9641overlay_arrow_string_or_property (var, pbitmap) 9641overlay_arrow_string_or_property (var)
9642 Lisp_Object var; 9642 Lisp_Object var;
9643 int *pbitmap;
9644{ 9643{
9645 Lisp_Object pstr = Fget (var, Qoverlay_arrow_string); 9644 Lisp_Object val;
9646 Lisp_Object bitmap;
9647 9645
9648 if (pbitmap) 9646 if (val = Fget (var, Qoverlay_arrow_string), STRINGP (val))
9649 { 9647 return val;
9650 *pbitmap = 0;
9651 if (bitmap = Fget (var, Qoverlay_arrow_bitmap), INTEGERP (bitmap))
9652 *pbitmap = XINT (bitmap);
9653 }
9654 9648
9655 if (!NILP (pstr))
9656 return pstr;
9657 return Voverlay_arrow_string; 9649 return Voverlay_arrow_string;
9658} 9650}
9659 9651
@@ -9703,7 +9695,7 @@ overlay_arrows_changed_p ()
9703 continue; 9695 continue;
9704 if (! EQ (COERCE_MARKER (val), 9696 if (! EQ (COERCE_MARKER (val),
9705 Fget (var, Qlast_arrow_position)) 9697 Fget (var, Qlast_arrow_position))
9706 || ! (pstr = overlay_arrow_string_or_property (var, 0), 9698 || ! (pstr = overlay_arrow_string_or_property (var),
9707 EQ (pstr, Fget (var, Qlast_arrow_string)))) 9699 EQ (pstr, Fget (var, Qlast_arrow_string))))
9708 return 1; 9700 return 1;
9709 } 9701 }
@@ -9733,7 +9725,7 @@ update_overlay_arrows (up_to_date)
9733 Fput (var, Qlast_arrow_position, 9725 Fput (var, Qlast_arrow_position,
9734 COERCE_MARKER (val)); 9726 COERCE_MARKER (val));
9735 Fput (var, Qlast_arrow_string, 9727 Fput (var, Qlast_arrow_string,
9736 overlay_arrow_string_or_property (var, 0)); 9728 overlay_arrow_string_or_property (var));
9737 } 9729 }
9738 else if (up_to_date < 0 9730 else if (up_to_date < 0
9739 || !NILP (Fget (var, Qlast_arrow_position))) 9731 || !NILP (Fget (var, Qlast_arrow_position)))
@@ -9746,14 +9738,13 @@ update_overlay_arrows (up_to_date)
9746 9738
9747 9739
9748/* Return overlay arrow string to display at row. 9740/* Return overlay arrow string to display at row.
9749 Return t if display as bitmap in left fringe. 9741 Return integer (bitmap number) for arrow bitmap in left fringe.
9750 Return nil if no overlay arrow. */ 9742 Return nil if no overlay arrow. */
9751 9743
9752static Lisp_Object 9744static Lisp_Object
9753overlay_arrow_at_row (it, row, pbitmap) 9745overlay_arrow_at_row (it, row)
9754 struct it *it; 9746 struct it *it;
9755 struct glyph_row *row; 9747 struct glyph_row *row;
9756 int *pbitmap;
9757{ 9748{
9758 Lisp_Object vlist; 9749 Lisp_Object vlist;
9759 9750
@@ -9773,17 +9764,21 @@ overlay_arrow_at_row (it, row, pbitmap)
9773 && current_buffer == XMARKER (val)->buffer 9764 && current_buffer == XMARKER (val)->buffer
9774 && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) 9765 && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val)))
9775 { 9766 {
9776 val = overlay_arrow_string_or_property (var, pbitmap);
9777 if (FRAME_WINDOW_P (it->f) 9767 if (FRAME_WINDOW_P (it->f)
9778 && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0) 9768 && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0)
9779 return Qt; 9769 {
9780 if (STRINGP (val)) 9770 if (val = Fget (var, Qoverlay_arrow_bitmap), SYMBOLP (val))
9781 return val; 9771 {
9782 break; 9772 int fringe_bitmap;
9773 if ((fringe_bitmap = lookup_fringe_bitmap (val)) != 0)
9774 return make_number (fringe_bitmap);
9775 }
9776 return make_number (-1); /* Use default arrow bitmap */
9777 }
9778 return overlay_arrow_string_or_property (var);
9783 } 9779 }
9784 } 9780 }
9785 9781
9786 *pbitmap = 0;
9787 return Qnil; 9782 return Qnil;
9788} 9783}
9789 9784
@@ -14847,7 +14842,6 @@ display_line (it)
14847 struct it *it; 14842 struct it *it;
14848{ 14843{
14849 struct glyph_row *row = it->glyph_row; 14844 struct glyph_row *row = it->glyph_row;
14850 int overlay_arrow_bitmap;
14851 Lisp_Object overlay_arrow_string; 14845 Lisp_Object overlay_arrow_string;
14852 14846
14853 /* We always start displaying at hpos zero even if hscrolled. */ 14847 /* We always start displaying at hpos zero even if hscrolled. */
@@ -15255,9 +15249,9 @@ display_line (it)
15255 mark this glyph row as the one containing the overlay arrow. 15249 mark this glyph row as the one containing the overlay arrow.
15256 This is clearly a mess with variable size fonts. It would be 15250 This is clearly a mess with variable size fonts. It would be
15257 better to let it be displayed like cursors under X. */ 15251 better to let it be displayed like cursors under X. */
15258 if ((overlay_arrow_string 15252 if ((row->displays_text_p || !overlay_arrow_seen)
15259 = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap), 15253 && (overlay_arrow_string = overlay_arrow_at_row (it, row),
15260 !NILP (overlay_arrow_string))) 15254 !NILP (overlay_arrow_string)))
15261 { 15255 {
15262 /* Overlay arrow in window redisplay is a fringe bitmap. */ 15256 /* Overlay arrow in window redisplay is a fringe bitmap. */
15263 if (STRINGP (overlay_arrow_string)) 15257 if (STRINGP (overlay_arrow_string))
@@ -15287,8 +15281,8 @@ display_line (it)
15287 } 15281 }
15288 else 15282 else
15289 { 15283 {
15290 it->w->overlay_arrow_bitmap = overlay_arrow_bitmap; 15284 xassert (INTEGERP (overlay_arrow_string));
15291 row->overlay_arrow_p = 1; 15285 row->overlay_arrow_bitmap = XINT (overlay_arrow_string);
15292 } 15286 }
15293 overlay_arrow_seen = 1; 15287 overlay_arrow_seen = 1;
15294 } 15288 }
diff --git a/src/xfaces.c b/src/xfaces.c
index 51dcfb144d1..89267c8f7f6 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -7115,8 +7115,9 @@ realize_x_face (cache, attrs, c, base_face)
7115 int c; 7115 int c;
7116 struct face *base_face; 7116 struct face *base_face;
7117{ 7117{
7118 struct face *face = NULL;
7118#ifdef HAVE_WINDOW_SYSTEM 7119#ifdef HAVE_WINDOW_SYSTEM
7119 struct face *face, *default_face; 7120 struct face *default_face;
7120 struct frame *f; 7121 struct frame *f;
7121 Lisp_Object stipple, overline, strike_through, box; 7122 Lisp_Object stipple, overline, strike_through, box;
7122 7123
@@ -7312,8 +7313,8 @@ realize_x_face (cache, attrs, c, base_face)
7312 face->stipple = load_pixmap (f, stipple, &face->pixmap_w, &face->pixmap_h); 7313 face->stipple = load_pixmap (f, stipple, &face->pixmap_w, &face->pixmap_h);
7313 7314
7314 xassert (FACE_SUITABLE_FOR_CHAR_P (face, c)); 7315 xassert (FACE_SUITABLE_FOR_CHAR_P (face, c));
7315 return face;
7316#endif /* HAVE_WINDOW_SYSTEM */ 7316#endif /* HAVE_WINDOW_SYSTEM */
7317 return face;
7317} 7318}
7318 7319
7319 7320
diff --git a/src/xmenu.c b/src/xmenu.c
index b29b74b6e44..f32074c2f6a 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -771,7 +771,7 @@ cached information about equivalent key sequences. */)
771 Lisp_Object keymap, tem; 771 Lisp_Object keymap, tem;
772 int xpos = 0, ypos = 0; 772 int xpos = 0, ypos = 0;
773 Lisp_Object title; 773 Lisp_Object title;
774 char *error_name; 774 char *error_name = NULL;
775 Lisp_Object selection; 775 Lisp_Object selection;
776 FRAME_PTR f = NULL; 776 FRAME_PTR f = NULL;
777 Lisp_Object x, y, window; 777 Lisp_Object x, y, window;
@@ -2483,7 +2483,7 @@ create_and_show_popup_menu (f, first_wv, x, y, for_click)
2483 if (FRAME_X_DISPLAY_INFO (f)->grabbed & (1 << i)) 2483 if (FRAME_X_DISPLAY_INFO (f)->grabbed & (1 << i))
2484 break; 2484 break;
2485 } 2485 }
2486 2486
2487 /* Display the menu. */ 2487 /* Display the menu. */
2488 gtk_widget_show_all (menu); 2488 gtk_widget_show_all (menu);
2489 gtk_menu_popup (GTK_MENU (menu), 0, 0, pos_func, &popup_x_y, i, 0); 2489 gtk_menu_popup (GTK_MENU (menu), 0, 0, pos_func, &popup_x_y, i, 0);
@@ -2601,7 +2601,7 @@ create_and_show_popup_menu (f, first_wv, x, y, for_click)
2601 /* Display the menu. */ 2601 /* Display the menu. */
2602 lw_popup_menu (menu, (XEvent *) &dummy); 2602 lw_popup_menu (menu, (XEvent *) &dummy);
2603 popup_activated_flag = 1; 2603 popup_activated_flag = 1;
2604 2604
2605 { 2605 {
2606 int fact = 4 * sizeof (LWLIB_ID); 2606 int fact = 4 * sizeof (LWLIB_ID);
2607 int specpdl_count = SPECPDL_INDEX (); 2607 int specpdl_count = SPECPDL_INDEX ();
@@ -3225,7 +3225,7 @@ pop_down_menu (arg)
3225{ 3225{
3226 struct Lisp_Save_Value *p1 = XSAVE_VALUE (Fcar (arg)); 3226 struct Lisp_Save_Value *p1 = XSAVE_VALUE (Fcar (arg));
3227 struct Lisp_Save_Value *p2 = XSAVE_VALUE (Fcdr (arg)); 3227 struct Lisp_Save_Value *p2 = XSAVE_VALUE (Fcdr (arg));
3228 3228
3229 FRAME_PTR f = p1->pointer; 3229 FRAME_PTR f = p1->pointer;
3230 XMenu *menu = p2->pointer; 3230 XMenu *menu = p2->pointer;
3231 3231
@@ -3459,7 +3459,7 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
3459#ifndef MSDOS 3459#ifndef MSDOS
3460 XMenuActivateSetWaitFunction (x_menu_wait_for_event, FRAME_X_DISPLAY (f)); 3460 XMenuActivateSetWaitFunction (x_menu_wait_for_event, FRAME_X_DISPLAY (f));
3461#endif 3461#endif
3462 3462
3463 record_unwind_protect (pop_down_menu, 3463 record_unwind_protect (pop_down_menu,
3464 Fcons (make_save_value (f, 0), 3464 Fcons (make_save_value (f, 0),
3465 make_save_value (menu, 0))); 3465 make_save_value (menu, 0)));