Title: [145185] trunk/Source/WebKit2
Revision
145185
Author
commit-qu...@webkit.org
Date
2013-03-07 23:30:02 -0800 (Thu, 07 Mar 2013)

Log Message

[EFL] EwkView should keep css position instead of scroll position in device pixel.
https://bugs.webkit.org/show_bug.cgi?id=110847

Patch by Huang Dongsung <luxte...@company100.net> on 2013-03-07
Reviewed by Kenneth Rohde Christiansen.

Signed off for WebKit2 by Benjamin Poulain.

There are bugs that some code expect that EwkView::pagePosition() returns css
position while others expect that it returns scroll position in device pixel.
In addition, some code call EwkView::setPagePosition() with css position while
others call it with scroll position in device pixel.

This patch makes all code use setPagePosition() and pagePosition() with
UI pixels (a.k.a Density Independent Pixel).

* UIProcess/efl/PageViewportControllerClientEfl.cpp:
(WebKit::PageViewportControllerClientEfl::setViewportPosition):
* UIProcess/efl/WebView.cpp:
(WebKit::WebView::paintToCairoSurface):
(WebKit::WebView::updateViewportSize):
(WebKit::WebView::transformToScene):
(WebKit::WebView::pageDidRequestScroll):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (145184 => 145185)


--- trunk/Source/WebKit2/ChangeLog	2013-03-08 07:17:30 UTC (rev 145184)
+++ trunk/Source/WebKit2/ChangeLog	2013-03-08 07:30:02 UTC (rev 145185)
@@ -1,3 +1,28 @@
+2013-03-07  Huang Dongsung  <luxte...@company100.net>
+
+        [EFL] EwkView should keep css position instead of scroll position in device pixel.
+        https://bugs.webkit.org/show_bug.cgi?id=110847
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Signed off for WebKit2 by Benjamin Poulain.
+
+        There are bugs that some code expect that EwkView::pagePosition() returns css
+        position while others expect that it returns scroll position in device pixel.
+        In addition, some code call EwkView::setPagePosition() with css position while
+        others call it with scroll position in device pixel.
+
+        This patch makes all code use setPagePosition() and pagePosition() with
+        UI pixels (a.k.a Density Independent Pixel).
+
+        * UIProcess/efl/PageViewportControllerClientEfl.cpp:
+        (WebKit::PageViewportControllerClientEfl::setViewportPosition):
+        * UIProcess/efl/WebView.cpp:
+        (WebKit::WebView::paintToCairoSurface):
+        (WebKit::WebView::updateViewportSize):
+        (WebKit::WebView::transformToScene):
+        (WebKit::WebView::pageDidRequestScroll):
+
 2013-03-07  Alexey Proskuryakov  <a...@apple.com>
 
         https://bugs.webkit.org/show_bug.cgi?id=111801

Modified: trunk/Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp (145184 => 145185)


--- trunk/Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp	2013-03-08 07:17:30 UTC (rev 145184)
+++ trunk/Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp	2013-03-08 07:30:02 UTC (rev 145185)
@@ -52,7 +52,6 @@
 
     FloatPoint pos(contentsPoint);
     pos.scale(m_view->pageScaleFactor(), m_view->pageScaleFactor());
-    pos.scale(m_view->deviceScaleFactor(), m_view->deviceScaleFactor());
     m_view->setPagePosition(pos);
 
     m_controller->didChangeContentsVisibility(m_contentPosition, m_view->pageScaleFactor());

Modified: trunk/Source/WebKit2/UIProcess/efl/WebView.cpp (145184 => 145185)


--- trunk/Source/WebKit2/UIProcess/efl/WebView.cpp	2013-03-08 07:17:30 UTC (rev 145184)
+++ trunk/Source/WebKit2/UIProcess/efl/WebView.cpp	2013-03-08 07:30:02 UTC (rev 145185)
@@ -117,7 +117,7 @@
     const FloatPoint& pagePosition = m_ewkView->pagePosition();
     double effectiveScale = m_page->deviceScaleFactor() * m_ewkView->pageScaleFactor();
 
-    cairo_matrix_t transform = { effectiveScale, 0, 0, effectiveScale, - pagePosition.x(), - pagePosition.y() };
+    cairo_matrix_t transform = { effectiveScale, 0, 0, effectiveScale, -pagePosition.x() * m_page->deviceScaleFactor(), -pagePosition.y() * m_page->deviceScaleFactor() };
     cairo_set_matrix(context.cr(), &transform);
 
     scene->paintToGraphicsContext(&context);
@@ -200,7 +200,9 @@
         m_ewkView->pageViewportController()->didChangeViewportSize(m_ewkView->size());
         return;
     }
-    m_page->drawingArea()->setVisibleContentsRect(FloatRect(m_ewkView->pagePosition(), m_ewkView->size()), FloatPoint());
+    FloatPoint uiPosition(m_ewkView->pagePosition());
+    uiPosition.scale(1 / m_ewkView->pageScaleFactor(), 1 / m_ewkView->pageScaleFactor());
+    m_page->drawingArea()->setVisibleContentsRect(FloatRect(uiPosition, m_ewkView->size()), FloatPoint());
 }
 
 void WebView::didChangeContentsSize(const WebCore::IntSize& size)
@@ -218,8 +220,8 @@
     TransformationMatrix transform = m_userViewportTransform;
 
     const FloatPoint& pagePosition = m_ewkView->pagePosition();
+    transform.scale(m_page->deviceScaleFactor());
     transform.translate(-pagePosition.x(), -pagePosition.y());
-    transform.scale(m_page->deviceScaleFactor());
     transform.scale(m_ewkView->pageScaleFactor());
 
     return transform.toAffineTransform();
@@ -493,7 +495,9 @@
         m_ewkView->pageViewportController()->pageDidRequestScroll(position);
         return;
     }
-    m_ewkView->setPagePosition(FloatPoint(position));
+    FloatPoint uiPosition(position);
+    uiPosition.scale(m_ewkView->pageScaleFactor(), m_ewkView->pageScaleFactor());
+    m_ewkView->setPagePosition(uiPosition);
     m_ewkView->scheduleUpdateDisplay();
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to