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;
};