Title: [110076] trunk/Source/WebKit/blackberry
Revision
110076
Author
[email protected]
Date
2012-03-07 11:23:44 -0800 (Wed, 07 Mar 2012)

Log Message

[BlackBerry] WebKit rendering problem when show/hide VKB
https://bugs.webkit.org/show_bug.cgi?id=80448
RIM PR: 141727

Patch by Jacky Jiang <[email protected]> on 2012-03-07
Reviewed by Antonio Gomes.

When setting viewport size, layout happens inside
WebPagePrivate::setDefaultLayoutSize(), in this way, the layout is
outside of the code path of "needsLayout" so that the contents are
not rendered into the backing store. This is a regression of r108718,
switch back to do the layout inside the public API
WebPage::setDefaultLayoutSize().

We haven't upstreamed the manual tests directory yet, therefore,
the new manual test case will be upstreamed later.

* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::setDefaultLayoutSize):
(BlackBerry::WebKit::WebPage::setDefaultLayoutSize):

Modified Paths

Diff

Modified: trunk/Source/WebKit/blackberry/Api/WebPage.cpp (110075 => 110076)


--- trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2012-03-07 19:18:09 UTC (rev 110075)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2012-03-07 19:23:44 UTC (rev 110076)
@@ -3378,25 +3378,24 @@
 
 void WebPagePrivate::setDefaultLayoutSize(const IntSize& size)
 {
-    if (size == m_defaultLayoutSize)
-        return;
-
     IntSize screenSize = Platform::Graphics::Screen::primaryScreen()->size();
     ASSERT(size.width() <= screenSize.width() && size.height() <= screenSize.height());
     m_defaultLayoutSize = size.expandedTo(minimumLayoutSize).shrunkTo(screenSize);
-
-    bool needsLayout = setViewMode(viewMode());
-    if (needsLayout) {
-        setNeedsLayout();
-        if (!isLoading())
-            requestLayoutIfNeeded();
-    }
 }
 
 void WebPage::setDefaultLayoutSize(int width, int height)
 {
     IntSize size(width, height);
+    if (size == d->m_defaultLayoutSize)
+        return;
+
     d->setDefaultLayoutSize(size);
+    bool needsLayout = d->setViewMode(d->viewMode());
+    if (needsLayout) {
+        d->setNeedsLayout();
+        if (!d->isLoading())
+            d->requestLayoutIfNeeded();
+    }
 }
 
 bool WebPage::mouseEvent(const Platform::MouseEvent& mouseEvent, bool* wheelDeltaAccepted)

Modified: trunk/Source/WebKit/blackberry/ChangeLog (110075 => 110076)


--- trunk/Source/WebKit/blackberry/ChangeLog	2012-03-07 19:18:09 UTC (rev 110075)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2012-03-07 19:23:44 UTC (rev 110076)
@@ -1,3 +1,25 @@
+2012-03-07  Jacky Jiang  <[email protected]>
+
+        [BlackBerry] WebKit rendering problem when show/hide VKB
+        https://bugs.webkit.org/show_bug.cgi?id=80448
+        RIM PR: 141727
+
+        Reviewed by Antonio Gomes.
+
+        When setting viewport size, layout happens inside
+        WebPagePrivate::setDefaultLayoutSize(), in this way, the layout is
+        outside of the code path of "needsLayout" so that the contents are
+        not rendered into the backing store. This is a regression of r108718,
+        switch back to do the layout inside the public API
+        WebPage::setDefaultLayoutSize().
+
+        We haven't upstreamed the manual tests directory yet, therefore,
+        the new manual test case will be upstreamed later.
+
+        * Api/WebPage.cpp:
+        (BlackBerry::WebKit::WebPagePrivate::setDefaultLayoutSize):
+        (BlackBerry::WebKit::WebPage::setDefaultLayoutSize):
+
 2012-03-06  Lianghui Chen  <[email protected]>
 
         [BlackBerry] Set correct ResourceRequest target type.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to