summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Ivascu <gabrielivascu@gnome.org>2017-11-22 22:35:03 +0200
committerMichael Catanzaro <mcatanzaro@igalia.com>2017-11-27 17:36:55 -0600
commitca8fe4ad39fdd0052f8a383c093994874019f69e (patch)
tree6ea90a45a211a782939bda7ce5769a6bef8e5437
parent763b67f0ede582e05c93f6502856119df9250ac1 (diff)
downloadyelp-ca8fe4ad39fdd0052f8a383c093994874019f69e.tar.gz
WebKit automatically updates font size on DPI change now
This was introduced in WebKitGTK+ 2.19.2. https://bugzilla.gnome.org/show_bug.cgi?id=790728
-rw-r--r--configure.ac2
-rw-r--r--libyelp/yelp-view.c72
2 files changed, 3 insertions, 71 deletions
diff --git a/configure.ac b/configure.ac
index 1486d369..0c592f20 100644
--- a/configure.ac
+++ b/configure.ac
@@ -33,7 +33,7 @@ PKG_CHECK_MODULES(YELP,
libxslt >= 1.1.4
libexslt >= 0.8.1
sqlite3
- webkit2gtk-4.0 >= 2.15.1
+ webkit2gtk-4.0 >= 2.19.2
yelp-xsl >= 3.27.1
])
AC_SUBST([YELP_CFLAGS])
diff --git a/libyelp/yelp-view.c b/libyelp/yelp-view.c
index 6f08ce19..afe22a9a 100644
--- a/libyelp/yelp-view.c
+++ b/libyelp/yelp-view.c
@@ -118,9 +118,6 @@ static void view_load_failed (WebKitWebView *
static void view_load_status_changed (WebKitWebView *view,
WebKitLoadEvent load_event,
gpointer user_data);
-static void gtk_xft_dpi_changed (GtkSettings *gtk_settings,
- GParamSpec *pspec,
- gpointer user_data);
static void yelp_view_register_extensions (void);
static gchar *nautilus_sendto = NULL;
@@ -205,8 +202,6 @@ struct _YelpViewPrivate {
YelpUri *resolve_uri;
gulong uri_resolved;
YelpDocument *document;
- GtkSettings *gtk_settings;
- gulong gtk_xft_dpi_changed;
GCancellable *cancellable;
gulong fonts_changed;
@@ -306,17 +301,6 @@ yelp_view_init (YelpView *view)
priv->prevstate = priv->state = YELP_VIEW_STATE_BLANK;
- /* FIXME: We should use the GtkSettings from the right GdkScreen instead
- * of the the detault one, but we can't get it from here since the view
- * has not been added to any top level GtkWidget yet.
- */
- priv->gtk_settings = gtk_settings_get_default ();
- if (priv->gtk_settings) {
- priv->gtk_xft_dpi_changed =
- g_signal_connect (priv->gtk_settings, "notify::gtk-xft-dpi",
- G_CALLBACK (gtk_xft_dpi_changed), view);
- }
-
priv->resolve_uri_on_policy_decision = TRUE;
g_signal_connect (view, "decide-policy",
G_CALLBACK (view_policy_decision_requested), NULL);
@@ -396,11 +380,6 @@ yelp_view_dispose (GObject *object)
view_clear_load (YELP_VIEW (object));
- if (priv->gtk_xft_dpi_changed > 0) {
- g_signal_handler_disconnect (priv->gtk_settings, priv->gtk_xft_dpi_changed);
- priv->gtk_xft_dpi_changed = 0;
- }
-
if (priv->fonts_changed > 0) {
g_signal_handler_disconnect (yelp_settings_get_default (),
priv->fonts_changed);
@@ -2077,44 +2056,6 @@ view_show_error_page (YelpView *view,
g_free (content_end);
}
-static gdouble
-get_screen_dpi (GdkScreen *screen)
-{
- GtkSettings *settings = NULL;
- gdouble dpi = -1;
- gdouble dp, di;
-
- settings = gtk_settings_get_for_screen (screen);
- if (settings != NULL) {
- gint gtk_xft_dpi = -1;
- g_object_get (settings, "gtk-xft-dpi", &gtk_xft_dpi, NULL);
- dpi = (gtk_xft_dpi != -1) ? gtk_xft_dpi / 1024.0 : -1;
- }
-
- if (dpi != -1)
- return dpi;
-
- dp = hypot (gdk_screen_get_width (screen), gdk_screen_get_height (screen));
- di = hypot (gdk_screen_get_width_mm (screen), gdk_screen_get_height_mm (screen)) / 25.4;
-
- return dp / di;
-}
-
-static guint
-convert_font_size_to_pixels (GtkWidget *widget,
- gdouble font_size)
-{
- GdkScreen *screen;
- gdouble dpi;
-
- /* WebKit2 uses font sizes in pixels */
- screen = gtk_widget_has_screen (widget) ?
- gtk_widget_get_screen (widget) : gdk_screen_get_default ();
- dpi = screen ? get_screen_dpi (screen) : 96;
-
- return font_size / 72.0 * dpi;
-}
-
static void
settings_set_fonts (YelpSettings *settings,
gpointer user_data)
@@ -2132,7 +2073,7 @@ settings_set_fonts (YelpSettings *settings,
g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),
"default-font-family", family,
"sans-serif-font-family", family,
- "default-font-size", convert_font_size_to_pixels (GTK_WIDGET (view), size),
+ "default-font-size", webkit_settings_font_size_to_pixels (size),
NULL);
g_free (family);
@@ -2142,7 +2083,7 @@ settings_set_fonts (YelpSettings *settings,
YELP_SETTINGS_FONT_FIXED);
g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),
"monospace-font-family", family,
- "default-monospace-font-size", convert_font_size_to_pixels (GTK_WIDGET (view), size),
+ "default-monospace-font-size", webkit_settings_font_size_to_pixels (size),
NULL);
g_free (family);
}
@@ -2265,12 +2206,3 @@ uri_resolved (YelpUri *uri,
g_error_free (error);
}
}
-
-static void
-gtk_xft_dpi_changed (GtkSettings *gtk_settings,
- GParamSpec *pspec,
- gpointer user_data)
-{
- YelpSettings *settings = yelp_settings_get_default ();
- settings_set_fonts (settings, user_data);
-}