Mercurial > emacs
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 } |