mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-03 02:31:03 -08:00
(menu_face_changed_default): New variable.
(menu_face_changed_count): Variable removed. (Finternal_set_lisp_face_attribute): Doc fix. If FRAME is t, set the menu_face_changed_default flag, otherwise set the FRAME's menu_face_changed_p flag if the `menu' face has been changed. Prevent calling set_font_frame_param if FRAME is t. (make_face_cache): Initialize cache's menu_face_changed_p from menu_face_changed_default. (realize_basic_faces): Look into the frame's face cache to determine if the menu appearance needs updating.
This commit is contained in:
parent
90893c55a8
commit
ceeda019c0
1 changed files with 25 additions and 9 deletions
34
src/xfaces.c
34
src/xfaces.c
|
|
@ -473,10 +473,6 @@ static int clear_font_table_count;
|
|||
|
||||
int face_change_count;
|
||||
|
||||
/* Incremented for every change in the `menu' face. */
|
||||
|
||||
int menu_face_change_count;
|
||||
|
||||
/* Non-zero means don't display bold text if a face's foreground
|
||||
and background colors are the inverse of the default colors of the
|
||||
display. This is a kluge to suppress `bold black' foreground text
|
||||
|
|
@ -497,6 +493,10 @@ static int npixmaps_allocated;
|
|||
static int ngcs;
|
||||
#endif
|
||||
|
||||
/* Non-zero means the definition of the `menu' face for new frames has
|
||||
been changed. */
|
||||
|
||||
int menu_face_changed_default;
|
||||
|
||||
|
||||
/* Function prototypes. */
|
||||
|
|
@ -3770,7 +3770,7 @@ DEFUN ("internal-set-lisp-face-attribute", Finternal_set_lisp_face_attribute,
|
|||
Sinternal_set_lisp_face_attribute, 3, 4, 0,
|
||||
"Set attribute ATTR of FACE to VALUE.\n\
|
||||
FRAME being a frame means change the face on that frame.\n\
|
||||
FRAME nil means change change the face of the selected frame.\n\
|
||||
FRAME nil means change the face of the selected frame.\n\
|
||||
FRAME t means change the default for new frames.\n\
|
||||
FRAME 0 means change the face on all frames, and change the default\n\
|
||||
for new frames.")
|
||||
|
|
@ -4126,7 +4126,8 @@ FRAME 0 means change the face on all frames, and change the default\n\
|
|||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
/* Changed font-related attributes of the `default' face are
|
||||
reflected in changed `font' frame parameters. */
|
||||
if ((font_related_attr_p || font_attr_p)
|
||||
if (FRAMEP (frame)
|
||||
&& (font_related_attr_p || font_attr_p)
|
||||
&& lface_fully_specified_p (XVECTOR (lface)->contents))
|
||||
set_font_frame_param (frame, lface);
|
||||
else
|
||||
|
|
@ -4172,7 +4173,21 @@ FRAME 0 means change the face on all frames, and change the default\n\
|
|||
}
|
||||
#endif /* HAVE_WINDOW_SYSTEM */
|
||||
else if (EQ (face, Qmenu))
|
||||
++menu_face_change_count;
|
||||
{
|
||||
/* Indicate that we have to update the menu bar when
|
||||
realizing faces on FRAME. FRAME t change the
|
||||
default for new frames. We do this by setting
|
||||
setting the flag in new face caches */
|
||||
if (FRAMEP (frame))
|
||||
{
|
||||
struct frame *f = XFRAME (frame);
|
||||
if (FRAME_FACE_CACHE (f) == NULL)
|
||||
FRAME_FACE_CACHE (f) = make_face_cache (f);
|
||||
FRAME_FACE_CACHE (f)->menu_face_changed_p = 1;
|
||||
}
|
||||
else
|
||||
menu_face_changed_default = 1;
|
||||
}
|
||||
|
||||
if (!NILP (param))
|
||||
if (EQ (frame, Qt))
|
||||
|
|
@ -4970,6 +4985,7 @@ make_face_cache (f)
|
|||
c->size = 50;
|
||||
c->faces_by_id = (struct face **) xmalloc (c->size * sizeof *c->faces_by_id);
|
||||
c->f = f;
|
||||
c->menu_face_changed_p = menu_face_changed_default;
|
||||
return c;
|
||||
}
|
||||
|
||||
|
|
@ -6054,9 +6070,9 @@ realize_basic_faces (f)
|
|||
realize_named_face (f, Qmenu, MENU_FACE_ID);
|
||||
|
||||
/* Reflect changes in the `menu' face in menu bars. */
|
||||
if (menu_face_change_count)
|
||||
if (FRAME_FACE_CACHE (f)->menu_face_changed_p)
|
||||
{
|
||||
--menu_face_change_count;
|
||||
FRAME_FACE_CACHE (f)->menu_face_changed_p = 0;
|
||||
#ifdef USE_X_TOOLKIT
|
||||
x_update_menu_appearance (f);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue