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

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

Issue 1892793002: Invalidate column rules when the width of a multicol container changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 335
336 void LayoutMultiColumnSet::endFlow(LayoutUnit offsetInFlowThread) 336 void LayoutMultiColumnSet::endFlow(LayoutUnit offsetInFlowThread)
337 { 337 {
338 // At this point layout is exactly at the end of this set. Store block offse t from flow thread 338 // At this point layout is exactly at the end of this set. Store block offse t from flow thread
339 // start. This set is now considered "flowed", although we may have to revis it it later (with 339 // start. This set is now considered "flowed", although we may have to revis it it later (with
340 // beginFlow()), e.g. if a subtree in the flow thread has to be laid out ove r again because the 340 // beginFlow()), e.g. if a subtree in the flow thread has to be laid out ove r again because the
341 // initial margin collapsing estimates were wrong. 341 // initial margin collapsing estimates were wrong.
342 m_fragmentainerGroups.last().setLogicalBottomInFlowThread(offsetInFlowThread ); 342 m_fragmentainerGroups.last().setLogicalBottomInFlowThread(offsetInFlowThread );
343 } 343 }
344 344
345 void LayoutMultiColumnSet::styleDidChange(StyleDifference diff, const ComputedSt yle* oldStyle)
346 {
347 LayoutBlockFlow::styleDidChange(diff, oldStyle);
348
349 // column-rule is specified on the parent (the multicol container) of this o bject, but it's the
350 // column sets that are in charge of painting them. A column rule is pretty much like any other
351 // box decoration, like borders. We need to say that we have box decorations here, so that the
352 // columnn set is invalidated when it gets laid out. We cannot check here wh ether the multicol
353 // container actually has a visible column rule or not, because we may not h ave been inserted
354 // into the tree yet. Painting a column set is cheap anyway, because the onl y thing it can
355 // paint is the column rule, while actual multicol content is handled by the flow thread.
356 setHasBoxDecorationBackground(true);
357 }
358
345 void LayoutMultiColumnSet::layout() 359 void LayoutMultiColumnSet::layout()
346 { 360 {
347 if (recalculateColumnHeight()) 361 if (recalculateColumnHeight())
348 multiColumnFlowThread()->setColumnHeightsChanged(); 362 multiColumnFlowThread()->setColumnHeightsChanged();
349 LayoutBlockFlow::layout(); 363 LayoutBlockFlow::layout();
350 } 364 }
351 365
352 void LayoutMultiColumnSet::computeIntrinsicLogicalWidths(LayoutUnit& minLogicalW idth, LayoutUnit& maxLogicalWidth) const 366 void LayoutMultiColumnSet::computeIntrinsicLogicalWidths(LayoutUnit& minLogicalW idth, LayoutUnit& maxLogicalWidth) const
353 { 367 {
354 minLogicalWidth = m_flowThread->minPreferredLogicalWidth(); 368 minLogicalWidth = m_flowThread->minPreferredLogicalWidth();
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 467
454 LayoutRect LayoutMultiColumnSet::flowThreadPortionRect() const 468 LayoutRect LayoutMultiColumnSet::flowThreadPortionRect() const
455 { 469 {
456 LayoutRect portionRect(LayoutUnit(), logicalTopInFlowThread(), pageLogicalWi dth(), logicalHeightInFlowThread()); 470 LayoutRect portionRect(LayoutUnit(), logicalTopInFlowThread(), pageLogicalWi dth(), logicalHeightInFlowThread());
457 if (!isHorizontalWritingMode()) 471 if (!isHorizontalWritingMode())
458 return portionRect.transposedRect(); 472 return portionRect.transposedRect();
459 return portionRect; 473 return portionRect;
460 } 474 }
461 475
462 } // namespace blink 476 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutMultiColumnSet.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698