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

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

Issue 2791433003: Fix Border collapsing with colpsan / rowspan cells
Patch Set: bug 2902 Created 3 years, 7 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, 2010 Apple Inc. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010 Apple Inc.
8 * All rights reserved. 8 * All rights reserved.
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 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 LayoutUnit RowOffsetFromRepeatingHeader() const { 273 LayoutUnit RowOffsetFromRepeatingHeader() const {
274 return row_offset_from_repeating_header_; 274 return row_offset_from_repeating_header_;
275 } 275 }
276 276
277 // This function returns 0 if the table has no section. 277 // This function returns 0 if the table has no section.
278 LayoutTableSection* TopSection() const; 278 LayoutTableSection* TopSection() const;
279 LayoutTableSection* BottomSection() const; 279 LayoutTableSection* BottomSection() const;
280 280
281 // This function returns 0 if the table has no non-empty sections. 281 // This function returns 0 if the table has no non-empty sections.
282 LayoutTableSection* TopNonEmptySection() const; 282 LayoutTableSection* TopNonEmptySection() const;
283 LayoutTableSection* BottomNonEmptySection() const;
283 284
284 unsigned LastEffectiveColumnIndex() const { 285 unsigned LastEffectiveColumnIndex() const {
285 return NumEffectiveColumns() - 1; 286 return NumEffectiveColumns() - 1;
286 } 287 }
287 288
288 void SplitEffectiveColumn(unsigned index, unsigned first_span); 289 void SplitEffectiveColumn(unsigned index, unsigned first_span);
289 void AppendEffectiveColumn(unsigned span); 290 void AppendEffectiveColumn(unsigned span);
290 unsigned NumEffectiveColumns() const { return effective_columns_.size(); } 291 unsigned NumEffectiveColumns() const { return effective_columns_.size(); }
291 unsigned SpanOfEffectiveColumn(unsigned effective_column_index) const { 292 unsigned SpanOfEffectiveColumn(unsigned effective_column_index) const {
292 return effective_columns_[effective_column_index].span; 293 return effective_columns_[effective_column_index].span;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 ColAndColGroup ColElementAtAbsoluteColumn( 373 ColAndColGroup ColElementAtAbsoluteColumn(
373 unsigned absolute_column_index) const { 374 unsigned absolute_column_index) const {
374 // The common case is to not have col/colgroup elements, make that case 375 // The common case is to not have col/colgroup elements, make that case
375 // fast. 376 // fast.
376 if (!has_col_elements_) 377 if (!has_col_elements_)
377 return ColAndColGroup(); 378 return ColAndColGroup();
378 return SlowColElementAtAbsoluteColumn(absolute_column_index); 379 return SlowColElementAtAbsoluteColumn(absolute_column_index);
379 } 380 }
380 bool HasColElements() const { return has_col_elements_; } 381 bool HasColElements() const { return has_col_elements_; }
381 382
383 static const unsigned npos = 0xFFFFFFFF;
384 unsigned ColElementToAbsoluteColumn(const LayoutTableCol*) const;
385
382 bool NeedsSectionRecalc() const { return needs_section_recalc_; } 386 bool NeedsSectionRecalc() const { return needs_section_recalc_; }
383 void SetNeedsSectionRecalc() { 387 void SetNeedsSectionRecalc() {
384 if (DocumentBeingDestroyed()) 388 if (DocumentBeingDestroyed())
385 return; 389 return;
386 // For all we know, sections may have been deleted at this point. Don't 390 // For all we know, sections may have been deleted at this point. Don't
387 // keep pointers dangling around. 391 // keep pointers dangling around.
388 head_ = nullptr; 392 head_ = nullptr;
389 foot_ = nullptr; 393 foot_ = nullptr;
390 first_body_ = nullptr; 394 first_body_ = nullptr;
391 395
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 if (first_body_) 621 if (first_body_)
618 return first_body_; 622 return first_body_;
619 return foot_; 623 return foot_;
620 } 624 }
621 625
622 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTable, IsTable()); 626 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTable, IsTable());
623 627
624 } // namespace blink 628 } // namespace blink
625 629
626 #endif // LayoutTable_h 630 #endif // LayoutTable_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698