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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTableCol.h

Issue 2791433003: Fix Border collapsing with colpsan / rowspan cells
Patch Set: bug 2902 Created 3 years, 8 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) 1997 Martin Jones (mjones@kde.org) 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org)
3 * (C) 1997 Torben Weis (weis@kde.org) 3 * (C) 1997 Torben Weis (weis@kde.org)
4 * (C) 1998 Waldo Bastian (bastian@kde.org) 4 * (C) 1998 Waldo Bastian (bastian@kde.org)
5 * (C) 1999 Lars Knoll (knoll@kde.org) 5 * (C) 1999 Lars Knoll (knoll@kde.org)
6 * (C) 1999 Antti Koivisto (koivisto@kde.org) 6 * (C) 1999 Antti Koivisto (koivisto@kde.org)
7 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved.
8 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 8 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 class LayoutTableCol final : public LayoutTableBoxComponent { 60 class LayoutTableCol final : public LayoutTableBoxComponent {
61 public: 61 public:
62 explicit LayoutTableCol(Element*); 62 explicit LayoutTableCol(Element*);
63 63
64 void ClearPreferredLogicalWidthsDirtyBits(); 64 void ClearPreferredLogicalWidthsDirtyBits();
65 65
66 // The 'span' attribute in HTML. 66 // The 'span' attribute in HTML.
67 // For CSS table columns or colgroups, this is always 1. 67 // For CSS table columns or colgroups, this is always 1.
68 unsigned Span() const { return span_; } 68 unsigned Span() const { return span_; }
69 69
70 bool IsTableColumnGroupWithColumnChildren() { return FirstChild(); } 70 bool IsTableColumnGroupWithColumnChildren() const { return FirstChild(); }
71 bool IsTableColumn() const { 71 bool IsTableColumn() const {
72 return Style()->Display() == EDisplay::kTableColumn; 72 return Style()->Display() == EDisplay::kTableColumn;
73 } 73 }
74 bool IsTableColumnGroup() const { 74 bool IsTableColumnGroup() const {
75 return Style()->Display() == EDisplay::kTableColumnGroup; 75 return Style()->Display() == EDisplay::kTableColumnGroup;
76 } 76 }
77 77
78 LayoutTableCol* EnclosingColumnGroup() const; 78 LayoutTableCol* EnclosingColumnGroup() const;
79 LayoutTableCol* LastColumnInGroup() const;
79 80
80 // Returns the next column or column-group. 81 // Returns the next column or column-group.
81 LayoutTableCol* NextColumn() const; 82 LayoutTableCol* NextColumn() const;
82 83
83 const BorderValue& BorderAdjoiningCellStartBorder( 84 const BorderValue& BorderAdjoiningCellStartBorder(
84 const LayoutTableCell*) const; 85 const LayoutTableCell*) const;
85 const BorderValue& BorderAdjoiningCellEndBorder(const LayoutTableCell*) const; 86 const BorderValue& BorderAdjoiningCellEndBorder(const LayoutTableCell*) const;
86 const BorderValue& BorderAdjoiningCellBefore(const LayoutTableCell*) const; 87 const BorderValue& BorderAdjoiningCellBefore(const LayoutTableCell*) const;
87 const BorderValue& BorderAdjoiningCellAfter(const LayoutTableCell*) const; 88 const BorderValue& BorderAdjoiningCellAfter(const LayoutTableCell*) const;
88 89
89 const char* GetName() const override { return "LayoutTableCol"; } 90 const char* GetName() const override { return "LayoutTableCol"; }
90 91
92 // Return indexes to all columns inside this element.
93 // Can return vector with size 0 if LayoutTableCol is out of range.
94 // <col> element can return size() > 2 if it spans multiple columns
95 // <colgroup> element can return any size.
96 Vector<unsigned> GetEffectiveColumnIndexes() const;
97
91 private: 98 private:
92 bool IsOfType(LayoutObjectType type) const override { 99 bool IsOfType(LayoutObjectType type) const override {
93 return type == kLayoutObjectLayoutTableCol || LayoutBox::IsOfType(type); 100 return type == kLayoutObjectLayoutTableCol || LayoutBox::IsOfType(type);
94 } 101 }
95 void UpdateFromElement() override; 102 void UpdateFromElement() override;
96 void ComputePreferredLogicalWidths() override { NOTREACHED(); } 103 void ComputePreferredLogicalWidths() override { NOTREACHED(); }
97 104
98 void InsertedIntoTree() override; 105 void InsertedIntoTree() override;
99 void WillBeRemovedFromTree() override; 106 void WillBeRemovedFromTree() override;
100 107
101 bool IsChildAllowed(LayoutObject*, const ComputedStyle&) const override; 108 bool IsChildAllowed(LayoutObject*, const ComputedStyle&) const override;
102 bool CanHaveChildren() const override; 109 bool CanHaveChildren() const override;
103 PaintLayerType LayerTypeRequired() const override { return kNoPaintLayer; } 110 PaintLayerType LayerTypeRequired() const override { return kNoPaintLayer; }
104 111
105 LayoutRect LocalVisualRect() const override; 112 LayoutRect LocalVisualRect() const override;
106 113
107 void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override; 114 void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override;
108 115
109 LayoutTable* Table() const; 116 LayoutTable* Table() const;
110 117
111 unsigned span_; 118 unsigned span_;
112 }; 119 };
113 120
114 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableCol, IsLayoutTableCol()); 121 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableCol, IsLayoutTableCol());
115 122
116 } // namespace blink 123 } // namespace blink
117 124
118 #endif 125 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutTableCell.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutTableCol.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698