summaryrefslogtreecommitdiffstats
path: root/WebCore/platform
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2010-08-02 08:09:31 -0400
committerPatrick Scott <phanna@android.com>2010-08-02 15:28:47 -0400
commitef1adcdfc805d4d13103f6f15cc5b4d96828a60f (patch)
treecf24fb4142aa8bd487b7f751c74aa4225967fa47 /WebCore/platform
parent2e79b71868fcdcd0de7c6070e50662d8fa01e4ab (diff)
downloadexternal_webkit-ef1adcdfc805d4d13103f6f15cc5b4d96828a60f.zip
external_webkit-ef1adcdfc805d4d13103f6f15cc5b4d96828a60f.tar.gz
external_webkit-ef1adcdfc805d4d13103f6f15cc5b4d96828a60f.tar.bz2
Enable navigation in scrollable layers.
EventHandler: * Added IgnoreClipping in order to touch nodes that are clipped out. android_graphics: * Remember the absolute bounds of the node for invals. RenderBox: * Fix a compiler warning. RenderLayer: * Do not record the entire layer contents unless the scroll dimensions are larger than the client dimensions. * Change isSelfPaintingLayer to check for an overflow clip instead of the scrollable dimensions since it can be too early to check at this point. RenderLayerCompositor: * Same as RenderLayer for checking the overflow clip. WebViewCore: * Scroll the containing layer to the node bounds and offset the mouse position if scrolled. Once the mouse event is processed, restore the layer to 0,0. CacheBuilder: * The body position is no longer used. * Do not clip out nodes if the layer is scrollable. CachedFrame: * Add unadjustBounds to restore adjusted bounds to their original position (fixed position elements). * Call unadjustBounds when a node has been found. This new set of bounds is passed over to WebViewCore to handle clicks. * Reject empty node bounds. CachedLayer: * Document adjustBounds and add unadjustBounds. Add in the scroll position to the node bounds. CachedRoot: * Unadjust the mouse bounds. WebView: * Unadjust the mouse bounds and use the absolute bounds of the ring during inval. Bug: 1566791 Change-Id: Ia55f2cbb61869087176d3ff61882e40324614c6a
Diffstat (limited to 'WebCore/platform')
-rw-r--r--WebCore/platform/graphics/android/LayerAndroid.h4
-rw-r--r--WebCore/platform/graphics/android/android_graphics.cpp2
-rw-r--r--WebCore/platform/graphics/android/android_graphics.h1
3 files changed, 7 insertions, 0 deletions
diff --git a/WebCore/platform/graphics/android/LayerAndroid.h b/WebCore/platform/graphics/android/LayerAndroid.h
index b74a8c8..712d699 100644
--- a/WebCore/platform/graphics/android/LayerAndroid.h
+++ b/WebCore/platform/graphics/android/LayerAndroid.h
@@ -135,6 +135,10 @@ public:
void setForegroundClip(const SkRect& clip) {
m_foregroundClip = clip;
}
+
+ // Return the foreground clip offset by the position of the layer.
+ SkRect foregroundClip() const { return m_foregroundClip; }
+
bool contentIsScrollable() const;
// Returns true if the content position has changed.
diff --git a/WebCore/platform/graphics/android/android_graphics.cpp b/WebCore/platform/graphics/android/android_graphics.cpp
index fafd3df..a5dafda 100644
--- a/WebCore/platform/graphics/android/android_graphics.cpp
+++ b/WebCore/platform/graphics/android/android_graphics.cpp
@@ -140,7 +140,9 @@ bool CursorRing::setup()
m_rings.clear();
m_rings.append(m_bounds);
}
+ m_absBounds = m_node->bounds(m_frame);
m_bounds.inflate(SkScalarCeil(CURSOR_RING_OUTER_DIAMETER));
+ m_absBounds.inflate(SkScalarCeil(CURSOR_RING_OUTER_DIAMETER));
if (!m_node->hasCursorRing() || (m_node->isPlugin() && m_node->isFocus()))
return false;
m_flavor = NORMAL_FLAVOR;
diff --git a/WebCore/platform/graphics/android/android_graphics.h b/WebCore/platform/graphics/android/android_graphics.h
index dbf1978..46c60e8 100644
--- a/WebCore/platform/graphics/android/android_graphics.h
+++ b/WebCore/platform/graphics/android/android_graphics.h
@@ -71,6 +71,7 @@ private:
WebViewCore* m_viewImpl; // copy for convenience
WTF::Vector<IntRect> m_rings;
IntRect m_bounds;
+ IntRect m_absBounds;
const CachedRoot* m_root;
const CachedFrame* m_frame;
const CachedNode* m_node;