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 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 paginationStrut += logicalTop + marginBeforeIfFloating(); | 714 paginationStrut += logicalTop + marginBeforeIfFloating(); |
715 setPaginationStrutPropagatedFromChild(paginationStrut); | 715 setPaginationStrutPropagatedFromChild(paginationStrut); |
716 if (childBlockFlow) | 716 if (childBlockFlow) |
717 childBlockFlow->setPaginationStrutPropagatedFromChild(LayoutUnit
()); | 717 childBlockFlow->setPaginationStrutPropagatedFromChild(LayoutUnit
()); |
718 } else { | 718 } else { |
719 child.setPaginationStrut(paginationStrut); | 719 child.setPaginationStrut(paginationStrut); |
720 newLogicalTop += paginationStrut; | 720 newLogicalTop += paginationStrut; |
721 } | 721 } |
722 } | 722 } |
723 | 723 |
724 paginatedContentWasLaidOut(newLogicalTop); | 724 paginatedContentWasLaidOut(newLogicalTop + child.logicalHeight()); |
725 | 725 |
726 // Similar to how we apply clearance. Go ahead and boost height() to be the
place where we're going to position the child. | 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 setLogicalHeight(logicalHeight() + (newLogicalTop - logicalTop)); | 727 setLogicalHeight(logicalHeight() + (newLogicalTop - logicalTop)); |
728 | 728 |
729 // Return the final adjusted logical top. | 729 // Return the final adjusted logical top. |
730 return newLogicalTop; | 730 return newLogicalTop; |
731 } | 731 } |
732 | 732 |
733 static bool shouldSetStrutOnBlock(const LayoutBlockFlow& block, const RootInline
Box& lineBox, LayoutUnit lineLogicalOffset, int lineIndex, LayoutUnit pageLogica
lHeight) | 733 static bool shouldSetStrutOnBlock(const LayoutBlockFlow& block, const RootInline
Box& lineBox, LayoutUnit lineLogicalOffset, int lineIndex, LayoutUnit pageLogica
lHeight) |
734 { | 734 { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 if (!pageLogicalHeight) | 774 if (!pageLogicalHeight) |
775 return; | 775 return; |
776 LayoutUnit remainingLogicalHeight = pageRemainingLogicalHeightForOffset(logi
calOffset, AssociateWithLatterPage); | 776 LayoutUnit remainingLogicalHeight = pageRemainingLogicalHeightForOffset(logi
calOffset, AssociateWithLatterPage); |
777 int lineIndex = lineCount(&lineBox); | 777 int lineIndex = lineCount(&lineBox); |
778 if (remainingLogicalHeight < lineHeight || (shouldBreakAtLineToAvoidWidow()
&& lineBreakToAvoidWidow() == lineIndex)) { | 778 if (remainingLogicalHeight < lineHeight || (shouldBreakAtLineToAvoidWidow()
&& lineBreakToAvoidWidow() == lineIndex)) { |
779 LayoutUnit paginationStrut = calculatePaginationStrutToFitContent(logica
lOffset, remainingLogicalHeight, lineHeight); | 779 LayoutUnit paginationStrut = calculatePaginationStrutToFitContent(logica
lOffset, remainingLogicalHeight, lineHeight); |
780 LayoutUnit newLogicalOffset = logicalOffset + paginationStrut; | 780 LayoutUnit newLogicalOffset = logicalOffset + paginationStrut; |
781 // The new offset may require us to insert a new row for columns (fragme
ntainer group). | 781 // The new offset may require us to insert a new row for columns (fragme
ntainer group). |
782 // Give the multicol machinery an opportunity to do so (before checking
the height of a | 782 // Give the multicol machinery an opportunity to do so (before checking
the height of a |
783 // column that wouldn't have existed yet otherwise). | 783 // column that wouldn't have existed yet otherwise). |
784 paginatedContentWasLaidOut(newLogicalOffset); | 784 paginatedContentWasLaidOut(newLogicalOffset + lineHeight); |
785 // Moving to a different page or column may mean that its height is diff
erent. | 785 // Moving to a different page or column may mean that its height is diff
erent. |
786 pageLogicalHeight = pageLogicalHeightForOffset(newLogicalOffset); | 786 pageLogicalHeight = pageLogicalHeightForOffset(newLogicalOffset); |
787 if (lineHeight > pageLogicalHeight) { | 787 if (lineHeight > pageLogicalHeight) { |
788 // Too tall to fit in one page / column. Give up. Don't push to the
next page / column. | 788 // Too tall to fit in one page / column. Give up. Don't push to the
next page / column. |
789 // TODO(mstensho): Get rid of this. This is just utter weirdness, bu
t the other browsers | 789 // TODO(mstensho): Get rid of this. This is just utter weirdness, bu
t the other browsers |
790 // also do something slightly similar, although in much more specifi
c cases than we do here, | 790 // also do something slightly similar, although in much more specifi
c cases than we do here, |
791 // and printing Google Docs depends on it. | 791 // and printing Google Docs depends on it. |
792 return; | 792 return; |
793 } | 793 } |
794 | 794 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
835 LayoutUnit strut = remainingLogicalHeight + totalLogicalOffset - pageLog
icalHeight; | 835 LayoutUnit strut = remainingLogicalHeight + totalLogicalOffset - pageLog
icalHeight; |
836 if (strut > 0) { | 836 if (strut > 0) { |
837 // The block starts in a previous column or page. Set a strut on the
block if there's | 837 // The block starts in a previous column or page. Set a strut on the
block if there's |
838 // room for the top border, padding and (if it's a float) margin and
the line in one | 838 // room for the top border, padding and (if it's a float) margin and
the line in one |
839 // column or page. | 839 // column or page. |
840 if (totalLogicalOffset + lineHeight <= pageLogicalHeight) | 840 if (totalLogicalOffset + lineHeight <= pageLogicalHeight) |
841 setPaginationStrutPropagatedFromChild(strut); | 841 setPaginationStrutPropagatedFromChild(strut); |
842 } | 842 } |
843 } | 843 } |
844 | 844 |
845 paginatedContentWasLaidOut(logicalOffset); | 845 paginatedContentWasLaidOut(logicalOffset + lineHeight); |
846 } | 846 } |
847 | 847 |
848 LayoutUnit LayoutBlockFlow::adjustForUnsplittableChild(LayoutBox& child, LayoutU
nit logicalOffset) const | 848 LayoutUnit LayoutBlockFlow::adjustForUnsplittableChild(LayoutBox& child, LayoutU
nit logicalOffset) const |
849 { | 849 { |
850 if (child.paginationBreakability() == AllowAnyBreaks) | 850 if (child.paginationBreakability() == AllowAnyBreaks) |
851 return logicalOffset; | 851 return logicalOffset; |
852 LayoutUnit childLogicalHeight = logicalHeightForChild(child); | 852 LayoutUnit childLogicalHeight = logicalHeightForChild(child); |
853 // Floats' margins do not collapse with page or column boundaries. | 853 // Floats' margins do not collapse with page or column boundaries. |
854 if (child.isFloating()) | 854 if (child.isFloating()) |
855 childLogicalHeight += marginBeforeForChild(child) + marginAfterForChild(
child); | 855 childLogicalHeight += marginBeforeForChild(child) + marginAfterForChild(
child); |
(...skipping 2268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3124 FrameView* frameView = document().view(); | 3124 FrameView* frameView = document().view(); |
3125 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr
ollOffset().height(); | 3125 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr
ollOffset().height(); |
3126 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height(
); | 3126 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height(
); |
3127 if (size().height() < visibleHeight) | 3127 if (size().height() < visibleHeight) |
3128 top += (visibleHeight - size().height()) / 2; | 3128 top += (visibleHeight - size().height()) / 2; |
3129 setY(top); | 3129 setY(top); |
3130 dialog->setCentered(top); | 3130 dialog->setCentered(top); |
3131 } | 3131 } |
3132 | 3132 |
3133 } // namespace blink | 3133 } // namespace blink |
OLD | NEW |