summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/nav
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-09-18 11:03:03 -0700
committerJohn Reck <jreck@google.com>2011-09-19 10:43:51 -0700
commit73b4552f8e4e89529f6f44378b80a31f764c1377 (patch)
treeeed181a1da8f3ca74df659b676ef07b2b4b99311 /Source/WebKit/android/nav
parent03b9ea031a98d99f5b10bf6edd5d11b9dcdb80eb (diff)
downloadexternal_webkit-73b4552f8e4e89529f6f44378b80a31f764c1377.zip
external_webkit-73b4552f8e4e89529f6f44378b80a31f764c1377.tar.gz
external_webkit-73b4552f8e4e89529f6f44378b80a31f764c1377.tar.bz2
We be GL ringing it all over them layers
Bug: 5333083 Change-Id: Ia2b03d8d9e0167d06f8a900152e25e66372acd59
Diffstat (limited to 'Source/WebKit/android/nav')
-rw-r--r--Source/WebKit/android/nav/WebView.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/Source/WebKit/android/nav/WebView.cpp b/Source/WebKit/android/nav/WebView.cpp
index a528e9a..1651de6 100644
--- a/Source/WebKit/android/nav/WebView.cpp
+++ b/Source/WebKit/android/nav/WebView.cpp
@@ -489,8 +489,23 @@ bool drawGL(WebCore::IntRect& viewRect, WebCore::IntRect* invalRect, WebCore::In
m_glWebViewState->resetRings();
if (extra) {
if (extra == &m_ring) {
+ WTF::Vector<IntRect> rings;
if (root == m_ring.m_frame)
- m_glWebViewState->setRings(m_ring.rings(), m_ring.m_isPressed);
+ rings = m_ring.rings();
+ else {
+ // TODO: Fix the navcache to work with layers correctly
+ // In the meantime, this works around the bug. However, the rings
+ // it produces are not as nice for some reason, thus we use
+ // m_ring.rings() above for the base layer instead of the below
+ for (size_t i = 0; i < m_ring.m_node->rings().size(); i++) {
+ IntRect rect = m_ring.m_node->rings().at(i);
+ rect = m_ring.m_frame->adjustBounds(m_ring.m_node, rect);
+ rect.inflate(4);
+ rings.append(rect);
+ }
+ }
+ m_glWebViewState->setRings(rings, m_ring.m_isPressed);
+ extra = 0;
} else {
LayerAndroid mainPicture(m_navPictureUI);
PictureSet* content = m_baseLayer->content();