summaryrefslogtreecommitdiff
path: root/src/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/frame.c b/src/frame.c
index 021e9bf604f..d7c58fd8faa 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -115,6 +115,7 @@ Lisp_Object Qenvironment;
Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth;
+Lisp_Object Qinhibit_face_set_after_frame_default;
Lisp_Object Qface_set_after_frame_default;
Lisp_Object Vterminal_frame;
@@ -3036,12 +3037,20 @@ x_set_frame_parameters (f, alist)
|| EQ (prop, Qfullscreen))
{
register Lisp_Object param_index, old_value;
+ int count = SPECPDL_INDEX ();
old_value = get_frame_param (f, prop);
fullscreen_is_being_set |= EQ (prop, Qfullscreen);
if (NILP (Fequal (val, old_value)))
{
+ /* For :font attributes, the frame_parm_handler
+ x_set_font calls `face-set-after-frame-default'.
+ Unless we bind inhibit-face-set-after-frame-default
+ here, this would reset the :font attribute that we
+ just applied to the default value for new faces. */
+ specbind (Qinhibit_face_set_after_frame_default, Qt);
+
store_frame_param (f, prop, val);
param_index = Fget (prop, Qx_frame_parameter);
@@ -3050,6 +3059,7 @@ x_set_frame_parameters (f, alist)
< sizeof (frame_parms)/sizeof (frame_parms[0]))
&& FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])
(*(FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
+ unbind_to (count, Qnil);
}
}
}
@@ -4321,6 +4331,10 @@ syms_of_frame ()
Qface_set_after_frame_default = intern ("face-set-after-frame-default");
staticpro (&Qface_set_after_frame_default);
+ Qinhibit_face_set_after_frame_default
+ = intern ("inhibit-face-set-after-frame-default");
+ staticpro (&Qinhibit_face_set_after_frame_default);
+
Qfullwidth = intern ("fullwidth");
staticpro (&Qfullwidth);
Qfullheight = intern ("fullheight");