| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 2588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2599 } | 2599 } |
| 2600 return (FirstLineBox()->LogicalTop() + | 2600 return (FirstLineBox()->LogicalTop() + |
| 2601 font_data->GetFontMetrics().Ascent(FirstRootBox()->BaselineType())) | 2601 font_data->GetFontMetrics().Ascent(FirstRootBox()->BaselineType())) |
| 2602 .ToInt(); | 2602 .ToInt(); |
| 2603 } | 2603 } |
| 2604 return -1; | 2604 return -1; |
| 2605 } | 2605 } |
| 2606 | 2606 |
| 2607 int LayoutBlockFlow::InlineBlockBaseline( | 2607 int LayoutBlockFlow::InlineBlockBaseline( |
| 2608 LineDirectionMode line_direction) const { | 2608 LineDirectionMode line_direction) const { |
| 2609 // CSS2.1 states that the baseline of an 'inline-block' is: | 2609 if (UseLogicalBottomMarginEdgeForInlineBlockBaseline()) { |
| 2610 // the baseline of the last line box in the normal flow, unless it has | |
| 2611 // either no in-flow line boxes or if its 'overflow' property has a computed | |
| 2612 // value other than 'visible', in which case the baseline is the bottom | |
| 2613 // margin edge. | |
| 2614 // We likewise avoid using the last line box in the case of size containment, | |
| 2615 // where the block's contents shouldn't be considered when laying out its | |
| 2616 // ancestors or siblings. | |
| 2617 | |
| 2618 if ((!Style()->IsOverflowVisible() && | |
| 2619 !ShouldIgnoreOverflowPropertyForInlineBlockBaseline()) || | |
| 2620 Style()->ContainsSize()) { | |
| 2621 // We are not calling baselinePosition here because the caller should add | 2610 // We are not calling baselinePosition here because the caller should add |
| 2622 // the margin-top/margin-right, not us. | 2611 // the margin-top/margin-right, not us. |
| 2623 return (line_direction == kHorizontalLine ? Size().Height() + MarginBottom() | 2612 return (line_direction == kHorizontalLine ? Size().Height() + MarginBottom() |
| 2624 : Size().Width() + MarginLeft()) | 2613 : Size().Width() + MarginLeft()) |
| 2625 .ToInt(); | 2614 .ToInt(); |
| 2626 } | 2615 } |
| 2627 if (IsWritingModeRoot() && !IsRubyRun()) | 2616 if (IsWritingModeRoot() && !IsRubyRun()) |
| 2628 return -1; | 2617 return -1; |
| 2629 if (!ChildrenInline()) | 2618 if (!ChildrenInline()) |
| 2630 return LayoutBlock::InlineBlockBaseline(line_direction); | 2619 return LayoutBlock::InlineBlockBaseline(line_direction); |
| (...skipping 2112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4743 include_block_overflows); | 4732 include_block_overflows); |
| 4744 } | 4733 } |
| 4745 | 4734 |
| 4746 void LayoutBlockFlow::InvalidateDisplayItemClients( | 4735 void LayoutBlockFlow::InvalidateDisplayItemClients( |
| 4747 PaintInvalidationReason invalidation_reason) const { | 4736 PaintInvalidationReason invalidation_reason) const { |
| 4748 BlockFlowPaintInvalidator(*this).InvalidateDisplayItemClients( | 4737 BlockFlowPaintInvalidator(*this).InvalidateDisplayItemClients( |
| 4749 invalidation_reason); | 4738 invalidation_reason); |
| 4750 } | 4739 } |
| 4751 | 4740 |
| 4752 } // namespace blink | 4741 } // namespace blink |
| OLD | NEW |