comparison src/xdisp.c @ 66039:d95deb0b55d2

(remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to get end of text rows. Obtain header-line/mode-line rows directly.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Wed, 12 Oct 2005 09:50:06 +0000
parents 1b9ba63aad7e
children 1f435e64880f
comparison
equal deleted inserted replaced
66038:82f31f593478 66039:d95deb0b55d2
2058 w = XWINDOW (window); 2058 w = XWINDOW (window);
2059 width = WINDOW_FRAME_COLUMN_WIDTH (w); 2059 width = WINDOW_FRAME_COLUMN_WIDTH (w);
2060 height = WINDOW_FRAME_LINE_HEIGHT (w); 2060 height = WINDOW_FRAME_LINE_HEIGHT (w);
2061 2061
2062 r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); 2062 r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
2063 end_row = r + w->current_matrix->nrows - 1; 2063 end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w);
2064 2064
2065 if (w->pseudo_window_p) 2065 if (w->pseudo_window_p)
2066 { 2066 {
2067 area = TEXT_AREA; 2067 area = TEXT_AREA;
2068 part = ON_MODE_LINE; /* Don't adjust margin. */ 2068 part = ON_MODE_LINE; /* Don't adjust margin. */
2077 2077
2078 case ON_RIGHT_MARGIN: 2078 case ON_RIGHT_MARGIN:
2079 area = RIGHT_MARGIN_AREA; 2079 area = RIGHT_MARGIN_AREA;
2080 goto text_glyph; 2080 goto text_glyph;
2081 2081
2082 case ON_HEADER_LINE:
2083 case ON_MODE_LINE:
2084 gr = (part == ON_HEADER_LINE
2085 ? MATRIX_HEADER_LINE_ROW (w->current_matrix)
2086 : MATRIX_MODE_LINE_ROW (w->current_matrix));
2087 gy = gr->y;
2088 area = TEXT_AREA;
2089 goto text_glyph_row_found;
2090
2082 case ON_TEXT: 2091 case ON_TEXT:
2083 case ON_MODE_LINE:
2084 case ON_HEADER_LINE:
2085 area = TEXT_AREA; 2092 area = TEXT_AREA;
2086 2093
2087 text_glyph: 2094 text_glyph:
2088 gr = 0; gy = 0; 2095 gr = 0; gy = 0;
2089 for (; r < end_row && r->enabled_p; ++r) 2096 for (; r <= end_row && r->enabled_p; ++r)
2090 if (r->y + r->height > y) 2097 if (r->y + r->height > y)
2091 { 2098 {
2092 gr = r; gy = r->y; 2099 gr = r; gy = r->y;
2093 break; 2100 break;
2094 } 2101 }
2095 2102
2103 text_glyph_row_found:
2096 if (gr && gy <= y) 2104 if (gr && gy <= y)
2097 { 2105 {
2098 struct glyph *g = gr->glyphs[area]; 2106 struct glyph *g = gr->glyphs[area];
2099 struct glyph *end = g + gr->used[area]; 2107 struct glyph *end = g + gr->used[area];
2100 2108
2147 : 0))); 2155 : 0)));
2148 width = WINDOW_SCROLL_BAR_AREA_WIDTH (w); 2156 width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
2149 2157
2150 row_glyph: 2158 row_glyph:
2151 gr = 0, gy = 0; 2159 gr = 0, gy = 0;
2152 for (; r < end_row && r->enabled_p; ++r) 2160 for (; r <= end_row && r->enabled_p; ++r)
2153 if (r->y + r->height > y) 2161 if (r->y + r->height > y)
2154 { 2162 {
2155 gr = r; gy = r->y; 2163 gr = r; gy = r->y;
2156 break; 2164 break;
2157 } 2165 }