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

Side by Side Diff: sky/engine/core/rendering/RenderBlock.cpp

Issue 924263002: Get rid of HitTestChildBlockBackground walk. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 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) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 // Check if the point is outside radii. 1072 // Check if the point is outside radii.
1073 if (style()->hasBorderRadius()) { 1073 if (style()->hasBorderRadius()) {
1074 LayoutRect borderRect = borderBoxRect(); 1074 LayoutRect borderRect = borderBoxRect();
1075 borderRect.moveBy(adjustedLocation); 1075 borderRect.moveBy(adjustedLocation);
1076 RoundedRect border = style()->getRoundedBorderFor(borderRect); 1076 RoundedRect border = style()->getRoundedBorderFor(borderRect);
1077 if (!locationInContainer.intersects(border)) 1077 if (!locationInContainer.intersects(border))
1078 return false; 1078 return false;
1079 } 1079 }
1080 1080
1081 // Now hit test our background 1081 // Now hit test our background
1082 if (hitTestAction == HitTestBlockBackground || hitTestAction == HitTestChild BlockBackground) { 1082 if (hitTestAction == HitTestBlockBackground) {
1083 LayoutRect boundsRect(adjustedLocation, size()); 1083 LayoutRect boundsRect(adjustedLocation, size());
1084 if (visibleToHitTestRequest(request) && locationInContainer.intersects(b oundsRect)) { 1084 if (visibleToHitTestRequest(request) && locationInContainer.intersects(b oundsRect)) {
1085 updateHitTestResult(result, locationInContainer.point() - localOffse t); 1085 updateHitTestResult(result, locationInContainer.point() - localOffse t);
1086 if (!result.addNodeToRectBasedTestResult(node(), request, locationIn Container, boundsRect)) 1086 if (!result.addNodeToRectBasedTestResult(node(), request, locationIn Container, boundsRect))
1087 return true; 1087 return true;
1088 } 1088 }
1089 } 1089 }
1090 1090
1091 return false; 1091 return false;
1092 } 1092 }
1093 1093
1094 bool RenderBlock::hitTestContents(const HitTestRequest& request, HitTestResult& result, const HitTestLocation& locationInContainer, const LayoutPoint& accumulat edOffset, HitTestAction hitTestAction) 1094 bool RenderBlock::hitTestContents(const HitTestRequest& request, HitTestResult& result, const HitTestLocation& locationInContainer, const LayoutPoint& accumulat edOffset, HitTestAction hitTestAction)
1095 { 1095 {
1096 // Hit test our children.
1097 HitTestAction childHitTest = hitTestAction;
1098 if (hitTestAction == HitTestChildBlockBackgrounds)
1099 childHitTest = HitTestChildBlockBackground;
1100 for (RenderBox* child = lastChildBox(); child; child = child->previousSiblin gBox()) { 1096 for (RenderBox* child = lastChildBox(); child; child = child->previousSiblin gBox()) {
1101 if (!child->hasSelfPaintingLayer() && child->nodeAtPoint(request, result , locationInContainer, accumulatedOffset, childHitTest)) 1097 if (!child->hasSelfPaintingLayer() && child->nodeAtPoint(request, result , locationInContainer, accumulatedOffset, hitTestAction))
1102 return true; 1098 return true;
1103 } 1099 }
1104 1100
1105 return false; 1101 return false;
1106 } 1102 }
1107 1103
1108 Position RenderBlock::positionForBox(InlineBox *box, bool start) const 1104 Position RenderBlock::positionForBox(InlineBox *box, bool start) const
1109 { 1105 {
1110 if (!box) 1106 if (!box)
1111 return Position(); 1107 return Position();
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
1767 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render Object* obj) const 1763 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render Object* obj) const
1768 { 1764 {
1769 showRenderObject(); 1765 showRenderObject();
1770 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box()) 1766 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box())
1771 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1); 1767 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1);
1772 } 1768 }
1773 1769
1774 #endif 1770 #endif
1775 1771
1776 } // namespace blink 1772 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | sky/engine/core/rendering/RenderLayer.cpp » ('j') | sky/engine/core/rendering/RenderObject.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698