From ed807788ff4c5c444a073f9e730ddbd9b8f302e5 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Wed, 12 Apr 2017 12:41:47 +0000 Subject: Fix for STR#3374: Crash with pango enabled when changing default font git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12218 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx | 3 +++ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src/drivers') diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx index b359069e8..6d6cff681 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx @@ -187,6 +187,9 @@ const char *Fl_Xlib_Graphics_Driver::font_name(int num) { } void Fl_Xlib_Graphics_Driver::font_name(int num, const char *name) { +#if USE_PANGO + init_built_in_fonts(); +#endif Fl_Fontdesc *s = fl_fonts + num; if (s->name) { if (!strcmp(s->name, name)) {s->name = name; return;} diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx index 053bccba4..48771d0a2 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx @@ -1272,7 +1272,8 @@ void Fl_Xlib_Graphics_Driver::text_extents(const char *str, int n, int &dx, int } int Fl_Xlib_Graphics_Driver::height() { - return font_descriptor()->height_; + if (font_descriptor()) return font_descriptor()->height_; + else return -1; } double Fl_Xlib_Graphics_Driver::width(unsigned int c) { @@ -1282,7 +1283,8 @@ double Fl_Xlib_Graphics_Driver::width(unsigned int c) { } int Fl_Xlib_Graphics_Driver::descent() { - return font_descriptor()->descent_; + if (font_descriptor()) return font_descriptor()->descent_; + else return -1; } typedef int (*sort_f_type)(const void *aa, const void *bb); @@ -1327,9 +1329,11 @@ Fl_Font Fl_Xlib_Graphics_Driver::set_fonts(const char* pattern_name) void Fl_Xlib_Graphics_Driver::init_built_in_fonts() { static int i = 0; - while (i < FL_FREE_FONT) { - Fl::set_font((Fl_Font)i, built_in_table[i].name); - i++; + if (!i) { + while (i < FL_FREE_FONT) { + i++; + Fl::set_font((Fl_Font)i-1, built_in_table[i-1].name); + } } } -- cgit v1.2.3