Fix detection of DPI changes in builds without Xft
* src/xsettings.c (apply_xft_settings) [!HAVE_XFT]: Support XSETTINGS changes in non-XFT builds. (Bug#43128) Copyright-paperwork-exempt: yes
This commit is contained in:
parent
e953490603
commit
52d4c98cec
1 changed files with 17 additions and 2 deletions
|
@ -804,16 +804,28 @@ static void
|
|||
apply_xft_settings (Display_Info *dpyinfo,
|
||||
struct xsettings *settings)
|
||||
{
|
||||
#ifdef HAVE_XFT
|
||||
#if defined USE_CAIRO || defined HAVE_XFT
|
||||
FcPattern *pat;
|
||||
struct xsettings oldsettings;
|
||||
bool changed = false;
|
||||
#ifndef HAVE_XFT
|
||||
cairo_font_options_t *options;
|
||||
#endif
|
||||
|
||||
|
||||
memset (&oldsettings, 0, sizeof (oldsettings));
|
||||
pat = FcPatternCreate ();
|
||||
#ifdef HAVE_XFT
|
||||
XftDefaultSubstitute (dpyinfo->display,
|
||||
XScreenNumberOfScreen (dpyinfo->screen),
|
||||
pat);
|
||||
#else
|
||||
FcConfigSubstitute (NULL, pat, FcMatchPattern);
|
||||
options = cairo_font_options_create ();
|
||||
cairo_ft_font_options_substitute (options, pat);
|
||||
cairo_font_options_destroy (options);
|
||||
FcDefaultSubstitute (pat);
|
||||
#endif
|
||||
FcPatternGetBool (pat, FC_ANTIALIAS, 0, &oldsettings.aa);
|
||||
FcPatternGetBool (pat, FC_HINTING, 0, &oldsettings.hinting);
|
||||
#ifdef FC_HINT_STYLE
|
||||
|
@ -912,8 +924,11 @@ apply_xft_settings (Display_Info *dpyinfo,
|
|||
- sizeof "%f")
|
||||
};
|
||||
char buf[sizeof format + d_formats * d_growth + lf_formats * lf_growth];
|
||||
|
||||
#ifdef HAVE_XFT
|
||||
XftDefaultSet (dpyinfo->display, pat);
|
||||
#else
|
||||
FcPatternDestroy (pat);
|
||||
#endif
|
||||
store_config_changed_event (Qfont_render,
|
||||
XCAR (dpyinfo->name_list_element));
|
||||
Vxft_settings
|
||||
|
|
Loading…
Add table
Reference in a new issue