aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dispextern.h3
-rw-r--r--src/frame.c12
-rw-r--r--src/nsterm.m10
-rw-r--r--src/w32fns.c2
-rw-r--r--src/w32term.c3
-rw-r--r--src/w32term.h4
-rw-r--r--src/xfns.c2
-rw-r--r--src/xterm.c3
-rw-r--r--src/xterm.h1
9 files changed, 30 insertions, 10 deletions
diff --git a/src/dispextern.h b/src/dispextern.h
index 6246c7c0808..724aad4227e 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -3003,6 +3003,9 @@ struct redisplay_interface
3003 /* Cancel hourglass cursor on frame F. */ 3003 /* Cancel hourglass cursor on frame F. */
3004 void (*hide_hourglass) (struct frame *f); 3004 void (*hide_hourglass) (struct frame *f);
3005 3005
3006 /* Called to (re)calculate the default face when changing the font
3007 backend. */
3008 void (*default_font_parameter) (struct frame *f, Lisp_Object parms);
3006#endif /* HAVE_WINDOW_SYSTEM */ 3009#endif /* HAVE_WINDOW_SYSTEM */
3007}; 3010};
3008 3011
diff --git a/src/frame.c b/src/frame.c
index 51fc78ab703..c7e4f2f6bd9 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -4565,7 +4565,11 @@ gui_set_font_backend (struct frame *f, Lisp_Object new_value, Lisp_Object old_va
4565 return; 4565 return;
4566 4566
4567 if (FRAME_FONT (f)) 4567 if (FRAME_FONT (f))
4568 free_all_realized_faces (Qnil); 4568 {
4569 Lisp_Object frame;
4570 XSETFRAME (frame, f);
4571 free_all_realized_faces (frame);
4572 }
4569 4573
4570 new_value = font_update_drivers (f, NILP (new_value) ? Qt : new_value); 4574 new_value = font_update_drivers (f, NILP (new_value) ? Qt : new_value);
4571 if (NILP (new_value)) 4575 if (NILP (new_value))
@@ -4579,10 +4583,8 @@ gui_set_font_backend (struct frame *f, Lisp_Object new_value, Lisp_Object old_va
4579 4583
4580 if (FRAME_FONT (f)) 4584 if (FRAME_FONT (f))
4581 { 4585 {
4582 Lisp_Object frame; 4586 /* Reconsider default font after backend(s) change (Bug#23386). */
4583 4587 FRAME_RIF(f)->default_font_parameter (f, Qnil);
4584 XSETFRAME (frame, f);
4585 gui_set_font (f, Fframe_parameter (frame, Qfont), Qnil);
4586 face_change = true; 4588 face_change = true;
4587 windows_or_buffers_changed = 18; 4589 windows_or_buffers_changed = 18;
4588 } 4590 }
diff --git a/src/nsterm.m b/src/nsterm.m
index 96a7fdc0184..04fc0512234 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -5155,6 +5155,13 @@ ns_initialize_display_info (struct ns_display_info *dpyinfo)
5155 reset_mouse_highlight (&dpyinfo->mouse_highlight); 5155 reset_mouse_highlight (&dpyinfo->mouse_highlight);
5156} 5156}
5157 5157
5158/* This currently does nothing, since it's only really needed when
5159 changing the font-backend, but macOS currently only has one
5160 possible backend. This may change if we add HarfBuzz support. */
5161static void
5162ns_default_font_parameter (struct frame *f, Lisp_Object parms)
5163{
5164}
5158 5165
5159/* This and next define (many of the) public functions in this file. */ 5166/* This and next define (many of the) public functions in this file. */
5160/* gui_* are generic versions in xdisp.c that we, and other terms, get away 5167/* gui_* are generic versions in xdisp.c that we, and other terms, get away
@@ -5190,7 +5197,8 @@ static struct redisplay_interface ns_redisplay_interface =
5190 ns_draw_window_divider, 5197 ns_draw_window_divider,
5191 ns_shift_glyphs_for_insert, 5198 ns_shift_glyphs_for_insert,
5192 ns_show_hourglass, 5199 ns_show_hourglass,
5193 ns_hide_hourglass 5200 ns_hide_hourglass,
5201 ns_default_font_parameter
5194}; 5202};
5195 5203
5196 5204
diff --git a/src/w32fns.c b/src/w32fns.c
index 61e22e57009..2f01fb52e92 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -5749,7 +5749,7 @@ do_unwind_create_frame (Lisp_Object frame)
5749 unwind_create_frame (frame); 5749 unwind_create_frame (frame);
5750} 5750}
5751 5751
5752static void 5752void
5753w32_default_font_parameter (struct frame *f, Lisp_Object parms) 5753w32_default_font_parameter (struct frame *f, Lisp_Object parms)
5754{ 5754{
5755 struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f); 5755 struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
diff --git a/src/w32term.c b/src/w32term.c
index f515f5604d6..76cf6bd6964 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -7249,7 +7249,8 @@ static struct redisplay_interface w32_redisplay_interface =
7249 w32_draw_window_divider, 7249 w32_draw_window_divider,
7250 w32_shift_glyphs_for_insert, 7250 w32_shift_glyphs_for_insert,
7251 w32_show_hourglass, 7251 w32_show_hourglass,
7252 w32_hide_hourglass 7252 w32_hide_hourglass,
7253 w32_default_font_parameter
7253}; 7254};
7254 7255
7255static void w32_delete_terminal (struct terminal *term); 7256static void w32_delete_terminal (struct terminal *term);
diff --git a/src/w32term.h b/src/w32term.h
index 737764b8942..f8a8a727e8a 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -267,6 +267,10 @@ extern void w32con_show_cursor (void);
267extern const char *w32_get_string_resource (void *v_rdb, 267extern const char *w32_get_string_resource (void *v_rdb,
268 const char *name, 268 const char *name,
269 const char *class); 269 const char *class);
270
271/* w32fns.c */
272extern void w32_default_font_parameter (struct frame* f, Lisp_Object parms);
273
270 274
271#define PIX_TYPE COLORREF 275#define PIX_TYPE COLORREF
272 276
diff --git a/src/xfns.c b/src/xfns.c
index 5758bb7a18c..8de4c8bfd9e 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3555,7 +3555,7 @@ do_unwind_create_frame (Lisp_Object frame)
3555 unwind_create_frame (frame); 3555 unwind_create_frame (frame);
3556} 3556}
3557 3557
3558static void 3558void
3559x_default_font_parameter (struct frame *f, Lisp_Object parms) 3559x_default_font_parameter (struct frame *f, Lisp_Object parms)
3560{ 3560{
3561 struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f); 3561 struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
diff --git a/src/xterm.c b/src/xterm.c
index 5d229e4f524..d7d992c91b2 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -13384,7 +13384,8 @@ static struct redisplay_interface x_redisplay_interface =
13384 x_draw_window_divider, 13384 x_draw_window_divider,
13385 x_shift_glyphs_for_insert, /* Never called; see comment in function. */ 13385 x_shift_glyphs_for_insert, /* Never called; see comment in function. */
13386 x_show_hourglass, 13386 x_show_hourglass,
13387 x_hide_hourglass 13387 x_hide_hourglass,
13388 x_default_font_parameter
13388 }; 13389 };
13389 13390
13390 13391
diff --git a/src/xterm.h b/src/xterm.h
index 51e75890b60..bc10043c54c 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -1056,6 +1056,7 @@ extern void x_real_pos_and_offsets (struct frame *f,
1056 int *xptr, 1056 int *xptr,
1057 int *yptr, 1057 int *yptr,
1058 int *outer_border); 1058 int *outer_border);
1059extern void x_default_font_parameter (struct frame* f, Lisp_Object parms);
1059 1060
1060/* From xrdb.c. */ 1061/* From xrdb.c. */
1061 1062