Title: [271354] trunk/Source/WebKit
Revision
271354
Author
[email protected]
Date
2021-01-11 00:43:55 -0800 (Mon, 11 Jan 2021)

Log Message

[GTK] System font scaling not applied to 'font-size: XXXpt'
https://bugs.webkit.org/show_bug.cgi?id=218450

Reviewed by Žan Doberšek.

Apply the text scale factor as WebPageProxy text zoom factor, instead of changing the default font size in
settings that only applies to default fonts and it was incorrectly calculated.

* UIProcess/API/glib/WebKitSettings.cpp:
(webKitSettingsDispose):
(webKitSettingsConstructed):
* UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewConstructed):
(webkitWebViewDispose):
(webkit_web_view_set_zoom_level):
(webkit_web_view_get_zoom_level):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (271353 => 271354)


--- trunk/Source/WebKit/ChangeLog	2021-01-11 08:35:41 UTC (rev 271353)
+++ trunk/Source/WebKit/ChangeLog	2021-01-11 08:43:55 UTC (rev 271354)
@@ -1,3 +1,22 @@
+2021-01-11  Carlos Garcia Campos  <[email protected]>
+
+        [GTK] System font scaling not applied to 'font-size: XXXpt'
+        https://bugs.webkit.org/show_bug.cgi?id=218450
+
+        Reviewed by Žan Doberšek.
+
+        Apply the text scale factor as WebPageProxy text zoom factor, instead of changing the default font size in
+        settings that only applies to default fonts and it was incorrectly calculated.
+
+        * UIProcess/API/glib/WebKitSettings.cpp:
+        (webKitSettingsDispose):
+        (webKitSettingsConstructed):
+        * UIProcess/API/glib/WebKitWebView.cpp:
+        (webkitWebViewConstructed):
+        (webkitWebViewDispose):
+        (webkit_web_view_set_zoom_level):
+        (webkit_web_view_get_zoom_level):
+
 2021-01-08  Commit Queue  <[email protected]>
 
         Unreviewed, reverting r271331.

Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp (271353 => 271354)


--- trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp	2021-01-11 08:35:41 UTC (rev 271353)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp	2021-01-11 08:43:55 UTC (rev 271354)
@@ -82,7 +82,6 @@
     CString mediaContentTypesRequiringHardwareSupport;
     bool allowModalDialogs { false };
     bool zoomTextOnly { false };
-    double screenDpi { 96 };
 #if PLATFORM(GTK)
     bool enableBackForwardNavigationGestures { false };
 #endif
@@ -177,7 +176,6 @@
 
 static void webKitSettingsDispose(GObject* object)
 {
-    WebCore::setScreenDPIObserverHandler(nullptr, object);
     G_OBJECT_CLASS(webkit_settings_parent_class)->dispose(object);
 }
 
@@ -192,23 +190,6 @@
     bool mediaStreamEnabled = prefs->mediaStreamEnabled();
     prefs->setMediaDevicesEnabled(mediaStreamEnabled);
     prefs->setPeerConnectionEnabled(mediaStreamEnabled);
-
-    settings->priv->screenDpi = WebCore::screenDPI();
-    WebCore::setScreenDPIObserverHandler([settings]() {
-        auto newScreenDpi = WebCore::screenDPI();
-        if (newScreenDpi == settings->priv->screenDpi)
-            return;
-
-        auto scalingFactor = newScreenDpi / settings->priv->screenDpi;
-        auto fontSize = settings->priv->preferences->defaultFontSize();
-        auto monospaceFontSize = settings->priv->preferences->defaultFixedFontSize();
-        settings->priv->screenDpi = newScreenDpi;
-
-        g_object_freeze_notify(G_OBJECT(settings));
-        webkit_settings_set_default_font_size(settings, std::round(fontSize * scalingFactor));
-        webkit_settings_set_default_monospace_font_size(settings, std::round(monospaceFontSize * scalingFactor));
-        g_object_thaw_notify(G_OBJECT(settings));
-    }, object);
 }
 
 static void webKitSettingsSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)

Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (271353 => 271354)


--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp	2021-01-11 08:35:41 UTC (rev 271353)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp	2021-01-11 08:43:55 UTC (rev 271354)
@@ -73,6 +73,7 @@
 #include <WebCore/CertificateInfo.h>
 #include <WebCore/GUniquePtrSoup.h>
 #include <WebCore/JSDOMExceptionHandling.h>
+#include <WebCore/PlatformScreen.h>
 #include <WebCore/RefPtrCairo.h>
 #include <WebCore/URLSoup.h>
 #include <glib/gi18n-lib.h>
@@ -306,6 +307,8 @@
 
     GRefPtr<WebKitWebsiteDataManager> websiteDataManager;
     GRefPtr<WebKitWebsitePolicies> websitePolicies;
+
+    double textScaleFactor;
 };
 
 static guint signals[LAST_SIGNAL] = { 0, };
@@ -796,6 +799,15 @@
 
     priv->backForwardList = adoptGRef(webkitBackForwardListCreate(&getPage(webView).backForwardList()));
     priv->windowProperties = adoptGRef(webkitWindowPropertiesCreate());
+
+    priv->textScaleFactor = WebCore::screenDPI() / 96.;
+    getPage(webView).setTextZoomFactor(priv->textScaleFactor);
+    WebCore::setScreenDPIObserverHandler([webView] {
+        auto& page = getPage(webView);
+        auto zoomFactor = page.textZoomFactor() / webView->priv->textScaleFactor;
+        webView->priv->textScaleFactor = WebCore::screenDPI() / 96.;
+        page.setTextZoomFactor(zoomFactor * webView->priv->textScaleFactor);
+    }, webView);
 }
 
 static void webkitWebViewSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)
@@ -954,6 +966,8 @@
     webView->priv->view->close();
 #endif
 
+    WebCore::setScreenDPIObserverHandler(nullptr, webView);
+
     G_OBJECT_CLASS(webkit_web_view_parent_class)->dispose(object);
 }
 
@@ -3603,7 +3617,7 @@
 
     auto& page = getPage(webView);
     if (webkit_settings_get_zoom_text_only(webView->priv->settings.get()))
-        page.setTextZoomFactor(zoomLevel);
+        page.setTextZoomFactor(zoomLevel * webView->priv->textScaleFactor);
     else
         page.setPageZoomFactor(zoomLevel);
     g_object_notify(G_OBJECT(webView), "zoom-level");
@@ -3624,7 +3638,7 @@
 
     auto& page = getPage(webView);
     gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(webView->priv->settings.get());
-    return zoomTextOnly ? page.textZoomFactor() : page.pageZoomFactor();
+    return zoomTextOnly ? page.textZoomFactor() / webView->priv->textScaleFactor : page.pageZoomFactor();
 }
 
 /**
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to