Changeset 91180 in webkit


Ignore:
Timestamp:
Jul 18, 2011 6:43:12 AM (13 years ago)
Author:
jocelyn.turcotte@nokia.com
Message:

TiledDrawingArea: map the visibleArea rect from page to tiles coordinates.
https://bugs.webkit.org/show_bug.cgi?id=64538

Reviewed by Benjamin Poulain.

TiledDrawingAreaProxy expects its coordinates to be scaled according to
contentsScale. This patch keep the pushed visibleArea as page coordinates
and convert it each time to scaled coordinates in case the contents scale was
changed afterward.
This is a regression introduced in r90750.
Also:

  • Rename visibleArea to visibleContentRect
  • Remove an unnecessary mapToContents in QTouchWebPageProxy::setVisibleContentRect
  • UIProcess/API/qt/qtouchwebpage.cpp:

(QTouchWebPagePrivate::setViewportRect):

  • UIProcess/TiledDrawingAreaProxy.cpp:

(WebKit::TiledDrawingAreaProxy::invalidate):
(WebKit::TiledDrawingAreaProxy::setVisibleContentRect):
(WebKit::TiledDrawingAreaProxy::createTiles):
(WebKit::TiledDrawingAreaProxy::visibleRect):

  • UIProcess/TiledDrawingAreaProxy.h:
  • UIProcess/qt/qtouchwebpageproxy.cpp:

(QTouchWebPageProxy::setVisibleContentRect):

  • UIProcess/qt/qtouchwebpageproxy.h:
