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))