Changeset 109230 in webkit


Ignore:
Timestamp:
Feb 29, 2012 10:51:15 AM (12 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Use text or page zoom factor in WebKitWebView depending on zoom-text-only
https://bugs.webkit.org/show_bug.cgi?id=75252

Reviewed by Gustavo Noronha Silva.

  • UIProcess/API/gtk/WebKitWebView.cpp:

(zoomTextOnlyChanged): Update text/page zoom factor when
zoom-text-only setting changes.
(webkitWebViewSetSettings): Helper function to set the settings
object for the web view, initializing the settings for the page
and connecting to notify::zoom-text-only signal.
(webkitWebViewConstructed): Use webkitWebViewSetSettings().
(webkit_web_view_set_settings): Use webkitWebViewSetSettings() and
disconnect from the notify::zoom-text-only signal of the previous
settings object.
(webkit_web_view_set_zoom_level): Set text/page zoom factor
depending on WebKitSettings:zoom-text-only property.
(webkit_web_view_get_zoom_level): Get text/page zoom factor
depending on WebKitSettings:zoom-text-only property.

  • UIProcess/API/gtk/tests/TestWebKitWebView.cpp:

(testWebViewZoomLevel):

Location:
trunk/Source/WebKit2
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r109229 r109230  
     12012-02-29  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Use text or page zoom factor in WebKitWebView depending on zoom-text-only
     4        https://bugs.webkit.org/show_bug.cgi?id=75252
     5
     6        Reviewed by Gustavo Noronha Silva.
     7
     8        * UIProcess/API/gtk/WebKitWebView.cpp:
     9        (zoomTextOnlyChanged): Update text/page zoom factor when
     10        zoom-text-only setting changes.
     11        (webkitWebViewSetSettings): Helper function to set the settings
     12        object for the web view, initializing the settings for the page
     13        and connecting to notify::zoom-text-only signal.
     14        (webkitWebViewConstructed): Use webkitWebViewSetSettings().
     15        (webkit_web_view_set_settings): Use webkitWebViewSetSettings() and
     16        disconnect from the notify::zoom-text-only signal of the previous
     17        settings object.
     18        (webkit_web_view_set_zoom_level): Set text/page zoom factor
     19        depending on WebKitSettings:zoom-text-only property.
     20        (webkit_web_view_get_zoom_level): Get text/page zoom factor
     21        depending on WebKitSettings:zoom-text-only property.
     22        * UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
     23        (testWebViewZoomLevel):
     24
    1252012-02-29  Carlos Garcia Campos  <cgarcia@igalia.com>
    226
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp

    r109222 r109230  
    173173}
    174174
     175static void zoomTextOnlyChanged(WebKitSettings* settings, GParamSpec*, WebKitWebView* webView)
     176{
     177    WKPageRef wkPage = toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView)));
     178    gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(settings);
     179    gdouble pageZoomLevel = zoomTextOnly ? 1 : WKPageGetTextZoomFactor(wkPage);
     180    gdouble textZoomLevel = zoomTextOnly ? WKPageGetPageZoomFactor(wkPage) : 1;
     181    WKPageSetPageAndTextZoomFactors(wkPage, pageZoomLevel, textZoomLevel);
     182}
     183
     184static void webkitWebViewSetSettings(WebKitWebView* webView, WebKitSettings* settings, WKPageRef wkPage)
     185{
     186    webView->priv->settings = settings;
     187    webkitSettingsAttachSettingsToPage(webView->priv->settings.get(), wkPage);
     188    g_signal_connect(settings, "notify::zoom-text-only", G_CALLBACK(zoomTextOnlyChanged), webView);
     189}
     190
    175191static void webkitWebViewConstructed(GObject* object)
    176192{
     
    190206    WebPageProxy* page = webkitWebViewBaseGetPage(webViewBase);
    191207    priv->backForwardList = adoptGRef(webkitBackForwardListCreate(WKPageGetBackForwardList(toAPI(page))));
    192     priv->settings = adoptGRef(webkit_settings_new());
    193     webkitSettingsAttachSettingsToPage(priv->settings.get(), toAPI(page));
     208
     209    GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new());
     210    webkitWebViewSetSettings(webView, settings.get(), toAPI(page));
    194211}
    195212
     
    13051322        return;
    13061323
    1307     webView->priv->settings = settings;
    1308     webkitSettingsAttachSettingsToPage(settings, toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView))));
     1324    g_signal_handlers_disconnect_by_func(webView->priv->settings.get(), reinterpret_cast<gpointer>(zoomTextOnlyChanged), webView);
     1325    webkitWebViewSetSettings(webView, settings, toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView))));
    13091326}
    13101327
     
    13681385        return;
    13691386
    1370     WKPageSetPageZoomFactor(wkPage, zoomLevel);
     1387    if (webkit_settings_get_zoom_text_only(webView->priv->settings.get()))
     1388        WKPageSetTextZoomFactor(wkPage, zoomLevel);
     1389    else
     1390        WKPageSetPageZoomFactor(wkPage, zoomLevel);
    13711391    g_object_notify(G_OBJECT(webView), "zoom-level");
    13721392}
     
    13861406
    13871407    WKPageRef wkPage = toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView)));
    1388     return WKPageGetPageZoomFactor(wkPage);
     1408    gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(webView->priv->settings.get());
     1409    return zoomTextOnly ? WKPageGetTextZoomFactor(wkPage) : WKPageGetPageZoomFactor(wkPage);
    13891410}
    13901411
  • trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp

    r109120 r109230  
    446446    webkit_web_view_set_zoom_level(test->m_webView, 2.5);
    447447    g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 2.5);
     448
     449    webkit_settings_set_zoom_text_only(webkit_web_view_get_settings(test->m_webView), TRUE);
     450    // The zoom level shouldn't change when zoom-text-only setting changes.
     451    g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 2.5);
    448452}
    449453
Note: See TracChangeset for help on using the changeset viewer.