aboutsummaryrefslogtreecommitdiffstats
path: root/src/xsettings.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xsettings.c')
-rw-r--r--src/xsettings.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/xsettings.c b/src/xsettings.c
index d7af68f1c5f..10afd7d15c8 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -667,8 +667,23 @@ apply_xft_settings (struct x_display_info *dpyinfo,
667 } 667 }
668#endif 668#endif
669 669
670 if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi 670 if ((settings->seen & SEEN_DPI) != 0
671 && settings->dpi > 0) 671 && settings->dpi > 0
672 /* The following conjunct avoids setting `changed' to true when
673 old and new dpi settings do not differ "substantially".
674 Otherwise, the dynamic-setting Elisp code may process all sorts
675 of unrelated settings that override users' font customizations,
676 among others. Compare:
677
678 http://lists.gnu.org/archive/html/emacs-devel/2016-05/msg00557.html
679 http://lists.gnu.org/archive/html/bug-gnu-emacs/2016-12/msg00820.html
680
681 As soon as the dynamic-settings code has been tested and
682 verified, this Emacs 25.2 workaround should be removed. */
683 && ((oldsettings.dpi >= settings->dpi
684 && (oldsettings.dpi - settings->dpi) > 2)
685 || ((settings->dpi > oldsettings.dpi)
686 && (settings->dpi - oldsettings.dpi) > 2)))
672 { 687 {
673 FcPatternDel (pat, FC_DPI); 688 FcPatternDel (pat, FC_DPI);
674 FcPatternAddDouble (pat, FC_DPI, settings->dpi); 689 FcPatternAddDouble (pat, FC_DPI, settings->dpi);