Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutBox.cpp

Issue 1630793002: Stop hit testing culled inlines when a match is found (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simpler approach, but duplicated code Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 1183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 1194
1195 if (hitTestClippedOutByRoundedBorder(locationInContainer, adjustedLocation)) 1195 if (hitTestClippedOutByRoundedBorder(locationInContainer, adjustedLocation))
1196 return false; 1196 return false;
1197 1197
1198 // Check our bounds next. For this purpose always assume that we can only be hit in the 1198 // Check our bounds next. For this purpose always assume that we can only be hit in the
1199 // foreground phase (which is true for replaced elements like images). 1199 // foreground phase (which is true for replaced elements like images).
1200 LayoutRect boundsRect = borderBoxRect(); 1200 LayoutRect boundsRect = borderBoxRect();
1201 boundsRect.moveBy(adjustedLocation); 1201 boundsRect.moveBy(adjustedLocation);
1202 if (visibleToHitTestRequest(result.hitTestRequest()) && action == HitTestFor eground && locationInContainer.intersects(boundsRect)) { 1202 if (visibleToHitTestRequest(result.hitTestRequest()) && action == HitTestFor eground && locationInContainer.intersects(boundsRect)) {
1203 updateHitTestResult(result, locationInContainer.point() - toLayoutSize(a djustedLocation)); 1203 updateHitTestResult(result, locationInContainer.point() - toLayoutSize(a djustedLocation));
1204 if (!result.addNodeToListBasedTestResult(node(), locationInContainer, bo undsRect)) 1204 if (result.addNodeToListBasedTestResult(node(), locationInContainer, bou ndsRect) == StopHitTesting)
1205 return true; 1205 return true;
1206 } 1206 }
1207 1207
1208 return false; 1208 return false;
1209 } 1209 }
1210 1210
1211 bool LayoutBox::hitTestChildren(HitTestResult& result, const HitTestLocation& lo cationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction action) 1211 bool LayoutBox::hitTestChildren(HitTestResult& result, const HitTestLocation& lo cationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction action)
1212 { 1212 {
1213 for (LayoutObject* child = slowLastChild(); child; child = child->previousSi bling()) { 1213 for (LayoutObject* child = slowLastChild(); child; child = child->previousSi bling()) {
1214 if ((!child->hasLayer() || !toLayoutBoxModelObject(child)->layer()->isSe lfPaintingLayer()) && child->nodeAtPoint(result, locationInContainer, accumulate dOffset, action)) 1214 if ((!child->hasLayer() || !toLayoutBoxModelObject(child)->layer()->isSe lfPaintingLayer()) && child->nodeAtPoint(result, locationInContainer, accumulate dOffset, action))
(...skipping 3422 matching lines...) Expand 10 before | Expand all | Expand 10 after
4637 4637
4638 void LayoutBox::clearPercentHeightDescendants() 4638 void LayoutBox::clearPercentHeightDescendants()
4639 { 4639 {
4640 for (LayoutObject* curr = slowFirstChild(); curr; curr = curr->nextInPreOrde r(this)) { 4640 for (LayoutObject* curr = slowFirstChild(); curr; curr = curr->nextInPreOrde r(this)) {
4641 if (curr->isBox()) 4641 if (curr->isBox())
4642 toLayoutBox(curr)->removeFromPercentHeightContainer(); 4642 toLayoutBox(curr)->removeFromPercentHeightContainer();
4643 } 4643 }
4644 } 4644 }
4645 4645
4646 } // namespace blink 4646 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBlock.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutInline.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698