Index: Source/core/rendering/RenderMultiColumnSpannerPlaceholder.h |
diff --git a/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.h b/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a581b2088aec09b33268d16a553bd40f2bccf26a |
--- /dev/null |
+++ b/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.h |
@@ -0,0 +1,46 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef RenderMultiColumnSpannerPlaceholder_h |
+#define RenderMultiColumnSpannerPlaceholder_h |
+ |
+#include "core/rendering/RenderBox.h" |
+ |
+namespace blink { |
+ |
+class RenderMultiColumnFlowThread; |
+ |
+// An empty placeholder box inserted at the position in the render tree where the column-span:all |
+// rendererer would naturally occur, had it not been column-span:all. A spanner box is moved from |
+// its original position to become a sibling of the column sets. In other words it becomes a direct |
+// child of the multicol container, since anything logically in the ancestry between the spanner and |
+// the multicol container shouldn't affect the spanner (e.g. such ancestors should not affect the |
+// size of the spanner, nor should their background be painted). The placeholder is used during flow |
+// thread layout to figure out when to move from one column set to the next. |
+class RenderMultiColumnSpannerPlaceholder FINAL : public RenderBox { |
+public: |
+ static RenderMultiColumnSpannerPlaceholder* createAnonymous(RenderMultiColumnFlowThread*, RenderBox* spanner, RenderStyle*); |
+ |
+ virtual bool isRenderMultiColumnSpannerPlaceholder() const OVERRIDE { return true; } |
+ |
+ // Get the actual spanner renderer; a sibling of the column sets. |
+ RenderBox* spanner() const { return m_spanner; } |
+ |
+ virtual void markForPaginationRelayoutIfNeeded(SubtreeLayoutScope&) OVERRIDE FINAL; |
+ virtual void layout() OVERRIDE FINAL; |
+ |
+private: |
+ RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread*, RenderBox* spanner); |
+ |
+ virtual const char* renderName() const OVERRIDE; |
+ |
+ RenderMultiColumnFlowThread* m_flowThread; |
+ RenderBox* m_spanner; |
+}; |
+ |
+DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderMultiColumnSpannerPlaceholder, isRenderMultiColumnSpannerPlaceholder()); |
+ |
+} // namespace blink |
+ |
+#endif // RenderMultiColumnSpannerPlaceholder_h |