summaryrefslogtreecommitdiff
path: root/src/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/frame.c b/src/frame.c
index 7d5bdcb1cb6..48cca967cc1 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -72,7 +72,6 @@ Lisp_Object Qx, Qw32, Qmac, Qpc;
Lisp_Object Qvisible;
Lisp_Object Qdisplay_type;
Lisp_Object Qbackground_mode;
-Lisp_Object Qinhibit_default_face_x_resources;
Lisp_Object Qx_frame_parameter;
Lisp_Object Qx_resource_name;
@@ -2342,6 +2341,8 @@ store_frame_param (f, prop, val)
/* Install the chosen minibuffer window, with proper buffer. */
f->minibuffer_window = val;
}
+
+ return Qnil;
}
DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
@@ -2539,15 +2540,6 @@ enabled such bindings for that variable with `make-variable-frame-local'. */)
{
FRAME_PTR f;
register Lisp_Object tail, prop, val;
- int count = SPECPDL_INDEX ();
-
- /* Bind this to t to inhibit initialization of the default face from
- X resources in face-set-after-frame-default. If we don't inhibit
- this, modifying the `font' frame parameter, for example, while
- there is a `default.attributeFont' X resource, won't work,
- because `default's font is reset to the value of the X resource
- and that resets the `font' frame parameter. */
- specbind (Qinhibit_default_face_x_resources, Qt);
if (EQ (frame, Qnil))
frame = selected_frame;
@@ -2601,8 +2593,6 @@ enabled such bindings for that variable with `make-variable-frame-local'. */)
call1 (Qframe_set_background_mode, frame);
}
}
-
- return unbind_to (count, Qnil);
}
DEFUN ("frame-with-environment", Fframe_with_environment, Sframe_with_environment, 0, 1, 0,
@@ -3373,6 +3363,8 @@ x_set_screen_gamma (f, new_value, old_value)
struct frame *f;
Lisp_Object new_value, old_value;
{
+ Lisp_Object bgcolor;
+
if (NILP (new_value))
f->gamma = 0;
else if (NUMBERP (new_value) && XFLOATINT (new_value) > 0)
@@ -3381,7 +3373,20 @@ x_set_screen_gamma (f, new_value, old_value)
else
signal_error ("Invalid screen-gamma", new_value);
- clear_face_cache (0);
+ /* Apply the new gamma value to the frame background. */
+ bgcolor = Fassq (Qbackground_color, f->param_alist);
+ if (CONSP (bgcolor) && (bgcolor = XCDR (bgcolor), STRINGP (bgcolor)))
+ {
+ Lisp_Object index = Fget (Qbackground_color, Qx_frame_parameter);
+ if (NATNUMP (index)
+ && (XFASTINT (index)
+ < sizeof (frame_parms)/sizeof (frame_parms[0]))
+ && rif->frame_parm_handlers[XFASTINT (index)])
+ (*(rif->frame_parm_handlers[XFASTINT (index)]))
+ (f, bgcolor, Qnil);
+ }
+
+ Fclear_face_cache (Qnil);
}
@@ -4424,10 +4429,6 @@ Setting this variable does not affect existing frames, only new ones. */);
Vdefault_frame_scroll_bars = Qnil;
#endif
- Qinhibit_default_face_x_resources
- = intern ("inhibit-default-face-x-resources");
- staticpro (&Qinhibit_default_face_x_resources);
-
DEFVAR_LISP ("terminal-frame", &Vterminal_frame,
doc: /* The initial frame-object, which represents Emacs's stdout. */);