>>>>> On Wed, 12 Oct 2005 11:29:57 +0200, [EMAIL PROTECTED] (Kim F. Storm) said:
> I don't quite remember, but most often, all rows above the modeline > are enabled, so I doubt it makes a big difference in practice. > Your previous code made fewer assumptions, and was still correct, so > I think I like that one better. > BTW, how does your code work for a window without a modeline > (mode-line-format = nil)? I installed yet another one, which does not change the original code so much, but just directly obtains header-line/mode-line rows. So it should work like the original one for no mode-line case. YAMAMOTO Mitsuharu [EMAIL PROTECTED] Index: src/xdisp.c =================================================================== RCS file: /cvsroot/emacs/emacs/src/xdisp.c,v retrieving revision 1.1059 diff -c -r1.1059 xdisp.c *** src/xdisp.c 11 Oct 2005 22:36:46 -0000 1.1059 --- src/xdisp.c 12 Oct 2005 09:40:14 -0000 *************** *** 2060,2066 **** height = WINDOW_FRAME_LINE_HEIGHT (w); r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); ! end_row = r + w->current_matrix->nrows - 1; if (w->pseudo_window_p) { --- 2060,2066 ---- height = WINDOW_FRAME_LINE_HEIGHT (w); r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); ! end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w); if (w->pseudo_window_p) { *************** *** 2079,2098 **** area = RIGHT_MARGIN_AREA; goto text_glyph; - case ON_TEXT: - case ON_MODE_LINE: case ON_HEADER_LINE: area = TEXT_AREA; text_glyph: gr = 0; gy = 0; ! for (; r < end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y; break; } if (gr && gy <= y) { struct glyph *g = gr->glyphs[area]; --- 2079,2106 ---- area = RIGHT_MARGIN_AREA; goto text_glyph; case ON_HEADER_LINE: + case ON_MODE_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) 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,2155 **** row_glyph: gr = 0, gy = 0; ! for (; r < end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y; --- 2157,2163 ---- row_glyph: gr = 0, gy = 0; ! for (; r <= end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y; _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel