aboutsummaryrefslogtreecommitdiffstats
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorHelmut Eller2026-04-04 20:59:46 +0200
committerHelmut Eller2026-04-04 20:59:46 +0200
commit6eec001187e8551f32b6498e6dc60cdc58c2e515 (patch)
tree13233de9f0a05ef86a51500e8b1870b75ff20c81 /src/xdisp.c
parente4ea27119e79012f9d651cb61d1115589d91ef39 (diff)
parent01a9d78a7e4c7d7fa5b799e4fdc2caf77a012734 (diff)
downloademacs-feature/igc3.tar.gz
emacs-feature/igc3.zip
Merge branch 'master' into feature/igc3feature/igc3
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index fd2ce49e031..3251750cd2a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13665,7 +13665,7 @@ clear_garbaged_frames (void)
13665 selected frame, and might leave the selected 13665 selected frame, and might leave the selected
13666 frame with corrupted display, if it happens not 13666 frame with corrupted display, if it happens not
13667 to be marked garbaged. */ 13667 to be marked garbaged. */
13668 && !(f != sf && (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f)))) 13668 && !(f != sf && is_tty_frame (f)))
13669 redraw_frame (f); 13669 redraw_frame (f);
13670 else 13670 else
13671 clear_current_matrices (f); 13671 clear_current_matrices (f);
@@ -16653,11 +16653,8 @@ hscroll_window_tree (Lisp_Object window)
16653 } 16653 }
16654 } 16654 }
16655 if (cursor_row->truncated_on_left_p) 16655 if (cursor_row->truncated_on_left_p)
16656 { 16656 /* On TTY frames, don't count the left truncation glyph. */
16657 /* On TTY frames, don't count the left truncation glyph. */ 16657 x_offset -= is_tty_frame (XFRAME (WINDOW_FRAME (w)));
16658 struct frame *f = XFRAME (WINDOW_FRAME (w));
16659 x_offset -= (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f));
16660 }
16661 16658
16662 text_area_width = window_box_width (w, TEXT_AREA); 16659 text_area_width = window_box_width (w, TEXT_AREA);
16663 16660
@@ -17391,7 +17388,7 @@ redisplay_internal (void)
17391 windows_or_buffers_changed = 47; 17388 windows_or_buffers_changed = 47;
17392 17389
17393 struct frame *previous_frame; 17390 struct frame *previous_frame;
17394 if ((FRAME_TERMCAP_P (sf) || FRAME_MSDOS_P (sf)) 17391 if (is_tty_frame (sf)
17395 && (previous_frame = FRAME_TTY (sf)->previous_frame, 17392 && (previous_frame = FRAME_TTY (sf)->previous_frame,
17396 previous_frame != sf)) 17393 previous_frame != sf))
17397 { 17394 {
@@ -17836,8 +17833,7 @@ redisplay_internal (void)
17836 } 17833 }
17837 17834
17838 retry_frame: 17835 retry_frame:
17839 if (FRAME_WINDOW_P (f) 17836 if (FRAME_WINDOW_P (f) || is_tty_frame (f) || f == sf)
17840 || FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f) || f == sf)
17841 { 17837 {
17842 /* Only GC scrollbars when we redisplay the whole frame. */ 17838 /* Only GC scrollbars when we redisplay the whole frame. */
17843 bool gcscrollbars = f->redisplay || !REDISPLAY_SOME_P (); 17839 bool gcscrollbars = f->redisplay || !REDISPLAY_SOME_P ();
@@ -32864,6 +32860,8 @@ produce_special_glyphs (struct it *it, enum display_element_type what,
32864 /* Mirror for R2L. */ 32860 /* Mirror for R2L. */
32865 if (direction == R2L) 32861 if (direction == R2L)
32866 { 32862 {
32863 face_id = GLYPH_CODE_FACE (gc);
32864
32867 /* Try bidi mirroring first. */ 32865 /* Try bidi mirroring first. */
32868 int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc)); 32866 int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc));
32869 32867
@@ -32877,16 +32875,23 @@ produce_special_glyphs (struct it *it, enum display_element_type what,
32877 { 32875 {
32878 c = XFIXNUM (val); 32876 c = XFIXNUM (val);
32879 32877
32880 /* If something goes wrong defaults to '/'. */ 32878 /* If something goes wrong, fall back to '/'. */
32881 if (CHAR_VALID_P (c)) 32879 if (CHAR_VALID_P (c))
32882 SET_GLYPH (glyph, c, face_id); 32880 SET_GLYPH (glyph, c, face_id);
32883 else 32881 else
32884 SET_GLYPH (glyph, '/', face_id); 32882 SET_GLYPH (glyph, '/', face_id);
32885 } 32883 }
32884 else
32885 SET_GLYPH_FROM_GLYPH_CODE (glyph, gc);
32886 } 32886 }
32887 else 32887 else
32888 {
32889 struct face *face = FACE_FROM_ID (it->f, face_id);
32890 int id = FACE_FOR_CHAR (it->f, face, c, -1, Qnil);
32891
32888 /* Bidi mirroring. */ 32892 /* Bidi mirroring. */
32889 SET_GLYPH (glyph, c, face_id); 32893 SET_GLYPH (glyph, c, id);
32894 }
32890 } 32895 }
32891 else 32896 else
32892 /* No mirroring. */ 32897 /* No mirroring. */
@@ -32925,6 +32930,8 @@ produce_special_glyphs (struct it *it, enum display_element_type what,
32925 if (((it->bidi_it.paragraph_dir == R2L) && !left_edge_p) || 32930 if (((it->bidi_it.paragraph_dir == R2L) && !left_edge_p) ||
32926 ((it->bidi_it.paragraph_dir == L2R) && left_edge_p)) 32931 ((it->bidi_it.paragraph_dir == L2R) && left_edge_p))
32927 { 32932 {
32933 face_id = GLYPH_CODE_FACE (gc);
32934
32928 /* Try bidi mirroring first. */ 32935 /* Try bidi mirroring first. */
32929 int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc)); 32936 int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc));
32930 32937
@@ -32938,12 +32945,14 @@ produce_special_glyphs (struct it *it, enum display_element_type what,
32938 { 32945 {
32939 c = XFIXNUM (val); 32946 c = XFIXNUM (val);
32940 32947
32941 /* If something goes wrong defaults to '$'. */ 32948 /* If something goes wrong, fall back to '$'. */
32942 if (CHAR_VALID_P (c)) 32949 if (CHAR_VALID_P (c))
32943 SET_GLYPH (glyph, c, face_id); 32950 SET_GLYPH (glyph, c, face_id);
32944 else 32951 else
32945 SET_GLYPH (glyph, '$', face_id); 32952 SET_GLYPH (glyph, '$', face_id);
32946 } 32953 }
32954 else
32955 SET_GLYPH_FROM_GLYPH_CODE (glyph, gc);
32947 } 32956 }
32948 else 32957 else
32949 { 32958 {