Changeset 88195 in webkit


Ignore:
Timestamp:
Jun 6, 2011 3:13:08 PM (13 years ago)
Author:
eae@chromium.org
Message:

2011-06-06 Emil A Eklund <eae@chromium.org>

Reviewed by Eric Seidel.

Convert hitTest to IntPoint
https://bugs.webkit.org/show_bug.cgi?id=62144

Covered by existing tests.

  • rendering/InlineBox.cpp: (WebCore::InlineBox::nodeAtPoint):
  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::hitTestFloats): (WebCore::RenderBlock::hitTestContents):
  • rendering/RenderInline.cpp: (WebCore::RenderInline::nodeAtPoint):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::hitTestContents):
  • rendering/RenderLayer.h: (WebCore::RenderLayer::renderBoxLocation): (WebCore::RenderLayer::renderBoxX): (WebCore::RenderLayer::renderBoxY):
  • rendering/RenderLineBoxList.cpp: (WebCore::RenderLineBoxList::hitTest):
  • rendering/RenderLineBoxList.h:
  • rendering/RenderObject.cpp: (WebCore::RenderObject::hitTest):
  • rendering/RenderObject.h:
Location:
trunk/Source/WebCore
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r88193 r88195  
     12011-06-06  Emil A Eklund  <eae@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Convert hitTest to IntPoint
     6        https://bugs.webkit.org/show_bug.cgi?id=62144
     7
     8        Covered by existing tests.
     9
     10        * rendering/InlineBox.cpp:
     11        (WebCore::InlineBox::nodeAtPoint):
     12        * rendering/RenderBlock.cpp:
     13        (WebCore::RenderBlock::hitTestFloats):
     14        (WebCore::RenderBlock::hitTestContents):
     15        * rendering/RenderInline.cpp:
     16        (WebCore::RenderInline::nodeAtPoint):
     17        * rendering/RenderLayer.cpp:
     18        (WebCore::RenderLayer::hitTestContents):
     19        * rendering/RenderLayer.h:
     20        (WebCore::RenderLayer::renderBoxLocation):
     21        (WebCore::RenderLayer::renderBoxX):
     22        (WebCore::RenderLayer::renderBoxY):
     23        * rendering/RenderLineBoxList.cpp:
     24        (WebCore::RenderLineBoxList::hitTest):
     25        * rendering/RenderLineBoxList.h:
     26        * rendering/RenderObject.cpp:
     27        (WebCore::RenderObject::hitTest):
     28        * rendering/RenderObject.h:
     29
    1302011-06-06  Levi Weintraub  <leviw@chromium.org>
    231
  • trunk/Source/WebCore/rendering/InlineBox.cpp

    r87964 r88195  
    226226    // own stacking context.  (See Appendix E.2, section 6.4 on inline block/table elements in the CSS2.1
    227227    // specification.)
    228     return renderer()->hitTest(request, result, pointInContainer, tx, ty);
     228    return renderer()->hitTest(request, result, pointInContainer, IntPoint(tx, ty));
    229229}
    230230
  • trunk/Source/WebCore/rendering/RenderBlock.cpp

    r88190 r88195  
    39743974            int yOffset = yPositionForFloatIncludingMargin(floatingObject) - floatingObject->m_renderer->y();
    39753975            IntPoint childPoint = flipFloatForWritingMode(floatingObject, IntPoint(tx + xOffset, ty + yOffset));
    3976             if (floatingObject->m_renderer->hitTest(request, result, pointInContainer, childPoint.x(), childPoint.y())) {
     3976            if (floatingObject->m_renderer->hitTest(request, result, pointInContainer, childPoint)) {
    39773977                updateHitTestResult(result, pointInContainer - toSize(childPoint));
    39783978                return true;
     
    40354035    if (childrenInline() && !isTable()) {
    40364036        // We have to hit-test our line boxes.
    4037         if (m_lineBoxes.hitTest(this, request, result, pointInContainer, tx, ty, hitTestAction))
     4037        if (m_lineBoxes.hitTest(this, request, result, pointInContainer, IntPoint(tx, ty), hitTestAction))
    40384038            return true;
    40394039    } else {
  • trunk/Source/WebCore/rendering/RenderInline.cpp

    r88190 r88195  
    715715                                const IntPoint& pointInContainer, int tx, int ty, HitTestAction hitTestAction)
    716716{
    717     return m_lineBoxes.hitTest(this, request, result, pointInContainer, tx, ty, hitTestAction);
     717    return m_lineBoxes.hitTest(this, request, result, pointInContainer, IntPoint(tx, ty), hitTestAction);
    718718}
    719719
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r88183 r88195  
    31383138{
    31393139    if (!renderer()->hitTest(request, result, hitTestPoint,
    3140                             layerBounds.x() - renderBoxX(),
    3141                             layerBounds.y() - renderBoxY(),
     3140                            toPoint(layerBounds.location() - renderBoxLocation()),
    31423141                            hitTestFilter)) {
    31433142        // It's wrong to set innerNode, but then claim that you didn't hit anything, unless it is
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r88178 r88195  
    460460    void setLastChild(RenderLayer* last) { m_last = last; }
    461461
    462     int renderBoxX() const { return renderer()->isBox() ? toRenderBox(renderer())->x() : 0; }
    463     int renderBoxY() const { return renderer()->isBox() ? toRenderBox(renderer())->y() : 0; }
     462    IntPoint renderBoxLocation() const { return renderer()->isBox() ? toRenderBox(renderer())->location() : IntPoint(); }
     463    int renderBoxX() const { return renderBoxLocation().x(); }
     464    int renderBoxY() const { return renderBoxLocation().y(); }
    464465
    465466    void collectLayers(Vector<RenderLayer*>*&, Vector<RenderLayer*>*&);
  • trunk/Source/WebCore/rendering/RenderLineBoxList.cpp

    r88190 r88195  
    275275
    276276
    277 bool RenderLineBoxList::hitTest(RenderBoxModelObject* renderer, const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, int tx, int ty, HitTestAction hitTestAction) const
     277bool RenderLineBoxList::hitTest(RenderBoxModelObject* renderer, const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction hitTestAction) const
    278278{
    279279    if (hitTestAction != HitTestForeground)
     
    290290        IntRect(pointInContainer.x() - result.leftPadding(), pointInContainer.y(), result.rightPadding() + result.leftPadding() + 1, 1);
    291291
    292     if (!anyLineIntersectsRect(renderer, rect, IntPoint(tx, ty)))
     292    if (!anyLineIntersectsRect(renderer, rect, accumulatedOffset))
    293293        return false;
    294294
     
    298298    for (InlineFlowBox* curr = lastLineBox(); curr; curr = curr->prevLineBox()) {
    299299        RootInlineBox* root = curr->root();
    300         if (rangeIntersectsRect(renderer, curr->logicalTopVisualOverflow(root->lineTop()), curr->logicalBottomVisualOverflow(root->lineBottom()), rect, IntPoint(tx, ty))) {
    301             bool inside = curr->nodeAtPoint(request, result, pointInContainer, tx, ty, root->lineTop(), root->lineBottom());
     300        if (rangeIntersectsRect(renderer, curr->logicalTopVisualOverflow(root->lineTop()), curr->logicalBottomVisualOverflow(root->lineBottom()), rect, accumulatedOffset)) {
     301            bool inside = curr->nodeAtPoint(request, result, pointInContainer, accumulatedOffset.x(), accumulatedOffset.y(), root->lineTop(), root->lineBottom());
    302302            if (inside) {
    303                 renderer->updateHitTestResult(result, pointInContainer - IntSize(tx, ty));
     303                renderer->updateHitTestResult(result, toPoint(pointInContainer - accumulatedOffset));
    304304                return true;
    305305            }
  • trunk/Source/WebCore/rendering/RenderLineBoxList.h

    r87825 r88195  
    6565
    6666    void paint(RenderBoxModelObject*, PaintInfo&, int x, int y) const;
    67     bool hitTest(RenderBoxModelObject*, const HitTestRequest&, HitTestResult&, const IntPoint& pointInContainer, int tx, int ty, HitTestAction) const;
     67    bool hitTest(RenderBoxModelObject*, const HitTestRequest&, HitTestResult&, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction) const;
    6868   
    6969private:
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r87738 r88195  
    21432143}
    21442144
    2145 bool RenderObject::hitTest(const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, int tx, int ty, HitTestFilter hitTestFilter)
     2145bool RenderObject::hitTest(const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestFilter hitTestFilter)
    21462146{
    21472147    bool inside = false;
    21482148    if (hitTestFilter != HitTestSelf) {
    21492149        // First test the foreground layer (lines and inlines).
    2150         inside = nodeAtPoint(request, result, pointInContainer, tx, ty, HitTestForeground);
     2150        inside = nodeAtPoint(request, result, pointInContainer, accumulatedOffset.x(), accumulatedOffset.y(), HitTestForeground);
    21512151
    21522152        // Test floats next.
    21532153        if (!inside)
    2154             inside = nodeAtPoint(request, result, pointInContainer, tx, ty, HitTestFloat);
     2154            inside = nodeAtPoint(request, result, pointInContainer, accumulatedOffset.x(), accumulatedOffset.y(), HitTestFloat);
    21552155
    21562156        // Finally test to see if the mouse is in the background (within a child block's background).
    21572157        if (!inside)
    2158             inside = nodeAtPoint(request, result, pointInContainer, tx, ty, HitTestChildBlockBackgrounds);
     2158            inside = nodeAtPoint(request, result, pointInContainer, accumulatedOffset.x(), accumulatedOffset.y(), HitTestChildBlockBackgrounds);
    21592159    }
    21602160
    21612161    // See if the mouse is inside us but not any of our descendants
    21622162    if (hitTestFilter != HitTestDescendants && !inside)
    2163         inside = nodeAtPoint(request, result, pointInContainer, tx, ty, HitTestBlockBackground);
     2163        inside = nodeAtPoint(request, result, pointInContainer, accumulatedOffset.x(), accumulatedOffset.y(), HitTestBlockBackground);
    21642164
    21652165    return inside;
  • trunk/Source/WebCore/rendering/RenderObject.h

    r87738 r88195  
    546546#endif
    547547
    548     bool hitTest(const HitTestRequest&, HitTestResult&, const IntPoint&, int tx, int ty, HitTestFilter = HitTestAll);
     548    bool hitTest(const HitTestRequest&, HitTestResult&, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestFilter = HitTestAll);
    549549    virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const IntPoint& pointInContainer, int tx, int ty, HitTestAction);
    550550    virtual void updateHitTestResult(HitTestResult&, const IntPoint&);
Note: See TracChangeset for help on using the changeset viewer.