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

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

Issue 2493833004: InitialColumnHeightFinder needs to take all expected rows into account. (Closed)
Patch Set: Code review Created 4 years, 1 month 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 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 LayoutMultiColumnFlowThread::enclosingFragmentationContext() const { 584 LayoutMultiColumnFlowThread::enclosingFragmentationContext() const {
585 if (LayoutMultiColumnFlowThread* enclosingFlowThread = 585 if (LayoutMultiColumnFlowThread* enclosingFlowThread =
586 this->enclosingFlowThread()) 586 this->enclosingFlowThread())
587 return enclosingFlowThread; 587 return enclosingFlowThread;
588 return view()->fragmentationContext(); 588 return view()->fragmentationContext();
589 } 589 }
590 590
591 void LayoutMultiColumnFlowThread::appendNewFragmentainerGroupIfNeeded( 591 void LayoutMultiColumnFlowThread::appendNewFragmentainerGroupIfNeeded(
592 LayoutUnit offsetInFlowThread, 592 LayoutUnit offsetInFlowThread,
593 PageBoundaryRule pageBoundaryRule) { 593 PageBoundaryRule pageBoundaryRule) {
594 if (!isPageLogicalHeightKnown()) {
595 // If we have no clue about the height of the multicol container, bail. This
596 // situation occurs initially when an auto-height multicol container is
597 // nested inside another auto-height multicol container. We need at least an
598 // estimated height of the outer multicol container before we can check what
599 // an inner fragmentainer group has room for.
600 // Its height is indefinite for now.
601 return;
602 }
603 LayoutMultiColumnSet* columnSet = 594 LayoutMultiColumnSet* columnSet =
604 columnSetAtBlockOffset(offsetInFlowThread, pageBoundaryRule); 595 columnSetAtBlockOffset(offsetInFlowThread, pageBoundaryRule);
605 if (columnSet->isInitialHeightCalculated()) { 596 if (!columnSet->newFragmentainerGroupsAllowed())
606 // We only insert additional fragmentainer groups in the initial layout
607 // pass. We only want to balance columns in the last fragmentainer group (if
608 // we need to balance at all), so we want that last fragmentainer group to
609 // be the same one in all layout passes that follow.
610 return; 597 return;
611 }
612 598
613 if (!columnSet->hasFragmentainerGroupForColumnAt(offsetInFlowThread, 599 if (!columnSet->hasFragmentainerGroupForColumnAt(offsetInFlowThread,
614 pageBoundaryRule)) { 600 pageBoundaryRule)) {
615 FragmentationContext* enclosingFragmentationContext = 601 FragmentationContext* enclosingFragmentationContext =
616 this->enclosingFragmentationContext(); 602 this->enclosingFragmentationContext();
617 // Not nested. We'll never need more rows than the one we already have then. 603 // Not nested. We'll never need more rows than the one we already have then.
618 if (!enclosingFragmentationContext) 604 if (!enclosingFragmentationContext)
619 return; 605 return;
620 ASSERT(!isLayoutPagedFlowThread()); 606 ASSERT(!isLayoutPagedFlowThread());
621 607
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
1334 const { 1320 const {
1335 return MultiColumnLayoutState(m_lastSetWorkedOn); 1321 return MultiColumnLayoutState(m_lastSetWorkedOn);
1336 } 1322 }
1337 1323
1338 void LayoutMultiColumnFlowThread::restoreMultiColumnLayoutState( 1324 void LayoutMultiColumnFlowThread::restoreMultiColumnLayoutState(
1339 const MultiColumnLayoutState& state) { 1325 const MultiColumnLayoutState& state) {
1340 m_lastSetWorkedOn = state.columnSet(); 1326 m_lastSetWorkedOn = state.columnSet();
1341 } 1327 }
1342 1328
1343 } // namespace blink 1329 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/ColumnBalancer.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698