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

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

Issue 1647793002: Use ScrollAnchor in FrameView and PaintLayerScrollableArea. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@anchor-skeleton
Patch Set: move save/restore from LayoutBlockFlow into LayoutBlock 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) 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 879 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 } else { 890 } else {
891 layer()->scrollableArea()->updateAfterLayout(); 891 layer()->scrollableArea()->updateAfterLayout();
892 } 892 }
893 } 893 }
894 } 894 }
895 895
896 void LayoutBlock::layout() 896 void LayoutBlock::layout()
897 { 897 {
898 LayoutAnalyzer::Scope analyzer(*this); 898 LayoutAnalyzer::Scope analyzer(*this);
899 899
900 bool needsScrollAnchoring = RuntimeEnabledFeatures::scrollAnchoringEnabled() && hasOverflowClip();
901 if (needsScrollAnchoring)
902 scrollableArea()->scrollAnchor().save();
903
900 // Table cells call layoutBlock directly, so don't add any logic here. Put code into 904 // Table cells call layoutBlock directly, so don't add any logic here. Put code into
901 // layoutBlock(). 905 // layoutBlock().
902 layoutBlock(false); 906 layoutBlock(false);
903 907
904 // It's safe to check for control clip here, since controls can never be tab le cells. 908 // It's safe to check for control clip here, since controls can never be tab le cells.
905 // If we have a lightweight clip, there can never be any overflow from child ren. 909 // If we have a lightweight clip, there can never be any overflow from child ren.
906 if (hasControlClip() && m_overflow) 910 if (hasControlClip() && m_overflow)
907 clearLayoutOverflow(); 911 clearLayoutOverflow();
908 912
909 invalidateBackgroundObscurationStatus(); 913 invalidateBackgroundObscurationStatus();
914
915 if (needsScrollAnchoring)
916 scrollableArea()->scrollAnchor().restore();
910 } 917 }
911 918
912 bool LayoutBlock::widthAvailableToChildrenHasChanged() 919 bool LayoutBlock::widthAvailableToChildrenHasChanged()
913 { 920 {
914 bool widthAvailableToChildrenHasChanged = m_widthAvailableToChildrenChanged; 921 bool widthAvailableToChildrenHasChanged = m_widthAvailableToChildrenChanged;
915 m_widthAvailableToChildrenChanged = false; 922 m_widthAvailableToChildrenChanged = false;
916 923
917 // If we use border-box sizing, have percentage padding, and our parent has changed width then the width available to our children has changed even 924 // If we use border-box sizing, have percentage padding, and our parent has changed width then the width available to our children has changed even
918 // though our own width has remained the same. 925 // though our own width has remained the same.
919 widthAvailableToChildrenHasChanged |= style()->boxSizing() == BORDER_BOX && needsPreferredWidthsRecalculation() && view()->layoutState()->containingBlockLog icalWidthChanged(); 926 widthAvailableToChildrenHasChanged |= style()->boxSizing() == BORDER_BOX && needsPreferredWidthsRecalculation() && view()->layoutState()->containingBlockLog icalWidthChanged();
(...skipping 1938 matching lines...) Expand 10 before | Expand all | Expand 10 after
2858 void LayoutBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Layout Object* obj) const 2865 void LayoutBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Layout Object* obj) const
2859 { 2866 {
2860 showLayoutObject(); 2867 showLayoutObject();
2861 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box()) 2868 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box())
2862 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1); 2869 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1);
2863 } 2870 }
2864 2871
2865 #endif 2872 #endif
2866 2873
2867 } // namespace blink 2874 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698