Title: [109230] trunk/Source/WebKit2
Revision
109230
Author
[email protected]
Date
2012-02-29 10:51:15 -0800 (Wed, 29 Feb 2012)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (109229 => 109230)


--- trunk/Source/WebKit2/ChangeLog	2012-02-29 18:45:14 UTC (rev 109229)
+++ trunk/Source/WebKit2/ChangeLog	2012-02-29 18:51:15 UTC (rev 109230)
@@ -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: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (109229 => 109230)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-02-29 18:45:14 UTC (rev 109229)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-02-29 18:51:15 UTC (rev 109230)
@@ -172,6 +172,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)
@@ -189,8 +205,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)
@@ -1304,8 +1321,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))));
 }
 
 /**
@@ -1367,7 +1384,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");
 }
 
@@ -1385,7 +1405,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: trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp (109229 => 109230)


--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp	2012-02-29 18:45:14 UTC (rev 109229)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp	2012-02-29 18:51:15 UTC (rev 109230)
@@ -445,6 +445,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