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

Side by Side Diff: Source/core/rendering/RenderObject.h

Issue 265703012: Separate repaint and layout requirements of StyleDifference (Step 4) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) 3 * (C) 2000 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) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. 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 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 // Returns the object containing this one. Can be different from parent for positioned elements. 621 // Returns the object containing this one. Can be different from parent for positioned elements.
622 // If repaintContainer and repaintContainerSkipped are not null, on return * repaintContainerSkipped 622 // If repaintContainer and repaintContainerSkipped are not null, on return * repaintContainerSkipped
623 // is true if the renderer returned is an ancestor of repaintContainer. 623 // is true if the renderer returned is an ancestor of repaintContainer.
624 RenderObject* container(const RenderLayerModelObject* repaintContainer = 0, bool* repaintContainerSkipped = 0) const; 624 RenderObject* container(const RenderLayerModelObject* repaintContainer = 0, bool* repaintContainerSkipped = 0) const;
625 625
626 virtual RenderObject* hoverAncestor() const { return parent(); } 626 virtual RenderObject* hoverAncestor() const { return parent(); }
627 627
628 Element* offsetParent() const; 628 Element* offsetParent() const;
629 629
630 void markContainingBlocksForLayout(bool scheduleRelayout = true, RenderObjec t* newRoot = 0, SubtreeLayoutScope* = 0); 630 void markContainingBlocksForLayout(bool scheduleRelayout = true, RenderObjec t* newRoot = 0, SubtreeLayoutScope* = 0);
631 void setNeedsLayout(MarkingBehavior = MarkContainingBlockChain, SubtreeLayou tScope* = 0);
631 void setNeedsLayoutAndFullRepaint(MarkingBehavior = MarkContainingBlockChain , SubtreeLayoutScope* = 0); 632 void setNeedsLayoutAndFullRepaint(MarkingBehavior = MarkContainingBlockChain , SubtreeLayoutScope* = 0);
632 void clearNeedsLayout(); 633 void clearNeedsLayout();
633 void setChildNeedsLayout(MarkingBehavior = MarkContainingBlockChain, Subtree LayoutScope* = 0); 634 void setChildNeedsLayout(MarkingBehavior = MarkContainingBlockChain, Subtree LayoutScope* = 0);
634 void setNeedsPositionedMovementLayout(); 635 void setNeedsPositionedMovementLayout();
635 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainingBlockCha in); 636 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainingBlockCha in);
636 void clearPreferredLogicalWidthsDirty(); 637 void clearPreferredLogicalWidthsDirty();
637 void invalidateContainerPreferredLogicalWidths(); 638 void invalidateContainerPreferredLogicalWidths();
638 639
640 void setNeedsLayoutAndPrefWidthsRecalc()
641 {
642 setNeedsLayout();
643 setPreferredLogicalWidthsDirty();
644 }
639 void setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint() 645 void setNeedsLayoutAndPrefWidthsRecalcAndFullRepaint()
640 { 646 {
641 setNeedsLayoutAndFullRepaint(); 647 setNeedsLayoutAndFullRepaint();
642 setPreferredLogicalWidthsDirty(); 648 setPreferredLogicalWidthsDirty();
643 } 649 }
644 650
645 void setPositionState(EPosition position) 651 void setPositionState(EPosition position)
646 { 652 {
647 ASSERT((position != AbsolutePosition && position != FixedPosition) || is Box()); 653 ASSERT((position != AbsolutePosition && position != FixedPosition) || is Box());
648 m_bitfields.setPositionedState(position); 654 m_bitfields.setPositionedState(position);
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
1318 if (isText() && !isBR()) 1324 if (isText() && !isBR())
1319 return false; 1325 return false;
1320 return true; 1326 return true;
1321 } 1327 }
1322 1328
1323 inline bool RenderObject::isBeforeOrAfterContent() const 1329 inline bool RenderObject::isBeforeOrAfterContent() const
1324 { 1330 {
1325 return isBeforeContent() || isAfterContent(); 1331 return isBeforeContent() || isAfterContent();
1326 } 1332 }
1327 1333
1328 inline void RenderObject::setNeedsLayoutAndFullRepaint(MarkingBehavior markParen ts, SubtreeLayoutScope* layouter) 1334 // If repaintAfterLayout is enabled, setNeedsLayout() won't cause full repaint a s
1335 // setNeedsLayoutAndFullRepaint() does. Otherwise the two methods are identical.
1336 inline void RenderObject::setNeedsLayout(MarkingBehavior markParents, SubtreeLay outScope* layouter)
1329 { 1337 {
1330 ASSERT(!isSetNeedsLayoutForbidden()); 1338 ASSERT(!isSetNeedsLayoutForbidden());
1331 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout(); 1339 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout();
1332 setSelfNeedsLayout(true); 1340 setSelfNeedsLayout(true);
1333 if (!alreadyNeededLayout) { 1341 if (!alreadyNeededLayout) {
1334 if (markParents == MarkContainingBlockChain && (!layouter || layouter->r oot() != this)) 1342 if (markParents == MarkContainingBlockChain && (!layouter || layouter->r oot() != this))
1335 markContainingBlocksForLayout(true, 0, layouter); 1343 markContainingBlocksForLayout(true, 0, layouter);
1336 } 1344 }
1337 } 1345 }
1338 1346
1347 inline void RenderObject::setNeedsLayoutAndFullRepaint(MarkingBehavior markParen ts, SubtreeLayoutScope* layouter)
1348 {
1349 setNeedsLayout(markParents, layouter);
1350 setShouldDoFullRepaintAfterLayout(true);
1351 }
1352
1339 inline void RenderObject::clearNeedsLayout() 1353 inline void RenderObject::clearNeedsLayout()
1340 { 1354 {
1341 if (!shouldDoFullRepaintAfterLayout())
1342 setShouldDoFullRepaintAfterLayout(selfNeedsLayout());
1343 if (needsPositionedMovementLayoutOnly()) 1355 if (needsPositionedMovementLayoutOnly())
1344 setOnlyNeededPositionedMovementLayout(true); 1356 setOnlyNeededPositionedMovementLayout(true);
1345 setLayoutDidGetCalled(true); 1357 setLayoutDidGetCalled(true);
1346 setSelfNeedsLayout(false); 1358 setSelfNeedsLayout(false);
1347 setEverHadLayout(true); 1359 setEverHadLayout(true);
1348 setPosChildNeedsLayout(false); 1360 setPosChildNeedsLayout(false);
1349 setNeedsSimplifiedNormalFlowLayout(false); 1361 setNeedsSimplifiedNormalFlowLayout(false);
1350 setNormalChildNeedsLayout(false); 1362 setNormalChildNeedsLayout(false);
1351 setNeedsPositionedMovementLayout(false); 1363 setNeedsPositionedMovementLayout(false);
1352 setAncestorLineBoxDirty(false); 1364 setAncestorLineBoxDirty(false);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 void showTree(const WebCore::RenderObject*); 1485 void showTree(const WebCore::RenderObject*);
1474 void showLineTree(const WebCore::RenderObject*); 1486 void showLineTree(const WebCore::RenderObject*);
1475 void showRenderTree(const WebCore::RenderObject* object1); 1487 void showRenderTree(const WebCore::RenderObject* object1);
1476 // We don't make object2 an optional parameter so that showRenderTree 1488 // We don't make object2 an optional parameter so that showRenderTree
1477 // can be called from gdb easily. 1489 // can be called from gdb easily.
1478 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2); 1490 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2);
1479 1491
1480 #endif 1492 #endif
1481 1493
1482 #endif // RenderObject_h 1494 #endif // RenderObject_h
OLDNEW
« no previous file with comments | « LayoutTests/fast/repaint/transform-rotate-and-remove-expected.txt ('k') | Source/core/rendering/RenderObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698