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, 2007, 2008, 2009 Apple Inc. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 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 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 return (BorderBefore() + PaddingBefore() + ContentLogicalHeight()).ToInt(); | 469 return (BorderBefore() + PaddingBefore() + ContentLogicalHeight()).ToInt(); |
470 } | 470 } |
471 | 471 |
472 void LayoutTableCell::StyleDidChange(StyleDifference diff, | 472 void LayoutTableCell::StyleDidChange(StyleDifference diff, |
473 const ComputedStyle* old_style) { | 473 const ComputedStyle* old_style) { |
474 DCHECK_EQ(Style()->Display(), EDisplay::kTableCell); | 474 DCHECK_EQ(Style()->Display(), EDisplay::kTableCell); |
475 | 475 |
476 LayoutBlockFlow::StyleDidChange(diff, old_style); | 476 LayoutBlockFlow::StyleDidChange(diff, old_style); |
477 SetHasBoxDecorationBackground(true); | 477 SetHasBoxDecorationBackground(true); |
478 | 478 |
479 if (Parent() && Section() && old_style && | 479 if (!old_style) |
480 Style()->Height() != old_style->Height()) | 480 return; |
| 481 |
| 482 if (Parent() && Section() && Style()->Height() != old_style->Height()) |
481 Section()->RowLogicalHeightChanged(Row()); | 483 Section()->RowLogicalHeightChanged(Row()); |
482 | 484 |
483 // Our intrinsic padding pushes us down to align with the baseline of other | 485 // Our intrinsic padding pushes us down to align with the baseline of other |
484 // cells on the row. If our vertical-align has changed then so will the | 486 // cells on the row. If our vertical-align has changed then so will the |
485 // padding needed to align with other cells - clear it so we can recalculate | 487 // padding needed to align with other cells - clear it so we can recalculate |
486 // it from scratch. | 488 // it from scratch. |
487 if (old_style && Style()->VerticalAlign() != old_style->VerticalAlign()) | 489 if (Style()->VerticalAlign() != old_style->VerticalAlign()) |
488 ClearIntrinsicPadding(); | 490 ClearIntrinsicPadding(); |
489 | 491 |
490 // If border was changed, notify table. | |
491 if (!Parent()) | 492 if (!Parent()) |
492 return; | 493 return; |
493 LayoutTable* table = this->Table(); | 494 LayoutTable* table = Table(); |
494 if (!table) | 495 if (!table) |
495 return; | 496 return; |
496 if (!table->SelfNeedsLayout() && !table->NormalChildNeedsLayout() && | 497 |
497 old_style && old_style->Border() != Style()->Border()) | 498 LayoutTableBoxComponent::InvalidateCollapsedBordersOnStyleChange( |
498 table->InvalidateCollapsedBorders(); | 499 *this, *table, diff, *old_style); |
499 | 500 |
500 if (LayoutTableBoxComponent::DoCellsHaveDirtyWidth(*this, *table, diff, | 501 if (LayoutTableBoxComponent::DoCellsHaveDirtyWidth(*this, *table, diff, |
501 *old_style)) { | 502 *old_style)) { |
502 if (PreviousCell()) { | 503 if (PreviousCell()) { |
503 // TODO(dgrogan) Add a layout test showing that setChildNeedsLayout is | 504 // TODO(dgrogan) Add a layout test showing that setChildNeedsLayout is |
504 // needed instead of setNeedsLayout. | 505 // needed instead of setNeedsLayout. |
505 PreviousCell()->SetChildNeedsLayout(); | 506 PreviousCell()->SetChildNeedsLayout(); |
506 PreviousCell()->SetPreferredLogicalWidthsDirty(kMarkOnlyThis); | 507 PreviousCell()->SetPreferredLogicalWidthsDirty(kMarkOnlyThis); |
507 } | 508 } |
508 if (NextCell()) { | 509 if (NextCell()) { |
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1481 } | 1482 } |
1482 | 1483 |
1483 bool LayoutTableCell::HasLineIfEmpty() const { | 1484 bool LayoutTableCell::HasLineIfEmpty() const { |
1484 if (GetNode() && HasEditableStyle(*GetNode())) | 1485 if (GetNode() && HasEditableStyle(*GetNode())) |
1485 return true; | 1486 return true; |
1486 | 1487 |
1487 return LayoutBlock::HasLineIfEmpty(); | 1488 return LayoutBlock::HasLineIfEmpty(); |
1488 } | 1489 } |
1489 | 1490 |
1490 } // namespace blink | 1491 } // namespace blink |
OLD | NEW |