<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[56068] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/56068">56068</a></dd>
<dt>Author</dt> <dd>antti@apple.com</dd>
<dt>Date</dt> <dd>2010-03-16 09:49:29 -0700 (Tue, 16 Mar 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>WebCore: https://bugs.webkit.org/show_bug.cgi?id=36121
[Qt] Make WebKit scrollbars work with tiling
         
Reviewed by Simon Hausmann.

Translate coordinates correctly.

* page/Frame.cpp:
(WebCore::Frame::tiledBackingStorePaintEnd):

WebKit/qt: https://bugs.webkit.org/show_bug.cgi?id=36121
[Qt] Make WebKit scrollbars work with tiling
        
Reviewed by Simon Hausmann.

- Use the scrollbar overlay (implemented for accelerated compositing) when in tiled mode. 
- Make overlay compile unconditionally, enable on demand. This removes bunch of unneeded ifdefs.
- Update the scroll position to the backing store as needed.
- Renamed some methods.

* Api/qgraphicswebview.cpp:
(QGraphicsWebViewPrivate::):
(QGraphicsWebViewPrivate::createOrDeleteOverlay):
(QGraphicsWebViewPrivate::setRootGraphicsLayer):
(QGraphicsWebViewPrivate::updateCompositingScrollPosition):
(QGraphicsWebViewPrivate::scroll):
(QGraphicsWebViewPrivate::update):
(QGraphicsWebViewPrivate::graphicsItemVisibleRect):
(QGraphicsWebView::paint):
(QGraphicsWebView::setPage):
(QGraphicsWebView::updateGeometry):
(QGraphicsWebView::setGeometry):
* Api/qwebframe.cpp:
(QWebFramePrivate::renderFromTiledBackingStore):
* Api/qwebframe_p.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebCoreChangeLog">trunk/WebCore/ChangeLog</a></li>
<li><a href="#trunkWebCorepageFramecpp">trunk/WebCore/page/Frame.cpp</a></li>
<li><a href="#trunkWebKitqtApiqgraphicswebviewcpp">trunk/WebKit/qt/Api/qgraphicswebview.cpp</a></li>
<li><a href="#trunkWebKitqtApiqwebframecpp">trunk/WebKit/qt/Api/qwebframe.cpp</a></li>
<li><a href="#trunkWebKitqtApiqwebframe_ph">trunk/WebKit/qt/Api/qwebframe_p.h</a></li>
<li><a href="#trunkWebKitqtChangeLog">trunk/WebKit/qt/ChangeLog</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/ChangeLog (56067 => 56068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/ChangeLog        2010-03-16 16:21:39 UTC (rev 56067)
+++ trunk/WebCore/ChangeLog        2010-03-16 16:49:29 UTC (rev 56068)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2010-03-15  Antti Koivisto  &lt;koivisto@iki.fi&gt;
+
+        Reviewed by Simon Hausmann.
+
+        https://bugs.webkit.org/show_bug.cgi?id=36121
+        [Qt] Make WebKit scrollbars work with tiling
+         
+        Translate coordinates correctly.
+
+        * page/Frame.cpp:
+        (WebCore::Frame::tiledBackingStorePaintEnd):
+
</ins><span class="cx"> 2010-03-16  Jakub Wieczorek  &lt;jwieczorek@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Eric Seidel.
</span></span></pre></div>
<a id="trunkWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/page/Frame.cpp (56067 => 56068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/page/Frame.cpp        2010-03-16 16:21:39 UTC (rev 56067)
+++ trunk/WebCore/page/Frame.cpp        2010-03-16 16:49:29 UTC (rev 56068)
</span><span class="lines">@@ -1841,7 +1841,7 @@
</span><span class="cx">     unsigned size = paintedArea.size();
</span><span class="cx">     // Request repaint from the system
</span><span class="cx">     for (int n = 0; n &lt; size; ++n)
</span><del>-        m_page-&gt;chrome()-&gt;invalidateContentsAndWindow(m_view-&gt;convertToContainingWindow(paintedArea[n]), true);
</del><ins>+        m_page-&gt;chrome()-&gt;invalidateContentsAndWindow(m_view-&gt;contentsToWindow(paintedArea[n]), false);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntRect Frame::tiledBackingStoreContentsRect()
</span></span></pre></div>
<a id="trunkWebKitqtApiqgraphicswebviewcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/qt/Api/qgraphicswebview.cpp (56067 => 56068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/qt/Api/qgraphicswebview.cpp        2010-03-16 16:21:39 UTC (rev 56067)
+++ trunk/WebKit/qt/Api/qgraphicswebview.cpp        2010-03-16 16:49:29 UTC (rev 56068)
</span><span class="lines">@@ -45,8 +45,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> #include &lt;Settings.h&gt;
</span><span class="cx"> 
</span><del>-#if USE(ACCELERATED_COMPOSITING)
-
</del><span class="cx"> // the overlay is here for one reason only: to have the scroll-bars and other
</span><span class="cx"> // extra UI elements appear on top of any QGraphicsItems created by CSS compositing layers
</span><span class="cx"> class QGraphicsWebViewOverlay : public QGraphicsItem {
</span><span class="lines">@@ -74,8 +72,6 @@
</span><span class="cx">     QGraphicsWebView* q;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#endif
-
</del><span class="cx"> class QGraphicsWebViewPrivate : public QWebPageClient {
</span><span class="cx"> public:
</span><span class="cx">     QGraphicsWebViewPrivate(QGraphicsWebView* parent)
</span><span class="lines">@@ -124,8 +120,10 @@
</span><span class="cx"> #endif
</span><span class="cx">     
</span><span class="cx">     void updateResizesToContentsForPage();
</span><del>-    QRectF visibleRect() const;
</del><ins>+    QRectF graphicsItemVisibleRect() const;
</ins><span class="cx"> 
</span><ins>+    void createOrDeleteOverlay();
+
</ins><span class="cx">     void syncLayers();
</span><span class="cx">     void _q_doLoadFinished(bool success);
</span><span class="cx">     void _q_contentsSizeChanged(const QSize&amp;);
</span><span class="lines">@@ -135,21 +133,20 @@
</span><span class="cx"> 
</span><span class="cx">     bool resizesToContents;
</span><span class="cx"> 
</span><del>-#if USE(ACCELERATED_COMPOSITING)
-    QGraphicsItem* rootGraphicsLayer;
-
</del><span class="cx">     // the overlay gets instantiated when the root layer is attached, and get deleted when it's detached
</span><span class="cx">     QSharedPointer&lt;QGraphicsWebViewOverlay&gt; overlay;
</span><span class="cx"> 
</span><ins>+    // we need to put the root graphics layer behind the overlay (which contains the scrollbar)
+    enum { RootGraphicsLayerZValue, OverlayZValue };
+
+#if USE(ACCELERATED_COMPOSITING)
+    QGraphicsItem* rootGraphicsLayer;
</ins><span class="cx">     // we need to sync the layers if we get a special call from the WebCore
</span><span class="cx">     // compositor telling us to do so. We'll get that call from ChromeClientQt
</span><span class="cx">     bool shouldSync;
</span><span class="cx"> 
</span><span class="cx">     // we have to flush quite often, so we use a meta-method instead of QTimer::singleShot for putting the event in the queue
</span><span class="cx">     QMetaMethod syncMetaMethod;
</span><del>-
-    // we need to put the root graphics layer behind the overlay (which contains the scrollbar)
-    enum { RootGraphicsLayerZValue, OverlayZValue };
</del><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -165,7 +162,27 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void QGraphicsWebViewPrivate::createOrDeleteOverlay()
+{
+    bool useOverlay = false;
+    if (!resizesToContents) {
</ins><span class="cx"> #if USE(ACCELERATED_COMPOSITING)
</span><ins>+        useOverlay = useOverlay || rootGraphicsLayer;
+#endif
+#if ENABLE(TILED_BACKING_STORE)
+        useOverlay = useOverlay || QWebFramePrivate::core(q-&gt;page()-&gt;mainFrame())-&gt;tiledBackingStore();
+#endif
+    }
+    if (useOverlay == !!overlay)
+        return;
+    if (useOverlay) {
+        overlay = QSharedPointer&lt;QGraphicsWebViewOverlay&gt;(new QGraphicsWebViewOverlay(q));
+        overlay-&gt;setZValue(OverlayZValue);
+    } else
+        overlay.clear();
+}
+
+#if USE(ACCELERATED_COMPOSITING)
</ins><span class="cx"> void QGraphicsWebViewPrivate::setRootGraphicsLayer(QGraphicsItem* layer)
</span><span class="cx"> {
</span><span class="cx">     if (rootGraphicsLayer) {
</span><span class="lines">@@ -180,15 +197,9 @@
</span><span class="cx">         layer-&gt;setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
</span><span class="cx">         layer-&gt;setParentItem(q);
</span><span class="cx">         layer-&gt;setZValue(RootGraphicsLayerZValue);
</span><del>-        if (!overlay) {
-            overlay = QSharedPointer&lt;QGraphicsWebViewOverlay&gt;(new QGraphicsWebViewOverlay(q));
-            overlay-&gt;setZValue(OverlayZValue);
-        }
</del><span class="cx">         updateCompositingScrollPosition();
</span><del>-    } else {
-        // we don't have compositing layers, we can render the scrollbars and content in one go
-        overlay.clear();
</del><span class="cx">     }
</span><ins>+    createOrDeleteOverlay();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void QGraphicsWebViewPrivate::markForSync(bool scheduleSync)
</span><span class="lines">@@ -205,7 +216,6 @@
</span><span class="cx">         rootGraphicsLayer-&gt;setPos(-scrollPosition);
</span><span class="cx">     }
</span><span class="cx"> }
</span><del>-
</del><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void QGraphicsWebViewPrivate::syncLayers()
</span><span class="lines">@@ -230,6 +240,7 @@
</span><span class="cx"> void QGraphicsWebViewPrivate::scroll(int dx, int dy, const QRect&amp; rectToScroll)
</span><span class="cx"> {
</span><span class="cx">     q-&gt;scroll(qreal(dx), qreal(dy), QRectF(rectToScroll));
</span><ins>+
</ins><span class="cx"> #if USE(ACCELERATED_COMPOSITING)
</span><span class="cx">     updateCompositingScrollPosition();
</span><span class="cx"> #endif
</span><span class="lines">@@ -238,9 +249,11 @@
</span><span class="cx"> void QGraphicsWebViewPrivate::update(const QRect &amp; dirtyRect)
</span><span class="cx"> {
</span><span class="cx">     q-&gt;update(QRectF(dirtyRect));
</span><del>-#if USE(ACCELERATED_COMPOSITING)
</del><ins>+
+    createOrDeleteOverlay();
</ins><span class="cx">     if (overlay)
</span><span class="cx">         overlay-&gt;update(QRectF(dirtyRect));
</span><ins>+#if USE(ACCELERATED_COMPOSITING)
</ins><span class="cx">     syncLayers();
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="lines">@@ -345,7 +358,7 @@
</span><span class="cx">     q-&gt;setGeometry(QRectF(q-&gt;geometry().topLeft(), size));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-QRectF QGraphicsWebViewPrivate::visibleRect() const
</del><ins>+QRectF QGraphicsWebViewPrivate::graphicsItemVisibleRect() const
</ins><span class="cx"> {
</span><span class="cx">     if (!q-&gt;scene())
</span><span class="cx">         return QRectF();
</span><span class="lines">@@ -505,13 +518,17 @@
</span><span class="cx"> void QGraphicsWebView::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget*)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(TILED_BACKING_STORE)
</span><del>-    // FIXME: Scrollbars could be drawn with the overlay layer when using tiling.
</del><span class="cx">     if (WebCore::TiledBackingStore* backingStore = QWebFramePrivate::core(page()-&gt;mainFrame())-&gt;tiledBackingStore()) {
</span><del>-        // FIXME: We should set the backing store viewpart earlier than in paint.
-        backingStore-&gt;viewportChanged(WebCore::IntRect(d-&gt;visibleRect()));
</del><ins>+        // FIXME: We should set the backing store viewport earlier than in paint
+        if (d-&gt;resizesToContents)
+            backingStore-&gt;viewportChanged(WebCore::IntRect(d-&gt;graphicsItemVisibleRect()));
+        else {
+            QRectF visibleRect(d-&gt;page-&gt;mainFrame()-&gt;scrollPosition(), d-&gt;page-&gt;mainFrame()-&gt;geometry().size());
+            backingStore-&gt;viewportChanged(WebCore::IntRect(visibleRect));
+        }
</ins><span class="cx">         // QWebFrame::render is a public API, bypass it for tiled rendering so behavior does not need to change.
</span><span class="cx">         WebCore::GraphicsContext context(painter); 
</span><del>-        page()-&gt;mainFrame()-&gt;d-&gt;renderContentsLayerAbsoluteCoords(&amp;context, option-&gt;exposedRect.toAlignedRect());
</del><ins>+        page()-&gt;mainFrame()-&gt;d-&gt;renderFromTiledBackingStore(&amp;context, option-&gt;exposedRect.toAlignedRect());
</ins><span class="cx">         return;
</span><span class="cx">     } 
</span><span class="cx"> #endif
</span><span class="lines">@@ -647,10 +664,8 @@
</span><span class="cx">     d-&gt;page = page;
</span><span class="cx">     if (!d-&gt;page)
</span><span class="cx">         return;
</span><del>-#if USE(ACCELERATED_COMPOSITING)
</del><span class="cx">     if (d-&gt;overlay)
</span><span class="cx">         d-&gt;overlay-&gt;prepareGeometryChange();
</span><del>-#endif
</del><span class="cx">     d-&gt;page-&gt;d-&gt;client = d; // set the page client
</span><span class="cx"> 
</span><span class="cx">     QSize size = geometry().size().toSize();
</span><span class="lines">@@ -757,11 +772,8 @@
</span><span class="cx"> */
</span><span class="cx"> void QGraphicsWebView::updateGeometry()
</span><span class="cx"> {
</span><del>-
-#if USE(ACCELERATED_COMPOSITING)
</del><span class="cx">     if (d-&gt;overlay)
</span><span class="cx">         d-&gt;overlay-&gt;prepareGeometryChange();
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     QGraphicsWidget::updateGeometry();
</span><span class="cx"> 
</span><span class="lines">@@ -778,10 +790,8 @@
</span><span class="cx"> {
</span><span class="cx">     QGraphicsWidget::setGeometry(rect);
</span><span class="cx"> 
</span><del>-#if USE(ACCELERATED_COMPOSITING)
</del><span class="cx">     if (d-&gt;overlay)
</span><span class="cx">         d-&gt;overlay-&gt;prepareGeometryChange();
</span><del>-#endif
</del><span class="cx"> 
</span><span class="cx">     if (!d-&gt;page)
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkWebKitqtApiqwebframecpp"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/qt/Api/qwebframe.cpp (56067 => 56068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/qt/Api/qwebframe.cpp        2010-03-16 16:21:39 UTC (rev 56067)
+++ trunk/WebKit/qt/Api/qwebframe.cpp        2010-03-16 16:49:29 UTC (rev 56068)
</span><span class="lines">@@ -328,8 +328,10 @@
</span><span class="cx">     return frame-&gt;view()-&gt;verticalScrollbar();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void QWebFramePrivate::renderContentsLayerAbsoluteCoords(GraphicsContext* context, const QRegion&amp; clip)
</del><ins>+void QWebFramePrivate::renderFromTiledBackingStore(GraphicsContext* context, const QRegion&amp; clip)
</ins><span class="cx"> {
</span><ins>+    ASSERT(frame-&gt;tiledBackingStore());
+
</ins><span class="cx">     if (!frame-&gt;view() || !frame-&gt;contentRenderer())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -341,29 +343,19 @@
</span><span class="cx"> 
</span><span class="cx">     WebCore::FrameView* view = frame-&gt;view();
</span><span class="cx">     
</span><del>-#if ENABLE(TILED_BACKING_STORE)
-    if (!frame-&gt;tiledBackingStore())
-        view-&gt;layoutIfNeededRecursive();
-#else
-    view-&gt;layoutIfNeededRecursive();
-#endif
</del><ins>+    int scrollX = view-&gt;scrollX();
+    int scrollY = view-&gt;scrollY();
+    context-&gt;translate(-scrollX, -scrollY);
</ins><span class="cx"> 
</span><span class="cx">     for (int i = 0; i &lt; vector.size(); ++i) {
</span><span class="cx">         const QRect&amp; clipRect = vector.at(i);
</span><span class="cx"> 
</span><span class="cx">         painter-&gt;save();
</span><del>-        painter-&gt;setClipRect(clipRect, Qt::IntersectClip);
</del><ins>+        
+        QRect rect = clipRect.translated(scrollX, scrollY);
+        painter-&gt;setClipRect(rect, Qt::IntersectClip);
</ins><span class="cx"> 
</span><del>-        context-&gt;save();
-#if ENABLE(TILED_BACKING_STORE)
-        if (frame-&gt;tiledBackingStore())
-            frame-&gt;tiledBackingStore()-&gt;paint(context, clipRect);
-        else
-            view-&gt;paintContents(context, clipRect);
-#else
-        view-&gt;paintContents(context, clipRect);
-#endif
-        context-&gt;restore();
</del><ins>+        frame-&gt;tiledBackingStore()-&gt;paint(context, rect);
</ins><span class="cx"> 
</span><span class="cx">         painter-&gt;restore();
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkWebKitqtApiqwebframe_ph"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/qt/Api/qwebframe_p.h (56067 => 56068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/qt/Api/qwebframe_p.h        2010-03-16 16:21:39 UTC (rev 56067)
+++ trunk/WebKit/qt/Api/qwebframe_p.h        2010-03-16 16:49:29 UTC (rev 56068)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx">     static QWebFrame* kit(WebCore::Frame*);
</span><span class="cx"> 
</span><span class="cx">     void renderRelativeCoords(WebCore::GraphicsContext*, QWebFrame::RenderLayer, const QRegion&amp; clip);
</span><del>-    void renderContentsLayerAbsoluteCoords(WebCore::GraphicsContext*, const QRegion&amp; clip);
</del><ins>+    void renderFromTiledBackingStore(WebCore::GraphicsContext*, const QRegion&amp; clip);
</ins><span class="cx"> 
</span><span class="cx">     bool scrollOverflow(int dx, int dy);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebKitqtChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/qt/ChangeLog (56067 => 56068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/qt/ChangeLog        2010-03-16 16:21:39 UTC (rev 56067)
+++ trunk/WebKit/qt/ChangeLog        2010-03-16 16:49:29 UTC (rev 56068)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2010-03-15  Antti Koivisto  &lt;koivisto@iki.fi&gt;
+
+        Reviewed by Simon Hausmann.
+
+        https://bugs.webkit.org/show_bug.cgi?id=36121
+        [Qt] Make WebKit scrollbars work with tiling
+        
+        - Use the scrollbar overlay (implemented for accelerated compositing) when in tiled mode. 
+        - Make overlay compile unconditionally, enable on demand. This removes bunch of unneeded ifdefs.
+        - Update the scroll position to the backing store as needed.
+        - Renamed some methods.
+
+        * Api/qgraphicswebview.cpp:
+        (QGraphicsWebViewPrivate::):
+        (QGraphicsWebViewPrivate::createOrDeleteOverlay):
+        (QGraphicsWebViewPrivate::setRootGraphicsLayer):
+        (QGraphicsWebViewPrivate::updateCompositingScrollPosition):
+        (QGraphicsWebViewPrivate::scroll):
+        (QGraphicsWebViewPrivate::update):
+        (QGraphicsWebViewPrivate::graphicsItemVisibleRect):
+        (QGraphicsWebView::paint):
+        (QGraphicsWebView::setPage):
+        (QGraphicsWebView::updateGeometry):
+        (QGraphicsWebView::setGeometry):
+        * Api/qwebframe.cpp:
+        (QWebFramePrivate::renderFromTiledBackingStore):
+        * Api/qwebframe_p.h:
+
</ins><span class="cx"> 2010-03-15  Robert Hogan  &lt;robert@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Simon Hausmann.
</span></span></pre>
</div>
</div>

</body>
</html>