| OLD | NEW |
| 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. All rights reserv
ed. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010 Apple Inc. All rights reserv
ed. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 LayoutTableSection* sectionBelow(const LayoutTableSection*, SkipEmptySection
sValue = DoNotSkipEmptySections) const; | 297 LayoutTableSection* sectionBelow(const LayoutTableSection*, SkipEmptySection
sValue = DoNotSkipEmptySections) const; |
| 298 | 298 |
| 299 LayoutTableCell* cellAbove(const LayoutTableCell*) const; | 299 LayoutTableCell* cellAbove(const LayoutTableCell*) const; |
| 300 LayoutTableCell* cellBelow(const LayoutTableCell*) const; | 300 LayoutTableCell* cellBelow(const LayoutTableCell*) const; |
| 301 LayoutTableCell* cellBefore(const LayoutTableCell*) const; | 301 LayoutTableCell* cellBefore(const LayoutTableCell*) const; |
| 302 LayoutTableCell* cellAfter(const LayoutTableCell*) const; | 302 LayoutTableCell* cellAfter(const LayoutTableCell*) const; |
| 303 | 303 |
| 304 typedef Vector<CollapsedBorderValue> CollapsedBorderValues; | 304 typedef Vector<CollapsedBorderValue> CollapsedBorderValues; |
| 305 void invalidateCollapsedBorders(); | 305 void invalidateCollapsedBorders(); |
| 306 | 306 |
| 307 // TODO(wangxianzhu): This method should be moved into TablePainter. | |
| 308 const CollapsedBorderValue* currentBorderValue() const { return m_currentBor
der; } | |
| 309 void setCurrentBorderValue(const CollapsedBorderValue* val) const { m_curren
tBorder = val; } | |
| 310 | |
| 311 bool hasSections() const { return m_head || m_foot || m_firstBody; } | 307 bool hasSections() const { return m_head || m_foot || m_firstBody; } |
| 312 | 308 |
| 313 void recalcSectionsIfNeeded() const | 309 void recalcSectionsIfNeeded() const |
| 314 { | 310 { |
| 315 if (m_needsSectionRecalc) | 311 if (m_needsSectionRecalc) |
| 316 recalcSections(); | 312 recalcSections(); |
| 317 } | 313 } |
| 318 | 314 |
| 319 static LayoutTable* createAnonymousWithParent(const LayoutObject*); | 315 static LayoutTable* createAnonymousWithParent(const LayoutObject*); |
| 320 LayoutBox* createAnonymousBoxWithSameTypeAs(const LayoutObject* parent) cons
t override | 316 LayoutBox* createAnonymousBoxWithSameTypeAs(const LayoutObject* parent) cons
t override |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 | 373 |
| 378 void addOverflowFromChildren() override; | 374 void addOverflowFromChildren() override; |
| 379 | 375 |
| 380 void recalcSections() const; | 376 void recalcSections() const; |
| 381 void layoutCaption(LayoutTableCaption&); | 377 void layoutCaption(LayoutTableCaption&); |
| 382 | 378 |
| 383 void distributeExtraLogicalHeight(int extraLogicalHeight); | 379 void distributeExtraLogicalHeight(int extraLogicalHeight); |
| 384 | 380 |
| 385 void recalcCollapsedBordersIfNeeded(); | 381 void recalcCollapsedBordersIfNeeded(); |
| 386 | 382 |
| 387 // TODO(layout-dev): All mutables in this class (except for m_currentBorder)
are lazily updated by recalcSections() | 383 // TODO(layout-dev): All mutables in this class are lazily updated by recalc
Sections() |
| 388 // which is called by various getter methods (e.g. borderBefore(), borderAft
er()). They allow dirty layout even after | 384 // which is called by various getter methods (e.g. borderBefore(), borderAft
er()). |
| 389 // DocumentLifecycle::LayoutClean which seems not proper. crbug.com/538236. | 385 // They allow dirty layout even after DocumentLifecycle::LayoutClean which s
eems not proper. crbug.com/538236. |
| 390 | 386 |
| 391 mutable Vector<int> m_columnPos; | 387 mutable Vector<int> m_columnPos; |
| 392 | 388 |
| 393 // This Vector holds the columns counts over the entire table. | 389 // This Vector holds the columns counts over the entire table. |
| 394 // | 390 // |
| 395 // To save memory at the expense of massive code complexity, the code tries | 391 // To save memory at the expense of massive code complexity, the code tries |
| 396 // to coalesce columns. This means that we try to the wider column grouping | 392 // to coalesce columns. This means that we try to the wider column grouping |
| 397 // seen over the LayoutTableSections. | 393 // seen over the LayoutTableSections. |
| 398 // | 394 // |
| 399 // Note that this is also a defensive pattern as <td colspan="6666666666"> | 395 // Note that this is also a defensive pattern as <td colspan="6666666666"> |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 // | 428 // |
| 433 // The layout algorithm is delegated to TableLayoutAlgorithm. This enables | 429 // The layout algorithm is delegated to TableLayoutAlgorithm. This enables |
| 434 // changing 'table-layout' without having to reattach the <table>. | 430 // changing 'table-layout' without having to reattach the <table>. |
| 435 // | 431 // |
| 436 // As the algorithm is dependent on the style, this field is nullptr before | 432 // As the algorithm is dependent on the style, this field is nullptr before |
| 437 // the first style is applied in styleDidChange(). | 433 // the first style is applied in styleDidChange(). |
| 438 OwnPtr<TableLayoutAlgorithm> m_tableLayout; | 434 OwnPtr<TableLayoutAlgorithm> m_tableLayout; |
| 439 | 435 |
| 440 // A sorted list of all unique border values that we want to paint. | 436 // A sorted list of all unique border values that we want to paint. |
| 441 CollapsedBorderValues m_collapsedBorders; | 437 CollapsedBorderValues m_collapsedBorders; |
| 442 // Used by TablePainter during painting. | |
| 443 // TODO(wangxianzhu): Move it into painter. | |
| 444 mutable const CollapsedBorderValue* m_currentBorder; | |
| 445 bool m_collapsedBordersValid : 1; | 438 bool m_collapsedBordersValid : 1; |
| 446 | 439 |
| 447 mutable bool m_hasColElements : 1; | 440 mutable bool m_hasColElements : 1; |
| 448 mutable bool m_needsSectionRecalc : 1; | 441 mutable bool m_needsSectionRecalc : 1; |
| 449 | 442 |
| 450 bool m_columnLogicalWidthChanged : 1; | 443 bool m_columnLogicalWidthChanged : 1; |
| 451 mutable bool m_columnLayoutObjectsValid: 1; | 444 mutable bool m_columnLayoutObjectsValid: 1; |
| 452 mutable bool m_hasCellColspanThatDeterminesTableWidth : 1; | 445 mutable bool m_hasCellColspanThatDeterminesTableWidth : 1; |
| 453 bool hasCellColspanThatDeterminesTableWidth() const | 446 bool hasCellColspanThatDeterminesTableWidth() const |
| 454 { | 447 { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 473 if (m_firstBody) | 466 if (m_firstBody) |
| 474 return m_firstBody; | 467 return m_firstBody; |
| 475 return m_foot; | 468 return m_foot; |
| 476 } | 469 } |
| 477 | 470 |
| 478 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTable, isTable()); | 471 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTable, isTable()); |
| 479 | 472 |
| 480 } // namespace blink | 473 } // namespace blink |
| 481 | 474 |
| 482 #endif // LayoutTable_h | 475 #endif // LayoutTable_h |
| OLD | NEW |