⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 271354 in webkit


Ignore:
Timestamp:
Jan 11, 2021, 12:43:55 AM (6 years ago)
Author:
Carlos Garcia Campos
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):

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r271333 r271354  
     12021-01-11  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] System font scaling not applied to 'font-size: XXXpt'
     4        https://bugs.webkit.org/show_bug.cgi?id=218450
     5
     6        Reviewed by Žan Doberšek.
     7
     8        Apply the text scale factor as WebPageProxy text zoom factor, instead of changing the default font size in
     9        settings that only applies to default fonts and it was incorrectly calculated.
     10
     11        * UIProcess/API/glib/WebKitSettings.cpp:
     12        (webKitSettingsDispose):
     13        (webKitSettingsConstructed):
     14        * UIProcess/API/glib/WebKitWebView.cpp:
     15        (webkitWebViewConstructed):
     16        (webkitWebViewDispose):
     17        (webkit_web_view_set_zoom_level):
     18        (webkit_web_view_get_zoom_level):
     19
    1202021-01-08  Commit Queue  <commit-queue@webkit.org>
    221
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp

    r269723 r271354  
    8383    bool allowModalDialogs { false };
    8484    bool zoomTextOnly { false };
    85     double screenDpi { 96 };
    8685#if PLATFORM(GTK)
    8786    bool enableBackForwardNavigationGestures { false };
    … …  
    178177static void webKitSettingsDispose(GObject* object)
    179178{
    180     WebCore::setScreenDPIObserverHandler(nullptr, object);
    181179    G_OBJECT_CLASS(webkit_settings_parent_class)->dispose(object);
    182180}
    … …  
    193191    prefs->setMediaDevicesEnabled(mediaStreamEnabled);
    194192    prefs->setPeerConnectionEnabled(mediaStreamEnabled);
    195 
    196     settings->priv->screenDpi = WebCore::screenDPI();
    197     WebCore::setScreenDPIObserverHandler([settings]() {
    198         auto newScreenDpi = WebCore::screenDPI();
    199         if (newScreenDpi == settings->priv->screenDpi)
    200             return;
    201 
    202         auto scalingFactor = newScreenDpi / settings->priv->screenDpi;
    203         auto fontSize = settings->priv->preferences->defaultFontSize();
    204         auto monospaceFontSize = settings->priv->preferences->defaultFixedFontSize();
    205         settings->priv->screenDpi = newScreenDpi;
    206 
    207         g_object_freeze_notify(G_OBJECT(settings));
    208         webkit_settings_set_default_font_size(settings, std::round(fontSize * scalingFactor));
    209         webkit_settings_set_default_monospace_font_size(settings, std::round(monospaceFontSize * scalingFactor));
    210         g_object_thaw_notify(G_OBJECT(settings));
    211     }, object);
    212193}
    213194
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp

    r271162 r271354  
    7474#include <WebCore/GUniquePtrSoup.h>
    7575#include <WebCore/JSDOMExceptionHandling.h>
     76#include <WebCore/PlatformScreen.h>
    7677#include <WebCore/RefPtrCairo.h>
    7778#include <WebCore/URLSoup.h>
    … …  
    307308    GRefPtr<WebKitWebsiteDataManager> websiteDataManager;
    308309    GRefPtr<WebKitWebsitePolicies> websitePolicies;
     310
     311    double textScaleFactor;
    309312};
    310313
    … …  
    797800    priv->backForwardList = adoptGRef(webkitBackForwardListCreate(&getPage(webView).backForwardList()));
    798801    priv->windowProperties = adoptGRef(webkitWindowPropertiesCreate());
     802
     803    priv->textScaleFactor = WebCore::screenDPI() / 96.;
     804    getPage(webView).setTextZoomFactor(priv->textScaleFactor);
     805    WebCore::setScreenDPIObserverHandler([webView] {
     806        auto& page = getPage(webView);
     807        auto zoomFactor = page.textZoomFactor() / webView->priv->textScaleFactor;
     808        webView->priv->textScaleFactor = WebCore::screenDPI() / 96.;
     809        page.setTextZoomFactor(zoomFactor * webView->priv->textScaleFactor);
     810    }, webView);
    799811}
    800812
    … …  
    955967#endif
    956968
     969    WebCore::setScreenDPIObserverHandler(nullptr, webView);
     970
    957971    G_OBJECT_CLASS(webkit_web_view_parent_class)->dispose(object);
    958972}
    … …  
    36043618    auto& page = getPage(webView);
    36053619    if (webkit_settings_get_zoom_text_only(webView->priv->settings.get()))
    3606         page.setTextZoomFactor(zoomLevel);
     3620        page.setTextZoomFactor(zoomLevel * webView->priv->textScaleFactor);
    36073621    else
    36083622        page.setPageZoomFactor(zoomLevel);
    … …  
    36253639    auto& page = getPage(webView);
    36263640    gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(webView->priv->settings.get());
    3627     return zoomTextOnly ? page.textZoomFactor() : page.pageZoomFactor();
     3641    return zoomTextOnly ? page.textZoomFactor() / webView->priv->textScaleFactor : page.pageZoomFactor();
    36283642}
    36293643
Note: See TracChangeset for help on using the changeset viewer.