changeset 6768:0b61d2b74e64

(frame_update_line_height): New function. (Fset_face_attribute_internal): Call that.
author Richard M. Stallman <rms@gnu.org>
date Sat, 09 Apr 1994 06:33:49 +0000
parents 8fbcee1c2059
children 55237bfe01e5
files src/xfaces.c
diffstat 1 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfaces.c	Sat Apr 09 06:33:24 1994 +0000
+++ b/src/xfaces.c	Sat Apr 09 06:33:49 1994 +0000
@@ -659,6 +659,31 @@
 	  && bounds1->descent == bounds2->descent);  */
 }
 
+/* Update the line_height of frame F according to the biggest font in
+   any face, and resize the frame if line_height changes.  */
+
+void
+frame_update_line_height (f)
+     FRAME_PTR f;
+{
+  int i;
+  int biggest = FONT_HEIGHT (f->display.x->font);
+
+  for (i = 0; i < f->display.x->n_param_faces; i++)
+    if (f->display.x->param_faces[i]->font != (XFontStruct *) FACE_DEFAULT)
+      {
+	int height = FONT_HEIGHT (f->display.x->param_faces[i]->font);
+	if (height > biggest)
+	  biggest = height;
+      }
+
+  if (biggest == f->display.x->line_height)
+    return;
+
+  f->display.x->line_height = biggest;
+  x_set_window_size (f, 0, f->width, f->height);
+}
+
 /* Modify face TO by copying from FROM all properties which have
    nondefault settings.  */
 static void 
@@ -967,6 +992,7 @@
       if (face->font != f->display.x->font)
 	unload_font (f, face->font);
       face->font = font;
+      frame_update_line_height (f);
     }
   else if (EQ (attr_name, intern ("foreground")))
     {