OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
5 * 2000 Dirk Mueller <mueller@kde.org> | 5 * 2000 Dirk Mueller <mueller@kde.org> |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
9 * Copyright (C) 2009 Google Inc. All rights reserved. | 9 * Copyright (C) 2009 Google Inc. All rights reserved. |
10 * | 10 * |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 flags |= RenderLayer::NeedsFullRepaintInBacking; | 100 flags |= RenderLayer::NeedsFullRepaintInBacking; |
101 } | 101 } |
102 if (isRelayoutingSubtree && layer->isPaginated()) | 102 if (isRelayoutingSubtree && layer->isPaginated()) |
103 flags |= RenderLayer::UpdatePagination; | 103 flags |= RenderLayer::UpdatePagination; |
104 return flags; | 104 return flags; |
105 } | 105 } |
106 | 106 |
107 class FrameViewLayoutStateMaintainer { | 107 class FrameViewLayoutStateMaintainer { |
108 WTF_MAKE_NONCOPYABLE(FrameViewLayoutStateMaintainer); | 108 WTF_MAKE_NONCOPYABLE(FrameViewLayoutStateMaintainer); |
109 public: | 109 public: |
110 FrameViewLayoutStateMaintainer(RenderObject& root) | 110 FrameViewLayoutStateMaintainer(RenderObject& root, bool inSubtreeLayout) |
111 : m_view(*root.view()) | 111 : m_view(*root.view()) |
112 , m_disabled(m_view.frameView()->isSubtreeLayout() && m_view.shouldDisab
leLayoutStateForSubtree(root)) | 112 , m_inSubtreeLayout(inSubtreeLayout) |
| 113 , m_disabled(inSubtreeLayout && m_view.shouldDisableLayoutStateForSubtre
e(root)) |
113 { | 114 { |
114 if (m_view.frameView()->isSubtreeLayout()) | 115 if (m_inSubtreeLayout) |
115 m_view.pushLayoutState(root); | 116 m_view.pushLayoutState(root); |
116 if (m_disabled) | 117 if (m_disabled) |
117 m_view.disableLayoutState(); | 118 m_view.disableLayoutState(); |
118 } | 119 } |
119 | 120 |
120 ~FrameViewLayoutStateMaintainer() | 121 ~FrameViewLayoutStateMaintainer() |
121 { | 122 { |
122 if (m_disabled) | 123 if (m_disabled) |
123 m_view.enableLayoutState(); | 124 m_view.enableLayoutState(); |
124 if (m_view.frameView()->isSubtreeLayout()) | 125 if (m_inSubtreeLayout) |
125 m_view.popLayoutState(); | 126 m_view.popLayoutState(); |
126 } | 127 } |
127 private: | 128 private: |
128 RenderView& m_view; | 129 RenderView& m_view; |
| 130 bool m_inSubtreeLayout; |
129 bool m_disabled; | 131 bool m_disabled; |
130 }; | 132 }; |
131 | 133 |
132 FrameView::FrameView(LocalFrame* frame) | 134 FrameView::FrameView(LocalFrame* frame) |
133 : m_frame(frame) | 135 : m_frame(frame) |
134 , m_canHaveScrollbars(true) | 136 , m_canHaveScrollbars(true) |
135 , m_slowRepaintObjectCount(0) | 137 , m_slowRepaintObjectCount(0) |
136 , m_hasPendingLayout(false) | 138 , m_hasPendingLayout(false) |
137 , m_layoutSubtreeRoot(0) | 139 , m_layoutSubtreeRoot(0) |
138 , m_inSynchronousPostLayout(false) | 140 , m_inSynchronousPostLayout(false) |
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
790 | 792 |
791 ASSERT(!isInPerformLayout()); | 793 ASSERT(!isInPerformLayout()); |
792 lifecycle().advanceTo(DocumentLifecycle::InPerformLayout); | 794 lifecycle().advanceTo(DocumentLifecycle::InPerformLayout); |
793 | 795 |
794 TemporaryChange<bool> changeInPerformLayout(m_inPerformLayout, true); | 796 TemporaryChange<bool> changeInPerformLayout(m_inPerformLayout, true); |
795 | 797 |
796 // performLayout is the actual guts of layout(). | 798 // performLayout is the actual guts of layout(). |
797 // FIXME: The 300 other lines in layout() probably belong in other helper fu
nctions | 799 // FIXME: The 300 other lines in layout() probably belong in other helper fu
nctions |
798 // so that a single human could understand what layout() is actually doing. | 800 // so that a single human could understand what layout() is actually doing. |
799 | 801 |
800 FrameViewLayoutStateMaintainer statePusher(*rootForThisLayout); | 802 FrameViewLayoutStateMaintainer statePusher(*rootForThisLayout, inSubtreeLayo
ut); |
801 forceLayoutParentViewIfNeeded(); | 803 forceLayoutParentViewIfNeeded(); |
802 | 804 |
803 { | 805 { |
804 // Text Autosizing requires two-pass layout which is incompatible with p
artial layout. | 806 // Text Autosizing requires two-pass layout which is incompatible with p
artial layout. |
805 // If enabled, only do partial layout for the second layout. | 807 // If enabled, only do partial layout for the second layout. |
806 // FIXME (crbug.com/256657): Do not do two layouts for text autosizing. | 808 // FIXME (crbug.com/256657): Do not do two layouts for text autosizing. |
807 PartialLayoutDisabler partialLayoutDisabler(partialLayout(), m_frame->se
ttings() && m_frame->settings()->textAutosizingEnabled()); | 809 PartialLayoutDisabler partialLayoutDisabler(partialLayout(), m_frame->se
ttings() && m_frame->settings()->textAutosizingEnabled()); |
808 rootForThisLayout->layout(); | 810 rootForThisLayout->layout(); |
809 gatherDebugLayoutRects(rootForThisLayout); | 811 gatherDebugLayoutRects(rootForThisLayout); |
810 | 812 |
(...skipping 2382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3193 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o
rientation) | 3195 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o
rientation) |
3194 { | 3196 { |
3195 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); | 3197 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); |
3196 if (AXObjectCache* cache = axObjectCache()) { | 3198 if (AXObjectCache* cache = axObjectCache()) { |
3197 cache->remove(scrollbar); | 3199 cache->remove(scrollbar); |
3198 cache->handleScrollbarUpdate(this); | 3200 cache->handleScrollbarUpdate(this); |
3199 } | 3201 } |
3200 } | 3202 } |
3201 | 3203 |
3202 } // namespace WebCore | 3204 } // namespace WebCore |
OLD | NEW |