summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Rudalics <rudalics@gmx.at>2016-12-22 08:35:07 +0100
committerMartin Rudalics <rudalics@gmx.at>2016-12-22 08:35:07 +0100
commit86a297a43d614f11df5a8ec051879ec3af51e679 (patch)
treeaa89e73803920f3164d4507ac914a44c7c75458a
parentcf1f9852d0e8d571dfe74486c26417828faa945a (diff)
downloademacs-86a297a43d614f11df5a8ec051879ec3af51e679.tar.gz
Work around reporting a dpi change in apply_xft_settings
* src/xsettings.c (apply_xft_settings): Don't report a change when dpi settings do not differ substantially.
-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,
}
#endif
- if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi
- && settings->dpi > 0)
+ if ((settings->seen & SEEN_DPI) != 0
+ && settings->dpi > 0
+ /* The following conjunct avoids setting `changed' to true when
+ old and new dpi settings do not differ "substantially".
+ Otherwise, the dynamic-setting Elisp code may process all sorts
+ of unrelated settings that override users' font customizations,
+ among others. Compare:
+
+ http://lists.gnu.org/archive/html/emacs-devel/2016-05/msg00557.html
+ http://lists.gnu.org/archive/html/bug-gnu-emacs/2016-12/msg00820.html
+
+ As soon as the dynamic-settings code has been tested and
+ verified, this Emacs 25.2 workaround should be removed. */
+ && ((oldsettings.dpi >= settings->dpi
+ && (oldsettings.dpi - settings->dpi) > 2)
+ || ((settings->dpi > oldsettings.dpi)
+ && (settings->dpi - oldsettings.dpi) > 2)))
{
FcPatternDel (pat, FC_DPI);
FcPatternAddDouble (pat, FC_DPI, settings->dpi);