Backport from trunk.
authorChong Yidong <cyd@stupidchicken.com>
Thu, 4 Nov 2010 19:34:11 +0000 (15:34 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Thu, 4 Nov 2010 19:34:11 +0000 (15:34 -0400)
src/ChangeLog
src/xfns.c

index a16e35d..b4c9cbc 100644 (file)
@@ -1,3 +1,8 @@
+2010-04-09  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_show_tip): Call try_window in a loop until
+       fonts_changed_p is zero (Bug#2423).
+
 2010-11-04  Jan Djärv  <jan.h.d@swipnet.se>
 
        * xfns.c (x_real_positions): Only use _NET_FRAME_EXTENTS if our
index 635264e..5979c81 100644 (file)
@@ -5221,10 +5221,14 @@ Text larger than the specified size is clipped.  */)
   old_buffer = current_buffer;
   set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->buffer));
   current_buffer->truncate_lines = Qnil;
-  clear_glyph_matrix (w->desired_matrix);
-  clear_glyph_matrix (w->current_matrix);
-  SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
-  try_window (FRAME_ROOT_WINDOW (f), pos, 0);
+
+  do {
+    fonts_changed_p = 0;
+    clear_glyph_matrix (w->desired_matrix);
+    clear_glyph_matrix (w->current_matrix);
+    SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
+    try_window (FRAME_ROOT_WINDOW (f), pos, 0);
+  } while (fonts_changed_p);
 
   /* Compute width and height of the tooltip.  */
   width = height = 0;