comparison src/xterm.c @ 41134:04a7db64864b

Fringe cleanup. Comment fixes. Use renamed symbols. (fringe_bitmap_type): Renamed from bitmap_type. (NO_FRINGE_BITMAP): Renamed from NO_BITMAP. (x_draw_fringe_bitmap): Renamed from x_draw_bitmap. (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps.
author Kim F. Storm <storm@cua.dk>
date Fri, 16 Nov 2001 13:20:18 +0000
parents ee9264d0e596
children 09b4e04f7224
comparison
equal deleted inserted replaced
41133:e75b04a40358 41134:04a7db64864b
153 #define abs(x) ((x) < 0 ? -(x) : (x)) 153 #define abs(x) ((x) < 0 ? -(x) : (x))
154 154
155 #define BETWEEN(X, LOWER, UPPER) ((X) >= (LOWER) && (X) < (UPPER)) 155 #define BETWEEN(X, LOWER, UPPER) ((X) >= (LOWER) && (X) < (UPPER))
156 156
157 157
158 /* Bitmaps for truncated lines. */ 158 /* Fringe bitmaps. */
159 159
160 enum bitmap_type 160 enum fringe_bitmap_type
161 { 161 {
162 NO_BITMAP, 162 NO_FRINGE_BITMAP,
163 LEFT_TRUNCATION_BITMAP, 163 LEFT_TRUNCATION_BITMAP,
164 RIGHT_TRUNCATION_BITMAP, 164 RIGHT_TRUNCATION_BITMAP,
165 OVERLAY_ARROW_BITMAP, 165 OVERLAY_ARROW_BITMAP,
166 CONTINUED_LINE_BITMAP, 166 CONTINUED_LINE_BITMAP,
167 CONTINUATION_LINE_BITMAP, 167 CONTINUATION_LINE_BITMAP,
461 XRectangle *)); 461 XRectangle *));
462 static void x_update_cursor_in_window_tree P_ ((struct window *, int)); 462 static void x_update_cursor_in_window_tree P_ ((struct window *, int));
463 static void x_update_window_cursor P_ ((struct window *, int)); 463 static void x_update_window_cursor P_ ((struct window *, int));
464 static void x_erase_phys_cursor P_ ((struct window *)); 464 static void x_erase_phys_cursor P_ ((struct window *));
465 void x_display_and_set_cursor P_ ((struct window *, int, int, int, int, int)); 465 void x_display_and_set_cursor P_ ((struct window *, int, int, int, int, int));
466 static void x_draw_bitmap P_ ((struct window *, struct glyph_row *, 466 static void x_draw_fringe_bitmap P_ ((struct window *, struct glyph_row *,
467 enum bitmap_type)); 467 enum fringe_bitmap_type));
468 468
469 static void x_clip_to_row P_ ((struct window *, struct glyph_row *, 469 static void x_clip_to_row P_ ((struct window *, struct glyph_row *,
470 GC, int)); 470 GC, int));
471 static int x_phys_cursor_in_rect_p P_ ((struct window *, XRectangle *)); 471 static int x_phys_cursor_in_rect_p P_ ((struct window *, XRectangle *));
472 static void x_draw_row_bitmaps P_ ((struct window *, struct glyph_row *)); 472 static void x_draw_row_fringe_bitmaps P_ ((struct window *, struct glyph_row *));
473 static void notice_overwritten_cursor P_ ((struct window *, int, int)); 473 static void notice_overwritten_cursor P_ ((struct window *, int, int));
474 static void x_flush P_ ((struct frame *f)); 474 static void x_flush P_ ((struct frame *f));
475 static void x_update_begin P_ ((struct frame *)); 475 static void x_update_begin P_ ((struct frame *));
476 static void x_update_window_begin P_ ((struct window *)); 476 static void x_update_window_begin P_ ((struct window *));
477 static void x_draw_vertical_border P_ ((struct window *)); 477 static void x_draw_vertical_border P_ ((struct window *));
657 && !FRAME_HAS_VERTICAL_SCROLL_BARS (f)) 657 && !FRAME_HAS_VERTICAL_SCROLL_BARS (f))
658 { 658 {
659 int x0, x1, y0, y1; 659 int x0, x1, y0, y1;
660 660
661 window_box_edges (w, -1, &x0, &y0, &x1, &y1); 661 window_box_edges (w, -1, &x0, &y0, &x1, &y1);
662 x1 += FRAME_X_RIGHT_FLAGS_AREA_WIDTH (f); 662 x1 += FRAME_X_RIGHT_FRINGE_WIDTH (f);
663 y1 -= 1; 663 y1 -= 1;
664 664
665 XDrawLine (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 665 XDrawLine (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
666 f->output_data.x->normal_gc, x1, y0, x1, y1); 666 f->output_data.x->normal_gc, x1, y0, x1, y1);
667 } 667 }
756 } 756 }
757 } 757 }
758 758
759 759
760 /* Draw truncation mark bitmaps, continuation mark bitmaps, overlay 760 /* Draw truncation mark bitmaps, continuation mark bitmaps, overlay
761 arrow bitmaps, or clear the areas where they would be displayed 761 arrow bitmaps, or clear the fringes if no bitmaps are required
762 before DESIRED_ROW is made current. The window being updated is 762 before DESIRED_ROW is made current. The window being updated is
763 found in updated_window. This function It is called from 763 found in updated_window. This function It is called from
764 update_window_line only if it is known that there are differences 764 update_window_line only if it is known that there are differences
765 between bitmaps to be drawn between current row and DESIRED_ROW. */ 765 between bitmaps to be drawn between current row and DESIRED_ROW. */
766 766
775 xassert (w); 775 xassert (w);
776 776
777 if (!desired_row->mode_line_p && !w->pseudo_window_p) 777 if (!desired_row->mode_line_p && !w->pseudo_window_p)
778 { 778 {
779 BLOCK_INPUT; 779 BLOCK_INPUT;
780 x_draw_row_bitmaps (w, desired_row); 780 x_draw_row_fringe_bitmaps (w, desired_row);
781 UNBLOCK_INPUT; 781 UNBLOCK_INPUT;
782 } 782 }
783 783
784 /* When a window has disappeared, make sure that no rest of 784 /* When a window has disappeared, make sure that no rest of
785 full-width rows stays visible in the internal border. Could 785 full-width rows stays visible in the internal border. Could
811 UNBLOCK_INPUT; 811 UNBLOCK_INPUT;
812 } 812 }
813 } 813 }
814 814
815 815
816 /* Draw the bitmap WHICH in one of the areas to the left or right of 816 /* Draw the bitmap WHICH in one of the left or right fringes of
817 window W. ROW is the glyph row for which to display the bitmap; it 817 window W. ROW is the glyph row for which to display the bitmap; it
818 determines the vertical position at which the bitmap has to be 818 determines the vertical position at which the bitmap has to be
819 drawn. */ 819 drawn. */
820 820
821 static void 821 static void
822 x_draw_bitmap (w, row, which) 822 x_draw_fringe_bitmap (w, row, which)
823 struct window *w; 823 struct window *w;
824 struct glyph_row *row; 824 struct glyph_row *row;
825 enum bitmap_type which; 825 enum fringe_bitmap_type which;
826 { 826 {
827 struct frame *f = XFRAME (WINDOW_FRAME (w)); 827 struct frame *f = XFRAME (WINDOW_FRAME (w));
828 Display *display = FRAME_X_DISPLAY (f); 828 Display *display = FRAME_X_DISPLAY (f);
829 Window window = FRAME_X_WINDOW (f); 829 Window window = FRAME_X_WINDOW (f);
830 int x, y, wd, h, dy; 830 int x, y, wd, h, dy;
843 wd = left_width; 843 wd = left_width;
844 h = left_height; 844 h = left_height;
845 bits = left_bits; 845 bits = left_bits;
846 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0) 846 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0)
847 - wd 847 - wd
848 - (FRAME_X_LEFT_FLAGS_AREA_WIDTH (f) - wd) / 2); 848 - (FRAME_X_LEFT_FRINGE_WIDTH (f) - wd) / 2);
849 break; 849 break;
850 850
851 case OVERLAY_ARROW_BITMAP: 851 case OVERLAY_ARROW_BITMAP:
852 wd = left_width; 852 wd = left_width;
853 h = left_height; 853 h = left_height;
854 bits = ov_bits; 854 bits = ov_bits;
855 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0) 855 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0)
856 - wd 856 - wd
857 - (FRAME_X_LEFT_FLAGS_AREA_WIDTH (f) - wd) / 2); 857 - (FRAME_X_LEFT_FRINGE_WIDTH (f) - wd) / 2);
858 break; 858 break;
859 859
860 case RIGHT_TRUNCATION_BITMAP: 860 case RIGHT_TRUNCATION_BITMAP:
861 wd = right_width; 861 wd = right_width;
862 h = right_height; 862 h = right_height;
863 bits = right_bits; 863 bits = right_bits;
864 x = window_box_right (w, -1); 864 x = window_box_right (w, -1);
865 x += (FRAME_X_RIGHT_FLAGS_AREA_WIDTH (f) - wd) / 2; 865 x += (FRAME_X_RIGHT_FRINGE_WIDTH (f) - wd) / 2;
866 break; 866 break;
867 867
868 case CONTINUED_LINE_BITMAP: 868 case CONTINUED_LINE_BITMAP:
869 wd = right_width; 869 wd = right_width;
870 h = right_height; 870 h = right_height;
871 bits = continued_bits; 871 bits = continued_bits;
872 x = window_box_right (w, -1); 872 x = window_box_right (w, -1);
873 x += (FRAME_X_RIGHT_FLAGS_AREA_WIDTH (f) - wd) / 2; 873 x += (FRAME_X_RIGHT_FRINGE_WIDTH (f) - wd) / 2;
874 break; 874 break;
875 875
876 case CONTINUATION_LINE_BITMAP: 876 case CONTINUATION_LINE_BITMAP:
877 wd = continuation_width; 877 wd = continuation_width;
878 h = continuation_height; 878 h = continuation_height;
879 bits = continuation_bits; 879 bits = continuation_bits;
880 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0) 880 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0)
881 - wd 881 - wd
882 - (FRAME_X_LEFT_FLAGS_AREA_WIDTH (f) - wd) / 2); 882 - (FRAME_X_LEFT_FRINGE_WIDTH (f) - wd) / 2);
883 break; 883 break;
884 884
885 case ZV_LINE_BITMAP: 885 case ZV_LINE_BITMAP:
886 wd = zv_width; 886 wd = zv_width;
887 h = zv_height; 887 h = zv_height;
888 bits = zv_bits; 888 bits = zv_bits;
889 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0) 889 x = (WINDOW_TO_FRAME_PIXEL_X (w, 0)
890 - wd 890 - wd
891 - (FRAME_X_LEFT_FLAGS_AREA_WIDTH (f) - wd) / 2); 891 - (FRAME_X_LEFT_FRINGE_WIDTH (f) - wd) / 2);
892 break; 892 break;
893 893
894 default: 894 default:
895 abort (); 895 abort ();
896 } 896 }
900 y = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); 900 y = WINDOW_TO_FRAME_PIXEL_Y (w, row->y);
901 dy = (row->height - h) / 2; 901 dy = (row->height - h) / 2;
902 902
903 /* Draw the bitmap. I believe these small pixmaps can be cached 903 /* Draw the bitmap. I believe these small pixmaps can be cached
904 by the server. */ 904 by the server. */
905 face = FACE_FROM_ID (f, BITMAP_AREA_FACE_ID); 905 face = FACE_FROM_ID (f, FRINGE_FACE_ID);
906 pixmap = XCreatePixmapFromBitmapData (display, window, bits, wd, h, 906 pixmap = XCreatePixmapFromBitmapData (display, window, bits, wd, h,
907 face->foreground, 907 face->foreground,
908 face->background, depth); 908 face->background, depth);
909 XCopyArea (display, pixmap, window, gc, 0, 0, wd, h, x, y + dy); 909 XCopyArea (display, pixmap, window, gc, 0, 0, wd, h, x, y + dy);
910 XFreePixmap (display, pixmap); 910 XFreePixmap (display, pixmap);
911 XSetClipMask (display, gc, None); 911 XSetClipMask (display, gc, None);
912 } 912 }
913 913
914 914
915 /* Draw flags bitmaps for glyph row ROW on window W. Call this 915 /* Draw fringe bitmaps for glyph row ROW on window W. Call this
916 function with input blocked. */ 916 function with input blocked. */
917 917
918 static void 918 static void
919 x_draw_row_bitmaps (w, row) 919 x_draw_row_fringe_bitmaps (w, row)
920 struct window *w; 920 struct window *w;
921 struct glyph_row *row; 921 struct glyph_row *row;
922 { 922 {
923 struct frame *f = XFRAME (w->frame); 923 struct frame *f = XFRAME (w->frame);
924 enum bitmap_type bitmap; 924 enum fringe_bitmap_type bitmap;
925 struct face *face; 925 struct face *face;
926 int header_line_height = -1; 926 int header_line_height = -1;
927 927
928 xassert (interrupt_input_blocked); 928 xassert (interrupt_input_blocked);
929 929
930 /* If row is completely invisible, because of vscrolling, we 930 /* If row is completely invisible, because of vscrolling, we
931 don't have to draw anything. */ 931 don't have to draw anything. */
932 if (row->visible_height <= 0) 932 if (row->visible_height <= 0)
933 return; 933 return;
934 934
935 face = FACE_FROM_ID (f, BITMAP_AREA_FACE_ID); 935 face = FACE_FROM_ID (f, FRINGE_FACE_ID);
936 PREPARE_FACE_FOR_DISPLAY (f, face); 936 PREPARE_FACE_FOR_DISPLAY (f, face);
937 937
938 /* Decide which bitmap to draw at the left side. */ 938 /* Decide which bitmap to draw in the left fringe. */
939 if (row->overlay_arrow_p) 939 if (row->overlay_arrow_p)
940 bitmap = OVERLAY_ARROW_BITMAP; 940 bitmap = OVERLAY_ARROW_BITMAP;
941 else if (row->truncated_on_left_p) 941 else if (row->truncated_on_left_p)
942 bitmap = LEFT_TRUNCATION_BITMAP; 942 bitmap = LEFT_TRUNCATION_BITMAP;
943 else if (MATRIX_ROW_CONTINUATION_LINE_P (row)) 943 else if (MATRIX_ROW_CONTINUATION_LINE_P (row))
944 bitmap = CONTINUATION_LINE_BITMAP; 944 bitmap = CONTINUATION_LINE_BITMAP;
945 else if (row->indicate_empty_line_p) 945 else if (row->indicate_empty_line_p)
946 bitmap = ZV_LINE_BITMAP; 946 bitmap = ZV_LINE_BITMAP;
947 else 947 else
948 bitmap = NO_BITMAP; 948 bitmap = NO_FRINGE_BITMAP;
949 949
950 /* Clear flags area if no bitmap to draw or if bitmap doesn't fill 950 /* Clear left fringe if no bitmap to draw or if bitmap doesn't fill
951 the flags area. */ 951 the fringe. */
952 if (bitmap == NO_BITMAP 952 if (bitmap == NO_FRINGE_BITMAP
953 || FRAME_FLAGS_BITMAP_WIDTH (f) < FRAME_X_LEFT_FLAGS_AREA_WIDTH (f) 953 || FRAME_FRINGE_BITMAP_WIDTH (f) < FRAME_X_LEFT_FRINGE_WIDTH (f)
954 || row->height > FRAME_FLAGS_BITMAP_HEIGHT (f)) 954 || row->height > FRAME_FRINGE_BITMAP_HEIGHT (f))
955 { 955 {
956 /* If W has a vertical border to its left, don't draw over it. */ 956 /* If W has a vertical border to its left, don't draw over it. */
957 int border = ((XFASTINT (w->left) > 0 957 int border = ((XFASTINT (w->left) > 0
958 && !FRAME_HAS_VERTICAL_SCROLL_BARS (f)) 958 && !FRAME_HAS_VERTICAL_SCROLL_BARS (f))
959 ? 1 : 0); 959 ? 1 : 0);
960 int left = window_box_left (w, -1); 960 int left = window_box_left (w, -1);
961 961
962 if (header_line_height < 0) 962 if (header_line_height < 0)
963 header_line_height = WINDOW_DISPLAY_HEADER_LINE_HEIGHT (w); 963 header_line_height = WINDOW_DISPLAY_HEADER_LINE_HEIGHT (w);
964 964
965 /* In case the same realized face is used for bitmap areas and 965 /* In case the same realized face is used for fringes and
966 for something displayed in the text (e.g. face `region' on 966 for something displayed in the text (e.g. face `region' on
967 mono-displays, the fill style may have been changed to 967 mono-displays, the fill style may have been changed to
968 FillSolid in x_draw_glyph_string_background. */ 968 FillSolid in x_draw_glyph_string_background. */
969 if (face->stipple) 969 if (face->stipple)
970 XSetFillStyle (FRAME_X_DISPLAY (f), face->gc, FillOpaqueStippled); 970 XSetFillStyle (FRAME_X_DISPLAY (f), face->gc, FillOpaqueStippled);
972 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->background); 972 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->background);
973 973
974 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 974 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
975 face->gc, 975 face->gc,
976 (left 976 (left
977 - FRAME_X_LEFT_FLAGS_AREA_WIDTH (f) 977 - FRAME_X_LEFT_FRINGE_WIDTH (f)
978 + border), 978 + border),
979 WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, 979 WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height,
980 row->y)), 980 row->y)),
981 FRAME_X_LEFT_FLAGS_AREA_WIDTH (f) - border, 981 FRAME_X_LEFT_FRINGE_WIDTH (f) - border,
982 row->visible_height); 982 row->visible_height);
983 if (!face->stipple) 983 if (!face->stipple)
984 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->foreground); 984 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->foreground);
985 } 985 }
986 986
987 /* Draw the left bitmap. */ 987 /* Draw the left bitmap. */
988 if (bitmap != NO_BITMAP) 988 if (bitmap != NO_FRINGE_BITMAP)
989 x_draw_bitmap (w, row, bitmap); 989 x_draw_fringe_bitmap (w, row, bitmap);
990 990
991 /* Decide which bitmap to draw at the right side. */ 991 /* Decide which bitmap to draw in the right fringe. */
992 if (row->truncated_on_right_p) 992 if (row->truncated_on_right_p)
993 bitmap = RIGHT_TRUNCATION_BITMAP; 993 bitmap = RIGHT_TRUNCATION_BITMAP;
994 else if (row->continued_p) 994 else if (row->continued_p)
995 bitmap = CONTINUED_LINE_BITMAP; 995 bitmap = CONTINUED_LINE_BITMAP;
996 else 996 else
997 bitmap = NO_BITMAP; 997 bitmap = NO_FRINGE_BITMAP;
998 998
999 /* Clear flags area if no bitmap to draw of if bitmap doesn't fill 999 /* Clear right fringe if no bitmap to draw of if bitmap doesn't fill
1000 the flags area. */ 1000 the fringe. */
1001 if (bitmap == NO_BITMAP 1001 if (bitmap == NO_FRINGE_BITMAP
1002 || FRAME_FLAGS_BITMAP_WIDTH (f) < FRAME_X_RIGHT_FLAGS_AREA_WIDTH (f) 1002 || FRAME_FRINGE_BITMAP_WIDTH (f) < FRAME_X_RIGHT_FRINGE_WIDTH (f)
1003 || row->height > FRAME_FLAGS_BITMAP_HEIGHT (f)) 1003 || row->height > FRAME_FRINGE_BITMAP_HEIGHT (f))
1004 { 1004 {
1005 int right = window_box_right (w, -1); 1005 int right = window_box_right (w, -1);
1006 1006
1007 if (header_line_height < 0) 1007 if (header_line_height < 0)
1008 header_line_height = WINDOW_DISPLAY_HEADER_LINE_HEIGHT (w); 1008 header_line_height = WINDOW_DISPLAY_HEADER_LINE_HEIGHT (w);
1009 1009
1010 /* In case the same realized face is used for bitmap areas and 1010 /* In case the same realized face is used for fringes and
1011 for something displayed in the text (e.g. face `region' on 1011 for something displayed in the text (e.g. face `region' on
1012 mono-displays, the fill style may have been changed to 1012 mono-displays, the fill style may have been changed to
1013 FillSolid in x_draw_glyph_string_background. */ 1013 FillSolid in x_draw_glyph_string_background. */
1014 if (face->stipple) 1014 if (face->stipple)
1015 XSetFillStyle (FRAME_X_DISPLAY (f), face->gc, FillOpaqueStippled); 1015 XSetFillStyle (FRAME_X_DISPLAY (f), face->gc, FillOpaqueStippled);
1018 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 1018 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
1019 face->gc, 1019 face->gc,
1020 right, 1020 right,
1021 WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, 1021 WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height,
1022 row->y)), 1022 row->y)),
1023 FRAME_X_RIGHT_FLAGS_AREA_WIDTH (f), 1023 FRAME_X_RIGHT_FRINGE_WIDTH (f),
1024 row->visible_height); 1024 row->visible_height);
1025 if (!face->stipple) 1025 if (!face->stipple)
1026 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->foreground); 1026 XSetForeground (FRAME_X_DISPLAY (f), face->gc, face->foreground);
1027 } 1027 }
1028 1028
1029 /* Draw the right bitmap. */ 1029 /* Draw the right bitmap. */
1030 if (bitmap != NO_BITMAP) 1030 if (bitmap != NO_FRINGE_BITMAP)
1031 x_draw_bitmap (w, row, bitmap); 1031 x_draw_fringe_bitmap (w, row, bitmap);
1032 } 1032 }
1033 1033
1034 1034
1035 1035
1036 /* This is called when starting Emacs and when restarting after 1036 /* This is called when starting Emacs and when restarting after
3976 3976
3977 last_x = window_box_right (s->w, s->area); 3977 last_x = window_box_right (s->w, s->area);
3978 if (s->row->full_width_p 3978 if (s->row->full_width_p
3979 && !s->w->pseudo_window_p) 3979 && !s->w->pseudo_window_p)
3980 { 3980 {
3981 last_x += FRAME_X_RIGHT_FLAGS_AREA_WIDTH (s->f); 3981 last_x += FRAME_X_RIGHT_FRINGE_WIDTH (s->f);
3982 if (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (s->f)) 3982 if (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (s->f))
3983 last_x += FRAME_SCROLL_BAR_WIDTH (s->f) * CANON_X_UNIT (s->f); 3983 last_x += FRAME_SCROLL_BAR_WIDTH (s->f) * CANON_X_UNIT (s->f);
3984 } 3984 }
3985 3985
3986 /* The glyph that may have a right box line. */ 3986 /* The glyph that may have a right box line. */
5062 /* Translate X to frame coordinates. Set last_x to the right 5062 /* Translate X to frame coordinates. Set last_x to the right
5063 end of the drawing area. */ 5063 end of the drawing area. */
5064 if (row->full_width_p) 5064 if (row->full_width_p)
5065 { 5065 {
5066 /* X is relative to the left edge of W, without scroll bars 5066 /* X is relative to the left edge of W, without scroll bars
5067 or flag areas. */ 5067 or fringes. */
5068 struct frame *f = XFRAME (w->frame); 5068 struct frame *f = XFRAME (w->frame);
5069 /* int width = FRAME_FLAGS_AREA_WIDTH (f); */ 5069 /* int width = FRAME_FRINGE_WIDTH (f); */
5070 int window_left_x = WINDOW_LEFT_MARGIN (w) * CANON_X_UNIT (f); 5070 int window_left_x = WINDOW_LEFT_MARGIN (w) * CANON_X_UNIT (f);
5071 5071
5072 x += window_left_x; 5072 x += window_left_x;
5073 area_width = XFASTINT (w->width) * CANON_X_UNIT (f); 5073 area_width = XFASTINT (w->width) * CANON_X_UNIT (f);
5074 last_x = window_left_x + area_width; 5074 last_x = window_left_x + area_width;
5730 { 5730 {
5731 struct frame *f = XFRAME (w->frame); 5731 struct frame *f = XFRAME (w->frame);
5732 int x, y, width, height, from_y, to_y, bottom_y; 5732 int x, y, width, height, from_y, to_y, bottom_y;
5733 5733
5734 /* Get frame-relative bounding box of the text display area of W, 5734 /* Get frame-relative bounding box of the text display area of W,
5735 without mode lines. Include in this box the flags areas to the 5735 without mode lines. Include in this box the left and right
5736 left and right of W. */ 5736 fringe of W. */
5737 window_box (w, -1, &x, &y, &width, &height); 5737 window_box (w, -1, &x, &y, &width, &height);
5738 width += FRAME_X_FLAGS_AREA_WIDTH (f); 5738 width += FRAME_X_FRINGE_WIDTH (f);
5739 x -= FRAME_X_LEFT_FLAGS_AREA_WIDTH (f); 5739 x -= FRAME_X_LEFT_FRINGE_WIDTH (f);
5740 5740
5741 from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y); 5741 from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y);
5742 to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y); 5742 to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y);
5743 bottom_y = y + height; 5743 bottom_y = y + height;
5744 5744
5978 expose_area (w, row, r, LEFT_MARGIN_AREA); 5978 expose_area (w, row, r, LEFT_MARGIN_AREA);
5979 if (row->used[TEXT_AREA]) 5979 if (row->used[TEXT_AREA])
5980 expose_area (w, row, r, TEXT_AREA); 5980 expose_area (w, row, r, TEXT_AREA);
5981 if (row->used[RIGHT_MARGIN_AREA]) 5981 if (row->used[RIGHT_MARGIN_AREA])
5982 expose_area (w, row, r, RIGHT_MARGIN_AREA); 5982 expose_area (w, row, r, RIGHT_MARGIN_AREA);
5983 x_draw_row_bitmaps (w, row); 5983 x_draw_row_fringe_bitmaps (w, row);
5984 } 5984 }
5985 5985
5986 return row->mouse_face_p; 5986 return row->mouse_face_p;
5987 } 5987 }
5988 5988
6734 6734
6735 6735
6736 /* Take proper action when mouse has moved to the mode or header line of 6736 /* Take proper action when mouse has moved to the mode or header line of
6737 window W, x-position X. MODE_LINE_P non-zero means mouse is on the 6737 window W, x-position X. MODE_LINE_P non-zero means mouse is on the
6738 mode line. X is relative to the start of the text display area of 6738 mode line. X is relative to the start of the text display area of
6739 W, so the width of bitmap areas and scroll bars must be subtracted 6739 W, so the width of fringes and scroll bars must be subtracted
6740 to get a position relative to the start of the mode line. */ 6740 to get a position relative to the start of the mode line. */
6741 6741
6742 static void 6742 static void
6743 note_mode_line_highlight (w, x, mode_line_p) 6743 note_mode_line_highlight (w, x, mode_line_p)
6744 struct window *w; 6744 struct window *w;
6762 6762
6763 /* Find the glyph under X. */ 6763 /* Find the glyph under X. */
6764 glyph = row->glyphs[TEXT_AREA]; 6764 glyph = row->glyphs[TEXT_AREA];
6765 end = glyph + row->used[TEXT_AREA]; 6765 end = glyph + row->used[TEXT_AREA];
6766 x0 = - (FRAME_LEFT_SCROLL_BAR_WIDTH (f) * CANON_X_UNIT (f) 6766 x0 = - (FRAME_LEFT_SCROLL_BAR_WIDTH (f) * CANON_X_UNIT (f)
6767 + FRAME_X_LEFT_FLAGS_AREA_WIDTH (f)); 6767 + FRAME_X_LEFT_FRINGE_WIDTH (f));
6768 6768
6769 while (glyph < end 6769 while (glyph < end
6770 && x >= x0 + glyph->pixel_width) 6770 && x >= x0 + glyph->pixel_width)
6771 { 6771 {
6772 x0 += glyph->pixel_width; 6772 x0 += glyph->pixel_width;
11144 11144
11145 /* If clipping to the whole line, including trunc marks, extend 11145 /* If clipping to the whole line, including trunc marks, extend
11146 the rectangle to the left and increase its width. */ 11146 the rectangle to the left and increase its width. */
11147 if (whole_line_p) 11147 if (whole_line_p)
11148 { 11148 {
11149 clip_rect.x -= FRAME_X_LEFT_FLAGS_AREA_WIDTH (f); 11149 clip_rect.x -= FRAME_X_LEFT_FRINGE_WIDTH (f);
11150 clip_rect.width += FRAME_X_FLAGS_AREA_WIDTH (f); 11150 clip_rect.width += FRAME_X_FRINGE_WIDTH (f);
11151 } 11151 }
11152 11152
11153 XSetClipRectangles (FRAME_X_DISPLAY (f), gc, 0, 0, &clip_rect, 1, Unsorted); 11153 XSetClipRectangles (FRAME_X_DISPLAY (f), gc, 0, 0, &clip_rect, 1, Unsorted);
11154 } 11154 }
11155 11155
12562 = (!FRAME_HAS_VERTICAL_SCROLL_BARS (f) 12562 = (!FRAME_HAS_VERTICAL_SCROLL_BARS (f)
12563 ? 0 12563 ? 0
12564 : FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0 12564 : FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0
12565 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f) 12565 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
12566 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font))); 12566 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font)));
12567 f->output_data.x->flags_areas_extra 12567 f->output_data.x->fringes_extra
12568 = FRAME_FLAGS_AREA_WIDTH (f); 12568 = FRAME_FRINGE_WIDTH (f);
12569 pixelwidth = CHAR_TO_PIXEL_WIDTH (f, cols); 12569 pixelwidth = CHAR_TO_PIXEL_WIDTH (f, cols);
12570 pixelheight = CHAR_TO_PIXEL_HEIGHT (f, rows); 12570 pixelheight = CHAR_TO_PIXEL_HEIGHT (f, rows);
12571 12571
12572 f->output_data.x->win_gravity = NorthWestGravity; 12572 f->output_data.x->win_gravity = NorthWestGravity;
12573 x_wm_set_size_hint (f, (long) 0, 0); 12573 x_wm_set_size_hint (f, (long) 0, 0);