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