Chromium Code Reviews| 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 23 matching lines...) Expand all Loading... | |
| 34 #include "core/frame/FrameView.h" | 34 #include "core/frame/FrameView.h" |
| 35 #include "core/frame/LocalFrame.h" | 35 #include "core/frame/LocalFrame.h" |
| 36 #include "core/frame/Settings.h" | 36 #include "core/frame/Settings.h" |
| 37 #include "core/html/HTMLDialogElement.h" | 37 #include "core/html/HTMLDialogElement.h" |
| 38 #include "core/layout/HitTestLocation.h" | 38 #include "core/layout/HitTestLocation.h" |
| 39 #include "core/layout/LayoutAnalyzer.h" | 39 #include "core/layout/LayoutAnalyzer.h" |
| 40 #include "core/layout/LayoutFlowThread.h" | 40 #include "core/layout/LayoutFlowThread.h" |
| 41 #include "core/layout/LayoutMultiColumnFlowThread.h" | 41 #include "core/layout/LayoutMultiColumnFlowThread.h" |
| 42 #include "core/layout/LayoutMultiColumnSpannerPlaceholder.h" | 42 #include "core/layout/LayoutMultiColumnSpannerPlaceholder.h" |
| 43 #include "core/layout/LayoutPagedFlowThread.h" | 43 #include "core/layout/LayoutPagedFlowThread.h" |
| 44 #include "core/layout/LayoutTableRow.h" | |
| 44 #include "core/layout/LayoutText.h" | 45 #include "core/layout/LayoutText.h" |
| 45 #include "core/layout/LayoutView.h" | 46 #include "core/layout/LayoutView.h" |
| 46 #include "core/layout/TextAutosizer.h" | 47 #include "core/layout/TextAutosizer.h" |
| 47 #include "core/layout/api/SelectionState.h" | 48 #include "core/layout/api/SelectionState.h" |
| 48 #include "core/layout/line/LineBreaker.h" | 49 #include "core/layout/line/LineBreaker.h" |
| 49 #include "core/layout/line/LineWidth.h" | 50 #include "core/layout/line/LineWidth.h" |
| 50 #include "core/layout/shapes/ShapeOutsideInfo.h" | 51 #include "core/layout/shapes/ShapeOutsideInfo.h" |
| 51 #include "core/paint/BlockFlowPainter.h" | 52 #include "core/paint/BlockFlowPainter.h" |
| 52 #include "core/paint/ClipScope.h" | 53 #include "core/paint/ClipScope.h" |
| 53 #include "core/paint/LayoutObjectDrawingRecorder.h" | 54 #include "core/paint/LayoutObjectDrawingRecorder.h" |
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 725 | 726 |
| 726 // Similar to how we apply clearance. Go ahead and boost height() to be the place where we're going to position the child. | 727 // Similar to how we apply clearance. Go ahead and boost height() to be the place where we're going to position the child. |
| 727 setLogicalHeight(logicalHeight() + (newLogicalTop - logicalTop)); | 728 setLogicalHeight(logicalHeight() + (newLogicalTop - logicalTop)); |
| 728 | 729 |
| 729 // Return the final adjusted logical top. | 730 // Return the final adjusted logical top. |
| 730 return newLogicalTop; | 731 return newLogicalTop; |
| 731 } | 732 } |
| 732 | 733 |
| 733 static bool shouldSetStrutOnBlock(const LayoutBlockFlow& block, const RootInline Box& lineBox, LayoutUnit lineLogicalOffset, int lineIndex, LayoutUnit pageLogica lHeight) | 734 static bool shouldSetStrutOnBlock(const LayoutBlockFlow& block, const RootInline Box& lineBox, LayoutUnit lineLogicalOffset, int lineIndex, LayoutUnit pageLogica lHeight) |
| 734 { | 735 { |
| 736 LayoutUnit lineHeight = lineBox.lineBottomWithLeading() - lineBox.lineTopWit hLeading(); | |
| 737 LayoutUnit totalLogicalHeight = lineHeight + std::max<LayoutUnit>(0, lineLog icalOffset); | |
| 738 | |
| 739 // We avoid letting table cells straddle a page boundary unless the cell is taller than the page. | |
| 740 if (block.isTableCell() && totalLogicalHeight <= pageLogicalHeight) | |
|
mstensho (USE GERRIT)
2016/02/03 14:38:48
It should be better to have allowsPaginationStrut(
| |
| 741 return true; | |
| 742 | |
| 735 bool wantsStrutOnBlock = false; | 743 bool wantsStrutOnBlock = false; |
| 736 if (!block.style()->hasAutoOrphans() && block.style()->orphans() >= lineInde x) { | 744 if (!block.style()->hasAutoOrphans() && block.style()->orphans() >= lineInde x) { |
| 737 // Not enough orphans here. Push the entire block to the next column / p age as an | 745 // Not enough orphans here. Push the entire block to the next column / p age as an |
| 738 // attempt to better satisfy the orphans requirement. | 746 // attempt to better satisfy the orphans requirement. |
| 739 wantsStrutOnBlock = true; | 747 wantsStrutOnBlock = true; |
| 740 } else if (lineBox == block.firstRootBox() && lineLogicalOffset == block.bor derAndPaddingBefore()) { | 748 } else if (lineBox == block.firstRootBox() && lineLogicalOffset == block.bor derAndPaddingBefore()) { |
| 741 // This is the first line in the block. We can take the whole block with us to the next page | 749 // This is the first line in the block. We can take the whole block with us to the next page |
| 742 // or column, rather than keeping a content-less portion of it in the pr evious one. Only do | 750 // or column, rather than keeping a content-less portion of it in the pr evious one. Only do |
| 743 // this if the line is flush with the content edge of the block, though. If it isn't, it | 751 // this if the line is flush with the content edge of the block, though. If it isn't, it |
| 744 // means that the line was pushed downwards by preceding floats that did n't fit beside the | 752 // means that the line was pushed downwards by preceding floats that did n't fit beside the |
| 745 // line, and we don't want to move all that, since it has already been e stablished that it | 753 // line, and we don't want to move all that, since it has already been e stablished that it |
| 746 // fits nicely where it is. | 754 // fits nicely where it is. |
| 747 LayoutUnit lineHeight = lineBox.lineBottomWithLeading() - lineBox.lineTo pWithLeading(); | |
| 748 LayoutUnit totalLogicalHeight = lineHeight + std::max<LayoutUnit>(0, lin eLogicalOffset); | |
| 749 // It's rather pointless to break before the block if the current line i sn't going to | 755 // It's rather pointless to break before the block if the current line i sn't going to |
| 750 // fit in the same column or page, so check that as well. | 756 // fit in the same column or page, so check that as well. |
| 751 if (totalLogicalHeight <= pageLogicalHeight) | 757 if (totalLogicalHeight <= pageLogicalHeight) |
| 752 wantsStrutOnBlock = true; | 758 wantsStrutOnBlock = true; |
| 753 } | 759 } |
| 754 return wantsStrutOnBlock && block.allowsPaginationStrut(); | 760 return wantsStrutOnBlock && block.allowsPaginationStrut(); |
| 755 } | 761 } |
| 756 | 762 |
| 757 void LayoutBlockFlow::adjustLinePositionForPagination(RootInlineBox& lineBox, La youtUnit& delta) | 763 void LayoutBlockFlow::adjustLinePositionForPagination(RootInlineBox& lineBox, La youtUnit& delta) |
| 758 { | 764 { |
| (...skipping 2365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3124 FrameView* frameView = document().view(); | 3130 FrameView* frameView = document().view(); |
| 3125 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr ollOffset().height(); | 3131 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr ollOffset().height(); |
| 3126 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height( ); | 3132 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height( ); |
| 3127 if (size().height() < visibleHeight) | 3133 if (size().height() < visibleHeight) |
| 3128 top += (visibleHeight - size().height()) / 2; | 3134 top += (visibleHeight - size().height()) / 2; |
| 3129 setY(top); | 3135 setY(top); |
| 3130 dialog->setCentered(top); | 3136 dialog->setCentered(top); |
| 3131 } | 3137 } |
| 3132 | 3138 |
| 3133 } // namespace blink | 3139 } // namespace blink |
| OLD | NEW |