aboutsummaryrefslogtreecommitdiffstats
path: root/src/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/frame.c b/src/frame.c
index c57618696eb..f431dc4946d 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -116,6 +116,7 @@ Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth;
116Lisp_Object Qfont_backend; 116Lisp_Object Qfont_backend;
117#endif /* USE_FONT_BACKEND */ 117#endif /* USE_FONT_BACKEND */
118 118
119Lisp_Object Qinhibit_face_set_after_frame_default;
119Lisp_Object Qface_set_after_frame_default; 120Lisp_Object Qface_set_after_frame_default;
120 121
121 122
@@ -2742,12 +2743,20 @@ x_set_frame_parameters (f, alist)
2742 || EQ (prop, Qfullscreen)) 2743 || EQ (prop, Qfullscreen))
2743 { 2744 {
2744 register Lisp_Object param_index, old_value; 2745 register Lisp_Object param_index, old_value;
2746 int count = SPECPDL_INDEX ();
2745 2747
2746 old_value = get_frame_param (f, prop); 2748 old_value = get_frame_param (f, prop);
2747 fullscreen_is_being_set |= EQ (prop, Qfullscreen); 2749 fullscreen_is_being_set |= EQ (prop, Qfullscreen);
2748 2750
2749 if (NILP (Fequal (val, old_value))) 2751 if (NILP (Fequal (val, old_value)))
2750 { 2752 {
2753 /* For :font attributes, the frame_parm_handler
2754 x_set_font calls `face-set-after-frame-default'.
2755 Unless we bind inhibit-face-set-after-frame-default
2756 here, this would reset the :font attribute that we
2757 just applied to the default value for new faces. */
2758 specbind (Qinhibit_face_set_after_frame_default, Qt);
2759
2751 store_frame_param (f, prop, val); 2760 store_frame_param (f, prop, val);
2752 2761
2753 param_index = Fget (prop, Qx_frame_parameter); 2762 param_index = Fget (prop, Qx_frame_parameter);
@@ -2756,6 +2765,8 @@ x_set_frame_parameters (f, alist)
2756 < sizeof (frame_parms)/sizeof (frame_parms[0])) 2765 < sizeof (frame_parms)/sizeof (frame_parms[0]))
2757 && rif->frame_parm_handlers[XINT (param_index)]) 2766 && rif->frame_parm_handlers[XINT (param_index)])
2758 (*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value); 2767 (*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
2768
2769 unbind_to (count, Qnil);
2759 } 2770 }
2760 } 2771 }
2761 } 2772 }
@@ -4112,6 +4123,10 @@ syms_of_frame ()
4112 Qface_set_after_frame_default = intern ("face-set-after-frame-default"); 4123 Qface_set_after_frame_default = intern ("face-set-after-frame-default");
4113 staticpro (&Qface_set_after_frame_default); 4124 staticpro (&Qface_set_after_frame_default);
4114 4125
4126 Qinhibit_face_set_after_frame_default
4127 = intern ("inhibit-face-set-after-frame-default");
4128 staticpro (&Qinhibit_face_set_after_frame_default);
4129
4115 Qfullwidth = intern ("fullwidth"); 4130 Qfullwidth = intern ("fullwidth");
4116 staticpro (&Qfullwidth); 4131 staticpro (&Qfullwidth);
4117 Qfullheight = intern ("fullheight"); 4132 Qfullheight = intern ("fullheight");