# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1129110606 0 # Node ID d95deb0b55d2cd92889ecd97c7389131ce3e44e6 # Parent 82f31f59347886717e1e07107e06e673e4fd9c5a (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to get end of text rows. Obtain header-line/mode-line rows directly. diff -r 82f31f593478 -r d95deb0b55d2 src/xdisp.c --- a/src/xdisp.c Wed Oct 12 09:16:55 2005 +0000 +++ b/src/xdisp.c Wed Oct 12 09:50:06 2005 +0000 @@ -2060,7 +2060,7 @@ height = WINDOW_FRAME_LINE_HEIGHT (w); r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - end_row = r + w->current_matrix->nrows - 1; + end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w); if (w->pseudo_window_p) { @@ -2079,20 +2079,28 @@ area = RIGHT_MARGIN_AREA; goto text_glyph; - case ON_TEXT: + case ON_HEADER_LINE: case ON_MODE_LINE: - case ON_HEADER_LINE: + gr = (part == ON_HEADER_LINE + ? MATRIX_HEADER_LINE_ROW (w->current_matrix) + : MATRIX_MODE_LINE_ROW (w->current_matrix)); + gy = gr->y; + area = TEXT_AREA; + goto text_glyph_row_found; + + case ON_TEXT: area = TEXT_AREA; text_glyph: gr = 0; gy = 0; - for (; r < end_row && r->enabled_p; ++r) + for (; r <= end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y; break; } + text_glyph_row_found: if (gr && gy <= y) { struct glyph *g = gr->glyphs[area]; @@ -2149,7 +2157,7 @@ row_glyph: gr = 0, gy = 0; - for (; r < end_row && r->enabled_p; ++r) + for (; r <= end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y;