Mercurial > hg > xemacs-beta
comparison src/redisplay.c @ 217:d44af0c54775 r20-4b7
Import from CVS: tag r20-4b7
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:08:34 +0200 |
parents | 1f0dabaa0855 |
children | 2c611d1463a6 |
comparison
equal
deleted
inserted
replaced
216:43306a74e31c | 217:d44af0c54775 |
---|---|
144 need to be skipped. This is used for horizontal | 144 need to be skipped. This is used for horizontal |
145 scrolling, where a certain number of columns | 145 scrolling, where a certain number of columns |
146 (those off the left side of the screen) need | 146 (those off the left side of the screen) need |
147 to be skipped before anything is displayed. */ | 147 to be skipped before anything is displayed. */ |
148 Bytind bi_start_col_enabled; | 148 Bytind bi_start_col_enabled; |
149 | |
150 int hscroll_glyph_width_adjust; /* how much the width of the hscroll | |
151 glyph differs from space_width (w). | |
152 0 if no hscroll glyph was used, | |
153 i.e. the window is not scrolled | |
154 horizontally. Used in tab | |
155 calculations. */ | |
149 | 156 |
150 /* Information about the face the text should be displayed in and | 157 /* Information about the face the text should be displayed in and |
151 any begin-glyphs and end-glyphs. */ | 158 any begin-glyphs and end-glyphs. */ |
152 struct extent_fragment *ef; | 159 struct extent_fragment *ef; |
153 face_index findex; | 160 face_index findex; |
815 data->bi_endpos = data->bi_bufpos; | 822 data->bi_endpos = data->bi_bufpos; |
816 data->bi_bufpos = data->bi_start_col_enabled; | 823 data->bi_bufpos = data->bi_start_col_enabled; |
817 | 824 |
818 gb.extent = Qnil; | 825 gb.extent = Qnil; |
819 gb.glyph = Vhscroll_glyph; | 826 gb.glyph = Vhscroll_glyph; |
820 retval = add_glyph_rune (data, &gb, BEGIN_GLYPHS, 1, | 827 { |
821 GLYPH_CACHEL (XWINDOW (data->window), | 828 int oldpixpos = data->pixpos; |
822 HSCROLL_GLYPH_INDEX)); | 829 retval = add_glyph_rune (data, &gb, BEGIN_GLYPHS, 1, |
823 | 830 GLYPH_CACHEL (XWINDOW (data->window), |
831 HSCROLL_GLYPH_INDEX)); | |
832 data->hscroll_glyph_width_adjust = | |
833 data->pixpos - oldpixpos - space_width (XWINDOW (data->window)); | |
834 } | |
824 data->bi_endpos = 0; | 835 data->bi_endpos = 0; |
825 data->bi_cursor_bufpos = bi_old_cursor_bufpos; | 836 data->bi_cursor_bufpos = bi_old_cursor_bufpos; |
826 data->cursor_type = old_cursor_type; | 837 data->cursor_type = old_cursor_type; |
827 data->bi_bufpos = bi_old_bufpos; | 838 data->bi_bufpos = bi_old_bufpos; |
828 | 839 |
1930 data.cursor_type = NO_CURSOR; | 1941 data.cursor_type = NO_CURSOR; |
1931 data.cursor_x = -1; | 1942 data.cursor_x = -1; |
1932 | 1943 |
1933 data.start_col = w->hscroll; | 1944 data.start_col = w->hscroll; |
1934 data.bi_start_col_enabled = (w->hscroll ? bi_start_pos : 0); | 1945 data.bi_start_col_enabled = (w->hscroll ? bi_start_pos : 0); |
1946 data.hscroll_glyph_width_adjust = 0; | |
1935 | 1947 |
1936 /* We regenerate the line from the very beginning. */ | 1948 /* We regenerate the line from the very beginning. */ |
1937 Dynarr_reset (db->runes); | 1949 Dynarr_reset (db->runes); |
1938 | 1950 |
1939 /* Why is this less than or equal and not just less than? If the | 1951 /* Why is this less than or equal and not just less than? If the |
2281 int prop_width = 0; | 2293 int prop_width = 0; |
2282 | 2294 |
2283 if (data.start_col > 1) | 2295 if (data.start_col > 1) |
2284 tab_start_pixpos -= (space_width (w) * (data.start_col - 1)); | 2296 tab_start_pixpos -= (space_width (w) * (data.start_col - 1)); |
2285 | 2297 |
2286 next_tab_start = next_tab_position (w, tab_start_pixpos, | 2298 next_tab_start = |
2287 dl->bounds.left_in); | 2299 next_tab_position (w, tab_start_pixpos, |
2300 dl->bounds.left_in + | |
2301 data.hscroll_glyph_width_adjust); | |
2288 if (next_tab_start > data.max_pixpos) | 2302 if (next_tab_start > data.max_pixpos) |
2289 { | 2303 { |
2290 prop_width = next_tab_start - data.max_pixpos; | 2304 prop_width = next_tab_start - data.max_pixpos; |
2291 next_tab_start = data.max_pixpos; | 2305 next_tab_start = data.max_pixpos; |
2292 } | 2306 } |
5426 f->point_changed = 0; | 5440 f->point_changed = 0; |
5427 f->toolbar_changed = 0; | 5441 f->toolbar_changed = 0; |
5428 f->windows_changed = 0; | 5442 f->windows_changed = 0; |
5429 f->windows_structure_changed = 0; | 5443 f->windows_structure_changed = 0; |
5430 f->window_face_cache_reset = 0; | 5444 f->window_face_cache_reset = 0; |
5445 f->echo_area_garbaged = 0; | |
5431 | 5446 |
5432 f->clear = 0; | 5447 f->clear = 0; |
5433 | 5448 |
5434 if (!f->size_change_pending) | 5449 if (!f->size_change_pending) |
5435 f->size_changed = 0; | 5450 f->size_changed = 0; |
7808 | 7823 |
7809 if (FRAME_REPAINT_P (f) && FRAME_HAS_MINIBUF_P (f)) | 7824 if (FRAME_REPAINT_P (f) && FRAME_HAS_MINIBUF_P (f)) |
7810 { | 7825 { |
7811 Lisp_Object window = FRAME_MINIBUF_WINDOW (f); | 7826 Lisp_Object window = FRAME_MINIBUF_WINDOW (f); |
7812 /* | 7827 /* |
7813 * If the frame has changed, there may be random chud | 7828 * If the frame size has changed, there may be random |
7814 * on the screen left from previous messages because | 7829 * chud on the screen left from previous messages |
7815 * redisplay_frame hasn't been called yet. Clear the | 7830 * because redisplay_frame hasn't been called yet. |
7816 * screen to get rid of the potential mess. | 7831 * Clear the screen to get rid of the potential mess. |
7817 * | |
7818 * It would be nice if a way could be found not to | |
7819 * have to do this for every message until the next | |
7820 * full redisplay. | |
7821 */ | 7832 */ |
7822 if (f->frame_changed) | 7833 if (f->echo_area_garbaged) |
7823 DEVMETH (d, clear_frame, (f)); | 7834 { |
7835 DEVMETH (d, clear_frame, (f)); | |
7836 f->echo_area_garbaged = 0; | |
7837 } | |
7824 redisplay_window (window, 0); | 7838 redisplay_window (window, 0); |
7825 call_redisplay_end_triggers (XWINDOW (window), 0); | 7839 call_redisplay_end_triggers (XWINDOW (window), 0); |
7826 } | 7840 } |
7827 } | 7841 } |
7828 | 7842 |