diff options
Diffstat (limited to 'src/frame.c')
| -rw-r--r-- | src/frame.c | 15 |
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; | |||
| 116 | Lisp_Object Qfont_backend; | 116 | Lisp_Object Qfont_backend; |
| 117 | #endif /* USE_FONT_BACKEND */ | 117 | #endif /* USE_FONT_BACKEND */ |
| 118 | 118 | ||
| 119 | Lisp_Object Qinhibit_face_set_after_frame_default; | ||
| 119 | Lisp_Object Qface_set_after_frame_default; | 120 | Lisp_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"); |