From 20c817d3657ec67792edafd75f34d829144e8590 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 8 Feb 2015 18:17:40 +0200 Subject: [PATCH] Fix handling of frame color parameters in TTY sessions (Bug#19802) src/xfaces.c (map_tty_color): Use assoc_no_quit instead of assq_no_quit to fetch color definition by its string name. lisp/frame.el (frame-notice-user-settings): Refresh the value of frame parameters after calling tty-handle-reverse-video. Call face-set-after-frame-default with the actual parameters, to avoid resetting colors back to unspecified. (set-background-color, set-foreground-color): Pass the selected color to face-set-after-frame-default. --- lisp/ChangeLog | 9 +++++++++ lisp/frame.el | 14 +++++++++++--- src/ChangeLog | 6 ++++++ src/xfaces.c | 2 +- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 17b3d11243..79e3378b2e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2015-02-08 Eli Zaretskii + + * frame.el (frame-notice-user-settings): Refresh the value of + frame parameters after calling tty-handle-reverse-video. Call + face-set-after-frame-default with the actual parameters, to avoid + resetting colors back to unspecified. + (set-background-color, set-foreground-color): Pass the selected + color to face-set-after-frame-default. (Bug#19802) + 2015-02-06 Wolfgang Jenkner * net/network-stream.el (network-stream-open-tls): Respect the diff --git a/lisp/frame.el b/lisp/frame.el index c77df558da..eea5c24a82 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -251,6 +251,10 @@ there (in decreasing order of priority)." (let ((newparms (frame-parameters)) (frame (selected-frame))) (tty-handle-reverse-video frame newparms) + ;; tty-handle-reverse-video might change the frame's + ;; color parameters, and we need to use the updated + ;; value below. + (setq newparms (frame-parameters)) ;; If we changed the background color, we need to update ;; the background-mode parameter, and maybe some faces, ;; too. @@ -258,7 +262,7 @@ there (in decreasing order of priority)." (unless (or (assq 'background-mode initial-frame-alist) (assq 'background-mode default-frame-alist)) (frame-set-background-mode frame)) - (face-set-after-frame-default frame)))))) + (face-set-after-frame-default frame newparms)))))) ;; If the initial frame is still around, apply initial-frame-alist ;; and default-frame-alist to it. @@ -1185,7 +1189,9 @@ To get the frame's current background color, use `frame-parameters'." (modify-frame-parameters (selected-frame) (list (cons 'background-color color-name))) (or window-system - (face-set-after-frame-default (selected-frame)))) + (face-set-after-frame-default (selected-frame) + (list + (cons 'background-color color-name))))) (defun set-foreground-color (color-name) "Set the foreground color of the selected frame to COLOR-NAME. @@ -1195,7 +1201,9 @@ To get the frame's current foreground color, use `frame-parameters'." (modify-frame-parameters (selected-frame) (list (cons 'foreground-color color-name))) (or window-system - (face-set-after-frame-default (selected-frame)))) + (face-set-after-frame-default (selected-frame) + (list + (cons 'foreground-color color-name))))) (defun set-cursor-color (color-name) "Set the text cursor color of the selected frame to COLOR-NAME. diff --git a/src/ChangeLog b/src/ChangeLog index 135f28fb20..7a7fd23d43 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2015-02-08 Eli Zaretskii + + * xfaces.c (map_tty_color): Use assoc_no_quit instead of + assq_no_quit to fetch color definition by its string name. + (Bug#19802) + 2015-02-05 Eli Zaretskii * xdisp.c (move_it_in_display_line_to): Handle the case where the diff --git a/src/xfaces.c b/src/xfaces.c index 44c72aa494..29c91f7169 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -5793,7 +5793,7 @@ map_tty_color (struct frame *f, struct face *face, if (STRINGP (color) && SCHARS (color) && CONSP (Vtty_defined_color_alist) - && (def = assq_no_quit (color, call1 (Qtty_color_alist, frame)), + && (def = assoc_no_quit (color, call1 (Qtty_color_alist, frame)), CONSP (def))) { /* Associations in tty-defined-color-alist are of the form -- 2.39.2