]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix some of the font/face problems.
authorJan Djärv <jan.h.d@swipnet.se>
Thu, 26 Jun 2003 21:18:45 +0000 (21:18 +0000)
committerJan Djärv <jan.h.d@swipnet.se>
Thu, 26 Jun 2003 21:18:45 +0000 (21:18 +0000)
src/ChangeLog
src/frame.c
src/frame.h
src/xfaces.c

index e2fb2baaaac47665189bf0c878130f19a4c6b77a..f5e682dcc6fbfdfecba6797757efc41687210809 100644 (file)
@@ -1,5 +1,14 @@
 2003-06-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
+       * xfaces.c (set_font_frame_param): Set default_face_done_p to zero.
+       (realize_default_face): Use default_face_done_p for the force_p
+       argument to set_lface_from_font_name.  Set default_face_done_p to
+       one.
+
+       * frame.c (make_frame): Initialize default_face_done_p.
+
+       * frame.h (struct frame): Add default_face_done_p.
+
        * config.in: Add XRegisterIMInstantiateCallback_arg6 so it
        will be defined.
 
index 90741c391978540c71cb1d98cedf41e99a1e1da5..98b3e7067bda3a7def1525a43cf4288d3791dec4 100644 (file)
@@ -372,6 +372,8 @@ make_frame (mini_p)
      a newly-created, never-selected window.  */
   XSETFASTINT (XWINDOW (f->selected_window)->use_time, ++window_select_count);
 
+  f->default_face_done_p = 0;
+
   return f;
 }
 \f
index 6ecfcf970b58dc50841f0d3672af00b0ad2ae5e8..a2ca24a014d017b3edd05fd3f5c9d0a6b900aea4 100644 (file)
@@ -451,6 +451,11 @@ struct frame
   /* Set to non-zero in change_frame_size when size of frame changed
      Clear the frame in clear_garbaged_frames if set.  */
   unsigned resized_p : 1;
+
+  /* Set to non-zero if the default face for the frame has been
+     realized.  Reset to zero whenever the default face changes.
+     Used to see the difference between a font change and face change.  */
+  unsigned default_face_done_p : 1;
 };
 
 #ifdef MULTI_KBOARD
index a24ad6d230e89ab1b8167cb204aa59328a94283f..e296c52a2b8cea702df97e3e290d2cf3d18f2f3a 100644 (file)
@@ -4340,6 +4340,7 @@ set_font_frame_param (frame, lface)
          xfree (font);
        }
 
+      f->default_face_done_p = 0;
       Fmodify_frame_parameters (frame, Fcons (Fcons (Qfont, font_name), Qnil));
     }
 }
@@ -6586,9 +6587,9 @@ realize_default_face (f)
       frame_font = Fassq (Qfont, f->param_alist);
       xassert (CONSP (frame_font) && STRINGP (XCDR (frame_font)));
       frame_font = XCDR (frame_font);
-      /* Specify 0 for FORCE_P here, so that we don't override
-        a :family attribute specified for `default' for new frames.  */
-      set_lface_from_font_name (f, lface, frame_font, 0, 1);
+      set_lface_from_font_name (f, lface, frame_font,
+                                f->default_face_done_p, 1);
+      f->default_face_done_p = 1;
     }
 #endif /* HAVE_WINDOW_SYSTEM */