Title: [235529] trunk/Source/WebKit
Revision
235529
Author
[email protected]
Date
2018-08-30 15:55:27 -0700 (Thu, 30 Aug 2018)

Log Message

[GTK] Touchscreen pinch to zoom should scale the page like other platforms
https://bugs.webkit.org/show_bug.cgi?id=188746

Changes the pinch-to-zoom gesture to magnify/scale the page, rather than zooming in. Also resets this magnification when the zoom level is changed.

Patch by Justin Michaud <[email protected]> on 2018-08-30
Reviewed by Michael Catanzaro.

* UIProcess/API/glib/WebKitWebView.cpp:
(webkit_web_view_set_zoom_level):
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::zoom): Deleted.
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::ZoomGesture::handleZoom):
(WebKit::GestureController::ZoomGesture::scaleChanged):
* UIProcess/gtk/GestureController.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (235528 => 235529)


--- trunk/Source/WebKit/ChangeLog	2018-08-30 22:50:33 UTC (rev 235528)
+++ trunk/Source/WebKit/ChangeLog	2018-08-30 22:55:27 UTC (rev 235529)
@@ -1,3 +1,23 @@
+2018-08-30  Justin Michaud  <[email protected]>
+
+        [GTK] Touchscreen pinch to zoom should scale the page like other platforms
+        https://bugs.webkit.org/show_bug.cgi?id=188746
+
+        Changes the pinch-to-zoom gesture to magnify/scale the page, rather than zooming in. Also resets this magnification when the zoom level is changed.
+
+        Reviewed by Michael Catanzaro.
+
+        * UIProcess/API/glib/WebKitWebView.cpp:
+        (webkit_web_view_set_zoom_level):
+        * UIProcess/API/gtk/PageClientImpl.cpp:
+        (WebKit::PageClientImpl::zoom): Deleted.
+        * UIProcess/API/gtk/PageClientImpl.h:
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        * UIProcess/gtk/GestureController.cpp:
+        (WebKit::GestureController::ZoomGesture::handleZoom):
+        (WebKit::GestureController::ZoomGesture::scaleChanged):
+        * UIProcess/gtk/GestureController.h:
+
 2018-08-30  Tim Horton  <[email protected]>
 
         Bundle unified sources more tightly in projects with deep directory structures

Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (235528 => 235529)


--- trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp	2018-08-30 22:50:33 UTC (rev 235528)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp	2018-08-30 22:55:27 UTC (rev 235529)
@@ -3118,6 +3118,7 @@
         return;
 
     auto& page = getPage(webView);
+    page.scalePage(1.0, IntPoint()); // Reset page scale when zoom level is changed
     if (webkit_settings_get_zoom_text_only(webView->priv->settings.get()))
         page.setTextZoomFactor(zoomLevel);
     else

Modified: trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp (235528 => 235529)


--- trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp	2018-08-30 22:50:33 UTC (rev 235528)
+++ trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp	2018-08-30 22:55:27 UTC (rev 235529)
@@ -473,14 +473,4 @@
 }
 #endif
 
-void PageClientImpl::zoom(double zoomLevel)
-{
-    if (WEBKIT_IS_WEB_VIEW(m_viewWidget)) {
-        webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(m_viewWidget), zoomLevel);
-        return;
-    }
-
-    webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(m_viewWidget))->setPageZoomFactor(zoomLevel);
-}
-
 } // namespace WebKit

Modified: trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h (235528 => 235529)


--- trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h	2018-08-30 22:50:33 UTC (rev 235528)
+++ trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h	2018-08-30 22:55:27 UTC (rev 235529)
@@ -53,8 +53,6 @@
 
     GtkWidget* viewWidget() { return m_viewWidget; }
 
-    void zoom(double);
-
 private:
     // PageClient
     std::unique_ptr<DrawingAreaProxy> createDrawingAreaProxy() override;

Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (235528 => 235529)


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2018-08-30 22:50:33 UTC (rev 235528)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2018-08-30 22:55:27 UTC (rev 235529)
@@ -1116,15 +1116,18 @@
 
     void startZoom(const IntPoint& center, double& initialScale, IntPoint& initialPoint) final
     {
-        auto* page = webkitWebViewBaseGetPage(m_webView);
+        auto* page = m_webView->priv->pageProxy.get();
         ASSERT(page);
-        initialScale = page->pageZoomFactor();
+        initialScale = page->pageScaleFactor();
         page->getCenterForZoomGesture(center, initialPoint);
     }
 
-    void zoom(double scale) final
+    void zoom(double scale, const IntPoint& origin) final
     {
-        m_webView->priv->pageClient->zoom(scale);
+        auto* page = m_webView->priv->pageProxy.get();
+        ASSERT(page);
+
+        page->scalePage(scale, origin);
     }
 
     void longPress(GdkEventTouch* event) final

Modified: trunk/Source/WebKit/UIProcess/gtk/GestureController.cpp (235528 => 235529)


--- trunk/Source/WebKit/UIProcess/gtk/GestureController.cpp	2018-08-30 22:50:33 UTC (rev 235528)
+++ trunk/Source/WebKit/UIProcess/gtk/GestureController.cpp	2018-08-30 22:55:27 UTC (rev 235529)
@@ -203,13 +203,20 @@
 
 void GestureController::ZoomGesture::handleZoom()
 {
-    m_client.zoom(m_scale);
+    FloatPoint scaledZoomCenter(m_initialPoint);
+    scaledZoomCenter.scale(m_scale);
+
+    m_client.zoom(m_scale, WebCore::roundedIntPoint(FloatPoint(scaledZoomCenter - m_viewPoint)));
 }
 
 void GestureController::ZoomGesture::scaleChanged(ZoomGesture* zoomGesture, double scale, GtkGesture*)
 {
     zoomGesture->m_scale = zoomGesture->m_initialScale * scale;
+    if (zoomGesture->m_scale < 1.0)
+        zoomGesture->m_scale = 1.0;
+
     zoomGesture->m_viewPoint = zoomGesture->center();
+
     if (zoomGesture->m_idle.isActive())
         return;
 

Modified: trunk/Source/WebKit/UIProcess/gtk/GestureController.h (235528 => 235529)


--- trunk/Source/WebKit/UIProcess/gtk/GestureController.h	2018-08-30 22:50:33 UTC (rev 235528)
+++ trunk/Source/WebKit/UIProcess/gtk/GestureController.h	2018-08-30 22:55:27 UTC (rev 235529)
@@ -51,7 +51,7 @@
     virtual void swipe(GdkEventTouch*, const WebCore::FloatPoint&) = 0;
 
     virtual void startZoom(const WebCore::IntPoint& center, double& initialScale, WebCore::IntPoint& initialPoint) = 0;
-    virtual void zoom(double) = 0;
+    virtual void zoom(double scale, const WebCore::IntPoint& origin) = 0;
 
     virtual void longPress(GdkEventTouch*) = 0;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to