Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutDeprecatedFlexibleBox.cpp

Issue 2382733002: Introduce markChildForPaginationRelayoutIfNeeded(). (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * This file is part of the layout object implementation for KHTML. 2 * This file is part of the layout object implementation for KHTML.
3 * 3 *
4 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 4 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
5 * (C) 1999 Antti Koivisto (koivisto@kde.org) 5 * (C) 1999 Antti Koivisto (koivisto@kde.org)
6 * Copyright (C) 2003 Apple Computer, Inc. 6 * Copyright (C) 2003 Apple Computer, Inc.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 SubtreeLayoutScope layoutScope(*child); 445 SubtreeLayoutScope layoutScope(*child);
446 // TODO(jchaffraix): It seems incorrect to check isAtomicInlineLevel in this file. 446 // TODO(jchaffraix): It seems incorrect to check isAtomicInlineLevel in this file.
447 // We probably want to check if the element is replaced. 447 // We probably want to check if the element is replaced.
448 if (relayoutChildren || (child->isAtomicInlineLevel() && (child->sty le()->width().isPercentOrCalc() || child->style()->height().isPercentOrCalc()))) 448 if (relayoutChildren || (child->isAtomicInlineLevel() && (child->sty le()->width().isPercentOrCalc() || child->style()->height().isPercentOrCalc())))
449 layoutScope.setChildNeedsLayout(child); 449 layoutScope.setChildNeedsLayout(child);
450 450
451 // Compute the child's vertical margins. 451 // Compute the child's vertical margins.
452 child->computeAndSetBlockDirectionMargins(this); 452 child->computeAndSetBlockDirectionMargins(this);
453 453
454 if (!child->needsLayout()) 454 if (!child->needsLayout())
455 child->markForPaginationRelayoutIfNeeded(layoutScope); 455 markChildForPaginationRelayoutIfNeeded(*child, layoutScope);
456 456
457 // Now do the layout. 457 // Now do the layout.
458 child->layoutIfNeeded(); 458 child->layoutIfNeeded();
459 459
460 // Update our height and overflow height. 460 // Update our height and overflow height.
461 if (style()->boxAlign() == BBASELINE) { 461 if (style()->boxAlign() == BBASELINE) {
462 LayoutUnit ascent(child->firstLineBoxBaseline()); 462 LayoutUnit ascent(child->firstLineBoxBaseline());
463 if (ascent == -1) 463 if (ascent == -1)
464 ascent = child->size().height() + child->marginBottom(); 464 ascent = child->size().height() + child->marginBottom();
465 ascent += child->marginTop(); 465 ascent += child->marginTop();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 // here, though. Need to do that from within layout, or we won't be able to detect the 519 // here, though. Need to do that from within layout, or we won't be able to detect the
520 // change and duly notify any positioned descendants that are affect ed by it. 520 // change and duly notify any positioned descendants that are affect ed by it.
521 LayoutUnit oldChildHeight = child->logicalHeight(); 521 LayoutUnit oldChildHeight = child->logicalHeight();
522 LogicalExtentComputedValues computedValues; 522 LogicalExtentComputedValues computedValues;
523 child->computeLogicalHeight(child->logicalHeight(), child->logicalTo p(), computedValues); 523 child->computeLogicalHeight(child->logicalHeight(), child->logicalTo p(), computedValues);
524 LayoutUnit newChildHeight = computedValues.m_extent; 524 LayoutUnit newChildHeight = computedValues.m_extent;
525 if (oldChildHeight != newChildHeight) 525 if (oldChildHeight != newChildHeight)
526 layoutScope.setChildNeedsLayout(child); 526 layoutScope.setChildNeedsLayout(child);
527 527
528 if (!child->needsLayout()) 528 if (!child->needsLayout())
529 child->markForPaginationRelayoutIfNeeded(layoutScope); 529 markChildForPaginationRelayoutIfNeeded(*child, layoutScope);
530 530
531 child->layoutIfNeeded(); 531 child->layoutIfNeeded();
532 532
533 // We can place the child now, using our value of box-align. 533 // We can place the child now, using our value of box-align.
534 xPos += child->marginLeft(); 534 xPos += child->marginLeft();
535 LayoutUnit childY = yPos; 535 LayoutUnit childY = yPos;
536 switch (style()->boxAlign()) { 536 switch (style()->boxAlign()) {
537 case BCENTER: 537 case BCENTER:
538 childY += child->marginTop() + ((contentHeight() - (child->size( ).height() + child->marginHeight())) / 2).clampNegativeToZero(); 538 childY += child->marginTop() + ((contentHeight() - (child->size( ).height() + child->marginHeight())) / 2).clampNegativeToZero();
539 break; 539 break;
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 continue; 755 continue;
756 } 756 }
757 757
758 // Compute the child's vertical margins. 758 // Compute the child's vertical margins.
759 child->computeAndSetBlockDirectionMargins(this); 759 child->computeAndSetBlockDirectionMargins(this);
760 760
761 // Add in the child's marginTop to our height. 761 // Add in the child's marginTop to our height.
762 setHeight(size().height() + child->marginTop()); 762 setHeight(size().height() + child->marginTop());
763 763
764 if (!child->needsLayout()) 764 if (!child->needsLayout())
765 child->markForPaginationRelayoutIfNeeded(layoutScope); 765 markChildForPaginationRelayoutIfNeeded(*child, layoutScope);
766 766
767 // Now do a layout. 767 // Now do a layout.
768 child->layoutIfNeeded(); 768 child->layoutIfNeeded();
769 769
770 // We can place the child now, using our value of box-align. 770 // We can place the child now, using our value of box-align.
771 LayoutUnit childX = borderLeft() + paddingLeft(); 771 LayoutUnit childX = borderLeft() + paddingLeft();
772 switch (style()->boxAlign()) { 772 switch (style()->boxAlign()) {
773 case BCENTER: 773 case BCENTER:
774 case BBASELINE: // Baseline just maps to center for vertical boxes 774 case BBASELINE: // Baseline just maps to center for vertical boxes
775 childX += child->marginLeft() + ((contentWidth() - (child->size( ).width() + child->marginWidth())) / 2).clampNegativeToZero(); 775 childX += child->marginLeft() + ((contentWidth() - (child->size( ).width() + child->marginWidth())) / 2).clampNegativeToZero();
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 if (minHeight.isFixed() || minHeight.isAuto()) { 1108 if (minHeight.isFixed() || minHeight.isAuto()) {
1109 LayoutUnit minHeight(child->style()->minHeight().value()); 1109 LayoutUnit minHeight(child->style()->minHeight().value());
1110 LayoutUnit height = contentHeightForChild(child); 1110 LayoutUnit height = contentHeightForChild(child);
1111 LayoutUnit allowedShrinkage = (minHeight - height).clampPositiveToZero() ; 1111 LayoutUnit allowedShrinkage = (minHeight - height).clampPositiveToZero() ;
1112 return allowedShrinkage; 1112 return allowedShrinkage;
1113 } 1113 }
1114 return LayoutUnit(); 1114 return LayoutUnit();
1115 } 1115 }
1116 1116
1117 } // namespace blink 1117 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBox.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698