Title: [109341] releases/WebKitGTK/webkit-1.8/Source/WebKit2

Diff

Modified: releases/WebKitGTK/webkit-1.8/Source/WebKit2/ChangeLog (109340 => 109341)


--- releases/WebKitGTK/webkit-1.8/Source/WebKit2/ChangeLog	2012-03-01 13:44:44 UTC (rev 109340)
+++ releases/WebKitGTK/webkit-1.8/Source/WebKit2/ChangeLog	2012-03-01 13:56:47 UTC (rev 109341)
@@ -1,5 +1,29 @@
 2012-02-29  Carlos Garcia Campos  <[email protected]>
 
+        [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):
+
+2012-02-29  Carlos Garcia Campos  <[email protected]>
+
         [GTK] Add zoom-text-only setting to WebKit2 GTK+ API
         https://bugs.webkit.org/show_bug.cgi?id=75249
 

Modified: releases/WebKitGTK/webkit-1.8/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (109340 => 109341)


--- releases/WebKitGTK/webkit-1.8/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-03-01 13:44:44 UTC (rev 109340)
+++ releases/WebKitGTK/webkit-1.8/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-03-01 13:56:47 UTC (rev 109341)
@@ -165,6 +165,22 @@
     return TRUE;
 }
 
+static void zoomTextOnlyChanged(WebKitSettings* settings, GParamSpec*, WebKitWebView* webView)
+{
+    WKPageRef wkPage = toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView)));
+    gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(settings);
+    gdouble pageZoomLevel = zoomTextOnly ? 1 : WKPageGetTextZoomFactor(wkPage);
+    gdouble textZoomLevel = zoomTextOnly ? WKPageGetPageZoomFactor(wkPage) : 1;
+    WKPageSetPageAndTextZoomFactors(wkPage, pageZoomLevel, textZoomLevel);
+}
+
+static void webkitWebViewSetSettings(WebKitWebView* webView, WebKitSettings* settings, WKPageRef wkPage)
+{
+    webView->priv->settings = settings;
+    webkitSettingsAttachSettingsToPage(webView->priv->settings.get(), wkPage);
+    g_signal_connect(settings, "notify::zoom-text-only", G_CALLBACK(zoomTextOnlyChanged), webView);
+}
+
 static void webkitWebViewConstructed(GObject* object)
 {
     if (G_OBJECT_CLASS(webkit_web_view_parent_class)->constructed)
@@ -182,8 +198,9 @@
 
     WebPageProxy* page = webkitWebViewBaseGetPage(webViewBase);
     priv->backForwardList = adoptGRef(webkitBackForwardListCreate(WKPageGetBackForwardList(toAPI(page))));
-    priv->settings = adoptGRef(webkit_settings_new());
-    webkitSettingsAttachSettingsToPage(priv->settings.get(), toAPI(page));
+
+    GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new());
+    webkitWebViewSetSettings(webView, settings.get(), toAPI(page));
 }
 
 static void webkitWebViewSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)
@@ -1281,8 +1298,8 @@
     if (webView->priv->settings == settings)
         return;
 
-    webView->priv->settings = settings;
-    webkitSettingsAttachSettingsToPage(settings, toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView))));
+    g_signal_handlers_disconnect_by_func(webView->priv->settings.get(), reinterpret_cast<gpointer>(zoomTextOnlyChanged), webView);
+    webkitWebViewSetSettings(webView, settings, toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView))));
 }
 
 /**
@@ -1344,7 +1361,10 @@
     if (WKPageGetPageZoomFactor(wkPage) == zoomLevel)
         return;
 
-    WKPageSetPageZoomFactor(wkPage, zoomLevel);
+    if (webkit_settings_get_zoom_text_only(webView->priv->settings.get()))
+        WKPageSetTextZoomFactor(wkPage, zoomLevel);
+    else
+        WKPageSetPageZoomFactor(wkPage, zoomLevel);
     g_object_notify(G_OBJECT(webView), "zoom-level");
 }
 
@@ -1362,7 +1382,8 @@
     g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 1);
 
     WKPageRef wkPage = toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView)));
-    return WKPageGetPageZoomFactor(wkPage);
+    gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(webView->priv->settings.get());
+    return zoomTextOnly ? WKPageGetTextZoomFactor(wkPage) : WKPageGetPageZoomFactor(wkPage);
 }
 
 static void didValidateCommand(WKStringRef command, bool isEnabled, int32_t state, WKErrorRef, void* context)

Modified: releases/WebKitGTK/webkit-1.8/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp (109340 => 109341)


--- releases/WebKitGTK/webkit-1.8/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp	2012-03-01 13:44:44 UTC (rev 109340)
+++ releases/WebKitGTK/webkit-1.8/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp	2012-03-01 13:56:47 UTC (rev 109341)
@@ -447,6 +447,10 @@
     g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 1);
     webkit_web_view_set_zoom_level(test->m_webView, 2.5);
     g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 2.5);
+
+    webkit_settings_set_zoom_text_only(webkit_web_view_get_settings(test->m_webView), TRUE);
+    // The zoom level shouldn't change when zoom-text-only setting changes.
+    g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 2.5);
 }
 
 void beforeAll()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to