Location:
trunk/Source/WebKit2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r91173 r91180  
     12011-07-15  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
     2
     3        TiledDrawingArea: map the visibleArea rect from page to tiles coordinates.
     4        https://bugs.webkit.org/show_bug.cgi?id=64538
     5
     6        Reviewed by Benjamin Poulain.
     7
     8        TiledDrawingAreaProxy expects its coordinates to be scaled according to
     9        contentsScale. This patch keep the pushed visibleArea as page coordinates
     10        and convert it each time to scaled coordinates in case the contents scale was
     11        changed afterward.
     12        This is a regression introduced in r90750.
     13        Also:
     14        - Rename visibleArea to visibleContentRect
     15        - Remove an unnecessary mapToContents in QTouchWebPageProxy::setVisibleContentRect
     16
     17        * UIProcess/API/qt/qtouchwebpage.cpp:
     18        (QTouchWebPagePrivate::setViewportRect):
     19        * UIProcess/TiledDrawingAreaProxy.cpp:
     20        (WebKit::TiledDrawingAreaProxy::invalidate):
     21        (WebKit::TiledDrawingAreaProxy::setVisibleContentRect):
     22        (WebKit::TiledDrawingAreaProxy::createTiles):
     23        (WebKit::TiledDrawingAreaProxy::visibleRect):
     24        * UIProcess/TiledDrawingAreaProxy.h:
     25        * UIProcess/qt/qtouchwebpageproxy.cpp:
     26        (QTouchWebPageProxy::setVisibleContentRect):
     27        * UIProcess/qt/qtouchwebpageproxy.h:
     28
    1292011-07-17  Amruth Raj  <amruthraj@motorola.com>
    230
  • trunk/Source/WebKit2/UIProcess/API/qt/qtouchwebpage.cpp

    r90909 r91180  
    142142void QTouchWebPagePrivate::setViewportRect(const QRectF& viewportRect)
    143143{
    144     const QRectF visibleArea = q->boundingRect().intersected(viewportRect);
    145     page->setVisibleArea(visibleArea);
     144    const QRectF visibleContentRect = q->boundingRect().intersected(viewportRect);
     145    page->setVisibleContentRect(visibleContentRect);
    146146}
    147147
  • trunk/Source/WebKit2/UIProcess/TiledDrawingAreaProxy.cpp

    r90750 r91180  
    182182    TiledDrawingAreaTile::Coordinate bottomRight = tileCoordinateForPoint(innerBottomRight(dirtyRect));
    183183
    184     IntRect coverRect = calculateCoverRect(m_visibleArea);
     184    IntRect coverRect = calculateCoverRect(visibleRect());
    185185
    186186    Vector<TiledDrawingAreaTile::Coordinate> tilesToRemove;
     
    291291}
    292292
    293 void TiledDrawingAreaProxy::setVisibleArea(const WebCore::IntRect& visibleArea)
    294 {
    295     if (m_visibleArea != visibleArea) {
    296         m_visibleArea = visibleArea;
     293void TiledDrawingAreaProxy::setVisibleContentRect(const WebCore::IntRect& visibleContentRect)
     294{
     295    if (m_visibleContentRect != visibleContentRect) {
     296        m_visibleContentRect = visibleContentRect;
    297297        startTileCreationTimer();
    298298    }
     
    352352void TiledDrawingAreaProxy::createTiles()
    353353{
    354     if (m_visibleArea.isEmpty())
     354    IntRect visibleRect = this->visibleRect();
     355    if (visibleRect.isEmpty())
    355356        return;
    356357
     
    359360
    360361    // Remove tiles outside out current maximum keep rect.
    361     dropTilesOutsideRect(calculateKeepRect(m_visibleArea));
     362    dropTilesOutsideRect(calculateKeepRect(visibleRect));
    362363
    363364    // Search for the tile position closest to the viewport center that does not yet contain a tile.
     
    367368    unsigned requiredTileCount = 0;
    368369    bool hasVisibleCheckers = false;
    369     TiledDrawingAreaTile::Coordinate topLeft = tileCoordinateForPoint(m_visibleArea.location());
    370     TiledDrawingAreaTile::Coordinate bottomRight = tileCoordinateForPoint(innerBottomRight(m_visibleArea));
     370    TiledDrawingAreaTile::Coordinate topLeft = tileCoordinateForPoint(visibleRect.location());
     371    TiledDrawingAreaTile::Coordinate bottomRight = tileCoordinateForPoint(innerBottomRight(visibleRect));
    371372    for (unsigned yCoordinate = topLeft.y(); yCoordinate <= bottomRight.y(); ++yCoordinate) {
    372373        for (unsigned xCoordinate = topLeft.x(); xCoordinate <= bottomRight.x(); ++xCoordinate) {
    373374            TiledDrawingAreaTile::Coordinate currentCoordinate(xCoordinate, yCoordinate);
    374375            // Distance is 0 for all currently visible tiles.
    375             double distance = tileDistance(m_visibleArea, currentCoordinate);
     376            double distance = tileDistance(visibleRect, currentCoordinate);
    376377
    377378            RefPtr<TiledDrawingAreaTile> tile = tileAt(currentCoordinate);
     
    497498}
    498499
     500IntRect TiledDrawingAreaProxy::visibleRect() const
     501{
     502    return mapFromContents(m_visibleContentRect);
     503}
     504
    499505IntRect TiledDrawingAreaProxy::tileRectForCoordinate(const TiledDrawingAreaTile::Coordinate& coordinate) const
    500506{
  • trunk/Source/WebKit2/UIProcess/TiledDrawingAreaProxy.h

    r90750 r91180  
    6868    virtual ~TiledDrawingAreaProxy();
    6969
    70     void setVisibleArea(const WebCore::IntRect& visibleRect);
     70    void setVisibleContentRect(const WebCore::IntRect&);
    7171    float contentsScale() const { return m_contentsScale; }
    7272    void setContentsScale(float);
     
    136136
    137137    WebCore::IntRect contentsRect() const;
     138    WebCore::IntRect visibleRect() const;
    138139
    139140    WebCore::IntRect calculateKeepRect(const WebCore::IntRect& visibleRect) const;
     
    167168    WebCore::FloatSize m_coverAreaMultiplier;
    168169
    169     WebCore::IntRect m_visibleArea;
     170    WebCore::IntRect m_visibleContentRect;
    170171    float m_contentsScale;
    171172
  • trunk/Source/WebKit2/UIProcess/qt/qtouchwebpageproxy.cpp

    r91064 r91180  
    8686}
    8787
    88 void QTouchWebPageProxy::setVisibleArea(const QRectF& visibleArea)
     88void QTouchWebPageProxy::setVisibleContentRect(const QRectF& visibleContentRect)
    8989{
    9090    TiledDrawingAreaProxy* tiledDrawingArea = static_cast<TiledDrawingAreaProxy*>(m_webPageProxy->drawingArea());
    91     QRect alignedVisibleArea = visibleArea.toAlignedRect();
    92     tiledDrawingArea->setVisibleArea(alignedVisibleArea);
     91    QRect alignedVisibleContentRect = visibleContentRect.toAlignedRect();
     92    tiledDrawingArea->setVisibleContentRect(alignedVisibleContentRect);
    9393
    9494    // FIXME: Once we support suspend and resume, this should be delayed until the page is active if the page is suspended.
    95     IntRect contentVisibleArea = tiledDrawingArea->mapToContents(alignedVisibleArea);
    96     m_webPageProxy->setFixedVisibleContentRect(contentVisibleArea);
     95    m_webPageProxy->setFixedVisibleContentRect(alignedVisibleContentRect);
    9796}
    9897
  • trunk/Source/WebKit2/UIProcess/qt/qtouchwebpageproxy.h

    r90838 r91180  
    4040    virtual bool handleEvent(QEvent*);
    4141
    42     void setVisibleArea(const QRectF&);
     42    void setVisibleContentRect(const QRectF&);
    4343    void setResizesToContentsUsingLayoutSize(const QSize& targetLayoutSize);
    4444    void findZoomableAreaForPoint(const QPoint&);
Note: See TracChangeset for help on using the changeset viewer.