aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorColomban Wendling <ban@herbesfolles.org>2016-09-06 19:56:17 +0200
committerColomban Wendling <ban@herbesfolles.org>2016-09-06 19:56:17 +0200
commitecd3c53ab68973a889dbc9ab1df7eb4b1cf2e9b9 (patch)
tree12e0487f1e36dd4f8ac3dbeac67cf4b7a787c56a
parent37416ee51790376c6152486eff97075b17963b3d (diff)
downloadscintilla-mirror-ecd3c53ab68973a889dbc9ab1df7eb4b1cf2e9b9.tar.gz
GTK: Fix autoc font size on GTK >= 3.21.0
GTK 3.21.0 fixed font size handling, leading to properly interpreting pixels and points in CSS declarations. However, as older versions incorrectly handled those, the code has to handle both behaviours. From CSS, GTK < 3.21.0 actually applied the conversion to points, but incorrectly: 10px was used as 10pt, but 10pt was scaled up twice. So, assuming 96 DPI, it leads to: font-size | 3.20.0 | 3.21.0 | ----------|---------|---------| 10px | 13.33px | 10px | 10pt | 17.77px | 13.33px | So, we need to fix the code to accommodate for both (either scaling ourselves, or adapting the unit: I chose the second, simpler, option). See https://git.gnome.org/browse/gtk+/commit/?id=df08fc91bdc1d2e4c866122304fabe4dd298a7de
-rw-r--r--gtk/PlatGTK.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx
index 74f095bc5..1629818ef 100644
--- a/gtk/PlatGTK.cxx
+++ b/gtk/PlatGTK.cxx
@@ -1494,7 +1494,15 @@ void ListBoxX::SetFont(Font &scint_font) {
ssFontSetting << "font-family: " << pango_font_description_get_family(pfd) << "; ";
ssFontSetting << "font-size:";
ssFontSetting << static_cast<double>(pango_font_description_get_size(pfd)) / PANGO_SCALE;
- ssFontSetting << "px; ";
+ // On GTK < 3.21.0 the units are incorrectly parsed, so a font size in points
+ // need to use the "px" unit. Normally we only get fonts in points here, so
+ // don't bother to handle the case the font is actually in pixels on < 3.21.0.
+ if (gtk_check_version(3, 21, 0) != NULL || // on < 3.21.0
+ pango_font_description_get_size_is_absolute(pfd)) {
+ ssFontSetting << "px; ";
+ } else {
+ ssFontSetting << "pt; ";
+ }
ssFontSetting << "font-weight:"<< pango_font_description_get_weight(pfd) << "; ";
ssFontSetting << "}";
gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(cssProvider),