diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dispextern.h | 3 | ||||
| -rw-r--r-- | src/frame.c | 12 | ||||
| -rw-r--r-- | src/nsterm.m | 10 | ||||
| -rw-r--r-- | src/w32fns.c | 2 | ||||
| -rw-r--r-- | src/w32term.c | 3 | ||||
| -rw-r--r-- | src/w32term.h | 4 | ||||
| -rw-r--r-- | src/xfns.c | 2 | ||||
| -rw-r--r-- | src/xterm.c | 3 | ||||
| -rw-r--r-- | src/xterm.h | 1 |
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. */ | ||
| 5161 | static void | ||
| 5162 | ns_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 | ||
| 5752 | static void | 5752 | void |
| 5753 | w32_default_font_parameter (struct frame *f, Lisp_Object parms) | 5753 | w32_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 | ||
| 7255 | static void w32_delete_terminal (struct terminal *term); | 7256 | static 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); | |||
| 267 | extern const char *w32_get_string_resource (void *v_rdb, | 267 | extern 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 */ | ||
| 272 | extern 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 | ||
| 3558 | static void | 3558 | void |
| 3559 | x_default_font_parameter (struct frame *f, Lisp_Object parms) | 3559 | x_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); |
| 1059 | extern void x_default_font_parameter (struct frame* f, Lisp_Object parms); | ||
| 1059 | 1060 | ||
| 1060 | /* From xrdb.c. */ | 1061 | /* From xrdb.c. */ |
| 1061 | 1062 | ||