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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTableSection.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, 2013 Apple Inc. All rights 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009, 2013 Apple Inc. All rights
8 * reserved. 8 * 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 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 // border spacing, border collapsing, missing cells, etc. For simplicity, 334 // border spacing, border collapsing, missing cells, etc. For simplicity,
335 // just conservatively assume all table sections are not opaque. 335 // just conservatively assume all table sections are not opaque.
336 bool ForegroundIsKnownToBeOpaqueInRect(const LayoutRect&, 336 bool ForegroundIsKnownToBeOpaqueInRect(const LayoutRect&,
337 unsigned) const override { 337 unsigned) const override {
338 return false; 338 return false;
339 } 339 }
340 bool BackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const override { 340 bool BackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const override {
341 return false; 341 return false;
342 } 342 }
343 343
344 // Returns cell's position before any transformations are applied.
345 LayoutRect GetCellPosition(unsigned row, unsigned effective_column) const;
346 // Returns cell's position after transforms.
347 LayoutRect GetCellPhysicalPosition(unsigned row,
348 unsigned effective_column) const;
349
344 int PaginationStrutForRow(LayoutTableRow*, LayoutUnit logical_offset) const; 350 int PaginationStrutForRow(LayoutTableRow*, LayoutUnit logical_offset) const;
345 351
346 bool MapToVisualRectInAncestorSpaceInternal( 352 bool MapToVisualRectInAncestorSpaceInternal(
347 const LayoutBoxModelObject* ancestor, 353 const LayoutBoxModelObject* ancestor,
348 TransformState&, 354 TransformState&,
349 VisualRectFlags = kDefaultVisualRectFlags) const override; 355 VisualRectFlags = kDefaultVisualRectFlags) const override;
350 356
351 bool IsRepeatingHeaderGroup() const; 357 bool IsRepeatingHeaderGroup() const;
352 358
353 void UpdateLayout() override; 359 void UpdateLayout() override;
354 360
355 CellSpan FullSectionRowSpan() const { return CellSpan(0, grid_.size()); } 361 CellSpan FullSectionRowSpan() const { return CellSpan(0, grid_.size()); }
356 CellSpan FullTableEffectiveColumnSpan() const { 362 CellSpan FullTableEffectiveColumnSpan() const {
357 return CellSpan(0, Table()->NumEffectiveColumns()); 363 return CellSpan(0, Table()->NumEffectiveColumns());
358 } 364 }
359 365
366 // Collapsed borders are painted by the section
367 bool PaintedOutputOfObjectHasNoEffectRegardlessOfSize() const override {
368 return false;
369 }
370
360 protected: 371 protected:
361 void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override; 372 void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override;
362 bool NodeAtPoint(HitTestResult&, 373 bool NodeAtPoint(HitTestResult&,
363 const HitTestLocation& location_in_container, 374 const HitTestLocation& location_in_container,
364 const LayoutPoint& accumulated_offset, 375 const LayoutPoint& accumulated_offset,
365 HitTestAction) override; 376 HitTestAction) override;
366 377
367 private: 378 private:
368 bool IsOfType(LayoutObjectType type) const override { 379 bool IsOfType(LayoutObjectType type) const override {
369 return type == kLayoutObjectTableSection || LayoutBox::IsOfType(type); 380 return type == kLayoutObjectTableSection || LayoutBox::IsOfType(type);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 unsigned effective_column) const; 455 unsigned effective_column) const;
445 456
446 void RelayoutCellIfFlexed(LayoutTableCell&, int row_index, int row_height); 457 void RelayoutCellIfFlexed(LayoutTableCell&, int row_index, int row_height);
447 458
448 int LogicalHeightForRow(const LayoutTableRow&) const; 459 int LogicalHeightForRow(const LayoutTableRow&) const;
449 460
450 // Honor breaking restrictions inside the table row, and adjust position and 461 // Honor breaking restrictions inside the table row, and adjust position and
451 // size accordingly. 462 // size accordingly.
452 void AdjustRowForPagination(LayoutTableRow&, SubtreeLayoutScope&); 463 void AdjustRowForPagination(LayoutTableRow&, SubtreeLayoutScope&);
453 464
454 bool PaintedOutputOfObjectHasNoEffectRegardlessOfSize() const override; 465 LayoutRect TransformLogicalToPhysicalPosition(
466 const LayoutRect& position) const;
455 467
456 // The representation of the rows and their cells (CellStruct). 468 // The representation of the rows and their cells (CellStruct).
457 Vector<RowStruct> grid_; 469 Vector<RowStruct> grid_;
458 470
459 // The logical offset of each row from the top of the section. 471 // The logical offset of each row from the top of the section.
460 // 472 //
461 // Note that this Vector has one more entry than the number of rows so that 473 // Note that this Vector has one more entry than the number of rows so that
462 // we can keep track of the final size of the section. That is, 474 // we can keep track of the final size of the section. That is,
463 // m_rowPos[m_grid.size()] is a valid entry. 475 // m_rowPos[m_grid.size()] is a valid entry.
464 // 476 //
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 514
503 // Whether any cell spans multiple rows or cols. 515 // Whether any cell spans multiple rows or cols.
504 bool has_spanning_cells_; 516 bool has_spanning_cells_;
505 }; 517 };
506 518
507 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, IsTableSection()); 519 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, IsTableSection());
508 520
509 } // namespace blink 521 } // namespace blink
510 522
511 #endif // LayoutTableSection_h 523 #endif // LayoutTableSection_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutTableCol.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutTableSection.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698