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

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

Issue 1286693003: Move code for locating the containing flow thread out of LayoutObject. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 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) 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 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 { 662 {
663 ASSERT(isInsideFlowThread()); 663 ASSERT(isInsideFlowThread());
664 664
665 // See if we have the thread cached because we're in the middle of layout. 665 // See if we have the thread cached because we're in the middle of layout.
666 if (LayoutState* layoutState = view()->layoutState()) { 666 if (LayoutState* layoutState = view()->layoutState()) {
667 if (LayoutFlowThread* flowThread = layoutState->flowThread()) 667 if (LayoutFlowThread* flowThread = layoutState->flowThread())
668 return flowThread; 668 return flowThread;
669 } 669 }
670 670
671 // Not in the middle of layout so have to find the thread the slow way. 671 // Not in the middle of layout so have to find the thread the slow way.
672 LayoutObject* curr = const_cast<LayoutObject*>(this); 672 return LayoutFlowThread::locateFlowThreadContainingBlockOf(*this);
673 while (curr) {
674 if (curr->isSVG() && !curr->isSVGRoot())
675 return nullptr;
676 if (curr->isLayoutFlowThread())
677 return toLayoutFlowThread(curr);
678 LayoutObject* container = curr->container();
679 curr = curr->parent();
680 while (curr != container) {
681 if (curr->isLayoutFlowThread()) {
682 // The nearest ancestor flow thread isn't in our containing bloc k chain. Then we
683 // aren't really part of any flow thread, and we should stop loo king. This happens
684 // when there are out-of-flow objects or column spanners.
685 return nullptr;
686 }
687 curr = curr->parent();
688 }
689 }
690 return nullptr;
691 } 673 }
692 674
693 // FIXME: This could be used when changing the size of a layoutObject without ch ildren to skip some invalidations. 675 // FIXME: This could be used when changing the size of a layoutObject without ch ildren to skip some invalidations.
694 // FIXME: This is incorrect for document element. Remove this when we enable sli mming paint. 676 // FIXME: This is incorrect for document element. Remove this when we enable sli mming paint.
695 static inline bool layoutObjectHasNoBoxEffectObsolete(const LayoutObject& object ) 677 static inline bool layoutObjectHasNoBoxEffectObsolete(const LayoutObject& object )
696 { 678 {
697 return !object.style()->hasVisualOverflowingEffect() && !object.style()->has BorderDecoration() && !object.style()->hasBackground(); 679 return !object.style()->hasVisualOverflowingEffect() && !object.style()->has BorderDecoration() && !object.style()->hasBackground();
698 } 680 }
699 681
700 bool LayoutObject::skipInvalidationWhenLaidOutChildren() const 682 bool LayoutObject::skipInvalidationWhenLaidOutChildren() const
(...skipping 2676 matching lines...) Expand 10 before | Expand all | Expand 10 after
3377 const blink::LayoutObject* root = object1; 3359 const blink::LayoutObject* root = object1;
3378 while (root->parent()) 3360 while (root->parent())
3379 root = root->parent(); 3361 root = root->parent();
3380 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); 3362 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0);
3381 } else { 3363 } else {
3382 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); 3364 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n");
3383 } 3365 }
3384 } 3366 }
3385 3367
3386 #endif 3368 #endif
OLDNEW
« Source/core/layout/LayoutFlowThread.cpp ('K') | « Source/core/layout/LayoutFlowThread.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698