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

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

Issue 2073563002: Rework mapToVisualRectInAncestorSpace to handle flipped blocks correctly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't need to flip in CLM. Created 4 years, 5 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) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 1552 matching lines...) Expand 10 before | Expand all | Expand 10 after
1563 ASSERT_NOT_REACHED(); 1563 ASSERT_NOT_REACHED();
1564 return LayoutRect(); 1564 return LayoutRect();
1565 } 1565 }
1566 1566
1567 bool LayoutObject::mapToVisualRectInAncestorSpace(const LayoutBoxModelObject* an cestor, LayoutRect& rect, VisualRectFlags visualRectFlags) const 1567 bool LayoutObject::mapToVisualRectInAncestorSpace(const LayoutBoxModelObject* an cestor, LayoutRect& rect, VisualRectFlags visualRectFlags) const
1568 { 1568 {
1569 // For any layout object that doesn't override this method (the main example is LayoutText), 1569 // For any layout object that doesn't override this method (the main example is LayoutText),
1570 // the rect is assumed to be in the coordinate space of the object's parent. 1570 // the rect is assumed to be in the coordinate space of the object's parent.
1571 1571
1572 if (ancestor == this) 1572 if (ancestor == this)
1573 return true; 1573 return true;
chrishtr 2016/07/09 00:15:57 Adjust the comment above to specify that it's in t
wkorman 2016/07/09 01:16:08 Done.
1574 1574
1575 if (LayoutObject* parent = this->parent()) { 1575 if (LayoutObject* parent = this->parent()) {
1576 if (parent->isBox() && !toLayoutBox(parent)->mapScrollingContentsRectToB oxSpace(rect, parent == ancestor ? ApplyNonScrollOverflowClip : ApplyOverflowCli p, visualRectFlags)) 1576 if (parent->isBox()) {
1577 return false; 1577 LayoutBox* parentBox = toLayoutBox(parent);
1578 1578 if (!parentBox->mapScrollingContentsRectToBoxSpace(rect, parent == a ncestor ? ApplyNonScrollOverflowClip : ApplyOverflowClip, visualRectFlags))
1579 return false;
1580 // Never flip for SVG as it handles writing modes itself.
1581 if (!isSVG())
1582 parentBox->flipForWritingMode(rect);
1583 }
1579 return parent->mapToVisualRectInAncestorSpace(ancestor, rect, visualRect Flags); 1584 return parent->mapToVisualRectInAncestorSpace(ancestor, rect, visualRect Flags);
1580 } 1585 }
1581 return true; 1586 return true;
1582 } 1587 }
1583 1588
1584 void LayoutObject::dirtyLinesFromChangedChild(LayoutObject*, MarkingBehavior) 1589 void LayoutObject::dirtyLinesFromChangedChild(LayoutObject*, MarkingBehavior)
1585 { 1590 {
1586 } 1591 }
1587 1592
1588 #ifndef NDEBUG 1593 #ifndef NDEBUG
(...skipping 2057 matching lines...) Expand 10 before | Expand all | Expand 10 after
3646 const blink::LayoutObject* root = object1; 3651 const blink::LayoutObject* root = object1;
3647 while (root->parent()) 3652 while (root->parent())
3648 root = root->parent(); 3653 root = root->parent();
3649 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); 3654 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0);
3650 } else { 3655 } else {
3651 WTFLogAlways("%s", "Cannot showLayoutTree. Root is (nil)"); 3656 WTFLogAlways("%s", "Cannot showLayoutTree. Root is (nil)");
3652 } 3657 }
3653 } 3658 }
3654 3659
3655 #endif 3660 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698