aboutsummaryrefslogtreecommitdiffstats
path: root/src/frame.c
diff options
context:
space:
mode:
authorRobert Pluim2020-03-16 17:21:02 +0100
committerRobert Pluim2020-03-17 16:58:09 +0100
commit5747a59a886e16fadbd04c385c43628b1d8f50df (patch)
tree0bc7cffa4d127fa213af9b13d7c050cc2c8e7b1b /src/frame.c
parenta2dd8c4234c9a858e273ea22129962cee58fa4ce (diff)
downloademacs-5747a59a886e16fadbd04c385c43628b1d8f50df.tar.gz
emacs-5747a59a886e16fadbd04c385c43628b1d8f50df.zip
Recalculate default font when switching font backend
This is an updated version of the patch by Dmitry Antipov <dmantipov@yandex.ru> in <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23386#43>. Fixes Bug#23386 * src/dispextern.h (struct redisplay_interface): New member default_font_parameter. * src/xterm.h: Add prototype for x_default_font_parameter. * src/xterm.c (x_redisplay_interface): Initialize default_font_parameter member. * src/xfns.c (x_default_font_parameter): Make non-static. * src/w32term.h: Add prototype for w32_default_font_parameter * src/w32fns.c (w32_default_font_parameter): Make non-static. * src/w32term.c (w32_redisplay_interface): Initialize default_font_parameter member. * src/nsterm.m (ns_redisplay_interface): Add dummy ns_default_font_parameter (there is currently only one possible font backend on macOS). Initialize default_font_parameter member. * src/frame.c (gui_set_font_backend): Recalculate default font using RIF default_font_parameter to avoid crash when changing font backend.
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/frame.c b/src/frame.c
index 88d6f22fc0a..ecf175f4f99 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 }