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

Side by Side Diff: Source/core/rendering/RenderBlockFlow.cpp

Issue 789433006: [New Multicolumn] Let a spanner's containing block be the multicol container. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 24 matching lines...) Expand all
35 #include "core/frame/FrameView.h" 35 #include "core/frame/FrameView.h"
36 #include "core/frame/LocalFrame.h" 36 #include "core/frame/LocalFrame.h"
37 #include "core/frame/Settings.h" 37 #include "core/frame/Settings.h"
38 #include "core/html/HTMLDialogElement.h" 38 #include "core/html/HTMLDialogElement.h"
39 #include "core/paint/BlockFlowPainter.h" 39 #include "core/paint/BlockFlowPainter.h"
40 #include "core/paint/DrawingRecorder.h" 40 #include "core/paint/DrawingRecorder.h"
41 #include "core/rendering/HitTestLocation.h" 41 #include "core/rendering/HitTestLocation.h"
42 #include "core/rendering/RenderFlowThread.h" 42 #include "core/rendering/RenderFlowThread.h"
43 #include "core/rendering/RenderLayer.h" 43 #include "core/rendering/RenderLayer.h"
44 #include "core/rendering/RenderMultiColumnFlowThread.h" 44 #include "core/rendering/RenderMultiColumnFlowThread.h"
45 #include "core/rendering/RenderMultiColumnSpannerPlaceholder.h"
45 #include "core/rendering/RenderPagedFlowThread.h" 46 #include "core/rendering/RenderPagedFlowThread.h"
46 #include "core/rendering/RenderText.h" 47 #include "core/rendering/RenderText.h"
47 #include "core/rendering/RenderView.h" 48 #include "core/rendering/RenderView.h"
48 #include "core/rendering/TextAutosizer.h" 49 #include "core/rendering/TextAutosizer.h"
49 #include "core/rendering/line/LineWidth.h" 50 #include "core/rendering/line/LineWidth.h"
50 #include "platform/geometry/TransformState.h" 51 #include "platform/geometry/TransformState.h"
51 #include "platform/text/BidiTextRun.h" 52 #include "platform/text/BidiTextRun.h"
52 53
53 namespace blink { 54 namespace blink {
54 55
(...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 if (child->isOutOfFlowPositioned()) { 1051 if (child->isOutOfFlowPositioned()) {
1051 child->containingBlock()->insertPositionedObject(child); 1052 child->containingBlock()->insertPositionedObject(child);
1052 adjustPositionedBlock(*child, marginInfo); 1053 adjustPositionedBlock(*child, marginInfo);
1053 continue; 1054 continue;
1054 } 1055 }
1055 if (child->isFloating()) { 1056 if (child->isFloating()) {
1056 insertFloatingObject(*child); 1057 insertFloatingObject(*child);
1057 adjustFloatingBlock(marginInfo); 1058 adjustFloatingBlock(marginInfo);
1058 continue; 1059 continue;
1059 } 1060 }
1061 if (child->isColumnSpanAll()) {
1062 // This is not the containing block of the spanner. The spanner's pl aceholder will lay
1063 // it out in due course.
1064 continue;
1065 }
Julien - ping for review 2014/12/11 19:09:37 We have some code to avoid laying out some childre
mstensho (USE GERRIT) 2014/12/11 21:01:14 Then we would need to have layoutSpecialExcludedCh
Julien - ping for review 2014/12/11 23:45:44 No, we shouldn't do it as part of this change. The
1060 1066
1061 // Lay out the child. 1067 // Lay out the child.
1062 layoutBlockChild(*child, marginInfo, previousFloatLogicalBottom); 1068 layoutBlockChild(*child, marginInfo, previousFloatLogicalBottom);
1063 lastNormalFlowChild = child; 1069 lastNormalFlowChild = child;
1064 } 1070 }
1065 1071
1066 // Now do the handling of the bottom of the block, adding in our bottom bord er/padding and 1072 // Now do the handling of the bottom of the block, adding in our bottom bord er/padding and
1067 // determining the correct collapsed bottom margin information. 1073 // determining the correct collapsed bottom margin information.
1068 handleAfterSideOfBlock(lastNormalFlowChild, beforeEdge, afterEdge, marginInf o); 1074 handleAfterSideOfBlock(lastNormalFlowChild, beforeEdge, afterEdge, marginInf o);
1069 } 1075 }
(...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after
1964 } 1970 }
1965 1971
1966 parentBlockFlow->markAllDescendantsWithFloatsForLayout(); 1972 parentBlockFlow->markAllDescendantsWithFloatsForLayout();
1967 parentBlockFlow->markSiblingsWithFloatsForLayout(); 1973 parentBlockFlow->markSiblingsWithFloatsForLayout();
1968 } 1974 }
1969 1975
1970 if (diff.needsFullLayout() || !oldStyle) 1976 if (diff.needsFullLayout() || !oldStyle)
1971 createOrDestroyMultiColumnFlowThreadIfNeeded(oldStyle); 1977 createOrDestroyMultiColumnFlowThreadIfNeeded(oldStyle);
1972 } 1978 }
1973 1979
1980 void RenderBlockFlow::updateBlockChildDirtyBitsBeforeLayout(bool relayoutChildre n, RenderBox& child)
1981 {
1982 if (child.isRenderMultiColumnSpannerPlaceholder() && toRenderMultiColumnSpan nerPlaceholder(child).rendererInFlowThread()->needsLayout()) {
1983 // The containing block of a spanner is the multicol container (|this| b lock), but the spanner
1984 // is laid out via its spanner set (|child|), so we need to make sure th at we enter it.
1985 child.setChildNeedsLayout(MarkOnlyThis);
1986 }
1987 RenderBlock::updateBlockChildDirtyBitsBeforeLayout(relayoutChildren, child);
1988 }
1989
1974 void RenderBlockFlow::updateStaticInlinePositionForChild(RenderBox& child, Layou tUnit logicalTop) 1990 void RenderBlockFlow::updateStaticInlinePositionForChild(RenderBox& child, Layou tUnit logicalTop)
1975 { 1991 {
1976 if (child.style()->isOriginalDisplayInlineType()) 1992 if (child.style()->isOriginalDisplayInlineType())
1977 setStaticInlinePositionForChild(child, startAlignedOffsetForLine(logical Top, false)); 1993 setStaticInlinePositionForChild(child, startAlignedOffsetForLine(logical Top, false));
1978 else 1994 else
1979 setStaticInlinePositionForChild(child, startOffsetForContent()); 1995 setStaticInlinePositionForChild(child, startOffsetForContent());
1980 } 1996 }
1981 1997
1982 void RenderBlockFlow::setStaticInlinePositionForChild(RenderBox& child, LayoutUn it inlinePosition) 1998 void RenderBlockFlow::setStaticInlinePositionForChild(RenderBox& child, LayoutUn it inlinePosition)
1983 { 1999 {
(...skipping 1108 matching lines...) Expand 10 before | Expand all | Expand 10 after
3092 FrameView* frameView = document().view(); 3108 FrameView* frameView = document().view();
3093 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr ollOffset().height(); 3109 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr ollOffset().height();
3094 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height( ); 3110 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height( );
3095 if (height() < visibleHeight) 3111 if (height() < visibleHeight)
3096 top += (visibleHeight - height()) / 2; 3112 top += (visibleHeight - height()) / 2;
3097 setY(top); 3113 setY(top);
3098 dialog->setCentered(top); 3114 dialog->setCentered(top);
3099 } 3115 }
3100 3116
3101 } // namespace blink 3117 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698