From 707ea971f21dbe1d2fd2850c53d7a2987a5043ff Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 25 Jan 2009 17:00:55 +0000 Subject: [PATCH] (buffer_posn_from_coords): Use Fset_buffer instead of setting current_buffer directly. --- src/dispnew.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dispnew.c b/src/dispnew.c index 62ec3cd9669..c94119fe9c9 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -5933,7 +5933,7 @@ buffer_posn_from_coords (w, x, y, pos, object, dx, dy, width, height) int *width, *height; { struct it it; - struct buffer *old_current_buffer = current_buffer; + Lisp_Object old_current_buffer = Fcurrent_buffer (); struct text_pos startp; Lisp_Object string; struct glyph_row *row; @@ -5942,7 +5942,9 @@ buffer_posn_from_coords (w, x, y, pos, object, dx, dy, width, height) #endif int x0, x1; - current_buffer = XBUFFER (w->buffer); + /* We used to set current_buffer directly here, but that does the + wrong thing with `face-remapping-alist' (bug#2044). */ + Fset_buffer (w->buffer); SET_TEXT_POS_FROM_MARKER (startp, w->start); CHARPOS (startp) = min (ZV, max (BEGV, CHARPOS (startp))); BYTEPOS (startp) = min (ZV_BYTE, max (BEGV_BYTE, BYTEPOS (startp))); @@ -5952,7 +5954,7 @@ buffer_posn_from_coords (w, x, y, pos, object, dx, dy, width, height) move_it_to (&it, -1, x0 + it.first_visible_x, *y, -1, MOVE_TO_X | MOVE_TO_Y); - current_buffer = old_current_buffer; + Fset_buffer (old_current_buffer); *dx = x0 + it.first_visible_x - it.current_x; *dy = *y - it.current_y; -- 2.39.5