Mercurial > emacs
changeset 80741:1f63840526a9
(mac_handle_text_input_event):
Check if display is up to date before accessing current matrix.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Wed, 20 Aug 2008 09:05:31 +0000 |
parents | 038757cf9434 |
children | 520260315606 |
files | src/mactoolbox.c |
diffstat | 1 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/mactoolbox.c Wed Aug 20 09:05:14 2008 +0000 +++ b/src/mactoolbox.c Wed Aug 20 09:05:31 2008 +0000 @@ -570,6 +570,7 @@ #ifndef MAC_OSX break; #else /* MAC_OSX */ + struct buffer *b; CFRange sel_range; int charpos; int hpos, vpos, x, y; @@ -579,8 +580,17 @@ f = mac_focus_frame (&one_mac_display_info); w = XWINDOW (f->selected_window); + b = XBUFFER (w->buffer); + + /* Are we in a window whose display is up to date? + And verify the buffer's text has not changed. */ + if (!(EQ (w->window_end_valid, w->buffer) + && XINT (w->last_modified) == BUF_MODIFF (b) + && XINT (w->last_overlay_modified) == BUF_OVERLAY_MODIFF (b))) + break; + mac_get_selected_range (w, &sel_range); - charpos = (BUF_BEGV (XBUFFER (w->buffer)) + sel_range.location + charpos = (BUF_BEGV (b) + sel_range.location + byte_offset / (long) sizeof (UniChar)); if (!fast_find_position (w, charpos, &hpos, &vpos, &x, &y, Qnil))