Mercurial > emacs
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); |