summaryrefslogtreecommitdiff
path: root/Source/WebKit/blackberry/Api/InRegionScroller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/blackberry/Api/InRegionScroller.cpp')
-rw-r--r--Source/WebKit/blackberry/Api/InRegionScroller.cpp33
1 files changed, 15 insertions, 18 deletions
diff --git a/Source/WebKit/blackberry/Api/InRegionScroller.cpp b/Source/WebKit/blackberry/Api/InRegionScroller.cpp
index 24da9d678..cd68c4c76 100644
--- a/Source/WebKit/blackberry/Api/InRegionScroller.cpp
+++ b/Source/WebKit/blackberry/Api/InRegionScroller.cpp
@@ -31,6 +31,7 @@
#include "RenderBox.h"
#include "RenderLayer.h"
#include "RenderLayerBacking.h"
+#include "RenderLayerCompositor.h"
#include "RenderObject.h"
#include "RenderView.h"
#include "SelectionHandler.h"
@@ -64,12 +65,13 @@ bool InRegionScroller::setScrollPositionCompositingThread(unsigned camouflagedLa
return d->setScrollPositionCompositingThread(camouflagedLayer, d->m_webPage->mapFromTransformed(scrollPosition));
}
-bool InRegionScroller::setScrollPositionWebKitThread(unsigned camouflagedLayer, const Platform::IntPoint& scrollPosition, bool supportsAcceleratedScrolling)
+bool InRegionScroller::setScrollPositionWebKitThread(unsigned camouflagedLayer, const Platform::IntPoint& scrollPosition,
+ bool supportsAcceleratedScrolling, Platform::ScrollViewBase::ScrollTarget scrollTarget)
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
// FIXME: Negative values won't work with map{To,From}Transform methods.
- return d->setScrollPositionWebKitThread(camouflagedLayer, d->m_webPage->mapFromTransformed(scrollPosition), supportsAcceleratedScrolling);
+ return d->setScrollPositionWebKitThread(camouflagedLayer, d->m_webPage->mapFromTransformed(scrollPosition), supportsAcceleratedScrolling, scrollTarget);
}
InRegionScrollerPrivate::InRegionScrollerPrivate(WebPagePrivate* webPagePrivate)
@@ -132,7 +134,8 @@ bool InRegionScrollerPrivate::setScrollPositionCompositingThread(unsigned camouf
return true;
}
-bool InRegionScrollerPrivate::setScrollPositionWebKitThread(unsigned camouflagedLayer, const WebCore::IntPoint& scrollPosition, bool supportsAcceleratedScrolling)
+bool InRegionScrollerPrivate::setScrollPositionWebKitThread(unsigned camouflagedLayer, const WebCore::IntPoint& scrollPosition,
+ bool supportsAcceleratedScrolling, Platform::ScrollViewBase::ScrollTarget scrollTarget)
{
RenderLayer* layer = 0;
@@ -141,8 +144,14 @@ bool InRegionScrollerPrivate::setScrollPositionWebKitThread(unsigned camouflaged
ASSERT(layerWebKitThread);
if (layerWebKitThread->owner()) {
GraphicsLayer* graphicsLayer = layerWebKitThread->owner();
- RenderLayerBacking* backing = static_cast<RenderLayerBacking*>(graphicsLayer->client());
- layer = backing->owningLayer();
+
+ if (scrollTarget == Platform::ScrollViewBase::BlockElement) {
+ RenderLayerBacking* backing = static_cast<RenderLayerBacking*>(graphicsLayer->client());
+ layer = backing->owningLayer();
+ } else {
+ RenderLayerCompositor* compositor = static_cast<RenderLayerCompositor*>(graphicsLayer->client());
+ layer = compositor->rootRenderLayer();
+ }
}
} else {
Node* node = reinterpret_cast<Node*>(camouflagedLayer);
@@ -193,7 +202,7 @@ void InRegionScrollerPrivate::calculateInRegionScrollableAreasForPoint(const Web
ASSERT(m_activeInRegionScrollableAreas.empty());
m_needsActiveScrollableAreaCalculation = false;
- HitTestResult result = m_webPage->m_mainFrame->eventHandler()->hitTestResultAtPoint(m_webPage->mapFromViewportToContents(point), false /*allowShadowContent*/);
+ HitTestResult result = m_webPage->m_mainFrame->eventHandler()->hitTestResultAtPoint(m_webPage->mapFromViewportToContents(point));
Node* node = result.innerNonSharedNode();
if (!node || !node->renderer())
return;
@@ -290,20 +299,8 @@ bool InRegionScrollerPrivate::setLayerScrollPosition(RenderLayer* layer, const I
ASSERT(canScrollInnerFrame(frame));
view->setCanBlitOnScroll(false);
-
- BackingStoreClient* backingStoreClient = m_webPage->backingStoreClientForFrame(view->frame());
- if (backingStoreClient) {
- backingStoreClient->setIsClientGeneratedScroll(true);
- backingStoreClient->setIsScrollNotificationSuppressed(true);
- }
-
view->setScrollPosition(scrollPosition);
- if (backingStoreClient) {
- backingStoreClient->setIsClientGeneratedScroll(false);
- backingStoreClient->setIsScrollNotificationSuppressed(false);
- }
-
} else {
// RenderBox-based elements case (scrollable boxes (div's, p's, textarea's, etc)).