| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
| 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
| 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 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 3373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3384 desiredColumnWidth = ((availWidth + colGap) / desiredColumnCount) - colG
ap; | 3384 desiredColumnWidth = ((availWidth + colGap) / desiredColumnCount) - colG
ap; |
| 3385 } else { | 3385 } else { |
| 3386 desiredColumnCount = max<LayoutUnit>(min<LayoutUnit>(colCount, (availWid
th + colGap) / (colWidth + colGap)), 1); | 3386 desiredColumnCount = max<LayoutUnit>(min<LayoutUnit>(colCount, (availWid
th + colGap) / (colWidth + colGap)), 1); |
| 3387 desiredColumnWidth = ((availWidth + colGap) / desiredColumnCount) - colG
ap; | 3387 desiredColumnWidth = ((availWidth + colGap) / desiredColumnCount) - colG
ap; |
| 3388 } | 3388 } |
| 3389 setDesiredColumnCountAndWidth(desiredColumnCount, desiredColumnWidth); | 3389 setDesiredColumnCountAndWidth(desiredColumnCount, desiredColumnWidth); |
| 3390 } | 3390 } |
| 3391 | 3391 |
| 3392 bool RenderBlock::requiresColumns(int desiredColumnCount) const | 3392 bool RenderBlock::requiresColumns(int desiredColumnCount) const |
| 3393 { | 3393 { |
| 3394 // If overflow-y is set to paged-x or paged-y on the body or html element, w
e'll handle the paginating | 3394 // Paged overflow is treated as multicol here, unless this element was the o
ne that got its |
| 3395 // in the RenderView instead. | 3395 // overflow propagated to the viewport. |
| 3396 bool isPaginated = (style()->overflowY() == OPAGEDX || style()->overflowY()
== OPAGEDY) && !(isRoot() || isBody()); | 3396 bool isPaginated = style()->isOverflowPaged() && node() != document().viewpo
rtDefiningElement(); |
| 3397 | 3397 |
| 3398 return firstChild() | 3398 return firstChild() |
| 3399 && (desiredColumnCount != 1 || !style()->hasAutoColumnWidth() || !style(
)->hasInlineColumnAxis() || isPaginated) | 3399 && (desiredColumnCount != 1 || !style()->hasAutoColumnWidth() || !style(
)->hasInlineColumnAxis() || isPaginated) |
| 3400 && !firstChild()->isAnonymousColumnsBlock() | 3400 && !firstChild()->isAnonymousColumnsBlock() |
| 3401 && !firstChild()->isAnonymousColumnSpanBlock(); | 3401 && !firstChild()->isAnonymousColumnSpanBlock(); |
| 3402 } | 3402 } |
| 3403 | 3403 |
| 3404 void RenderBlock::setDesiredColumnCountAndWidth(int count, LayoutUnit width) | 3404 void RenderBlock::setDesiredColumnCountAndWidth(int count, LayoutUnit width) |
| 3405 { | 3405 { |
| 3406 bool destroyColumns = !requiresColumns(count); | 3406 bool destroyColumns = !requiresColumns(count); |
| 3407 if (destroyColumns) { | 3407 if (destroyColumns) { |
| 3408 if (hasColumns()) { | 3408 if (hasColumns()) { |
| 3409 gColumnInfoMap->take(this); | 3409 gColumnInfoMap->take(this); |
| 3410 setHasColumns(false); | 3410 setHasColumns(false); |
| 3411 } | 3411 } |
| 3412 } else { | 3412 } else { |
| 3413 ColumnInfo* info; | 3413 ColumnInfo* info; |
| 3414 if (hasColumns()) | 3414 if (hasColumns()) |
| 3415 info = gColumnInfoMap->get(this); | 3415 info = gColumnInfoMap->get(this); |
| 3416 else { | 3416 else { |
| 3417 if (!gColumnInfoMap) | 3417 if (!gColumnInfoMap) |
| 3418 gColumnInfoMap = new ColumnInfoMap; | 3418 gColumnInfoMap = new ColumnInfoMap; |
| 3419 info = new ColumnInfo; | 3419 info = new ColumnInfo; |
| 3420 gColumnInfoMap->add(this, adoptPtr(info)); | 3420 gColumnInfoMap->add(this, adoptPtr(info)); |
| 3421 setHasColumns(true); | 3421 setHasColumns(true); |
| 3422 } | 3422 } |
| 3423 info->setDesiredColumnCount(count); | |
| 3424 info->setDesiredColumnWidth(width); | 3423 info->setDesiredColumnWidth(width); |
| 3425 info->setProgressionAxis(style()->hasInlineColumnAxis() ? ColumnInfo::In
lineAxis : ColumnInfo::BlockAxis); | 3424 if (style()->isOverflowPaged()) { |
| 3426 info->setProgressionIsReversed(style()->columnProgression() == ReverseCo
lumnProgression); | 3425 info->setProgressionAxis(style()->hasInlinePaginationAxis() ? Column
Info::InlineAxis : ColumnInfo::BlockAxis); |
| 3426 } else { |
| 3427 info->setDesiredColumnCount(count); |
| 3428 info->setProgressionAxis(style()->hasInlineColumnAxis() ? ColumnInfo
::InlineAxis : ColumnInfo::BlockAxis); |
| 3429 info->setProgressionIsReversed(style()->columnProgression() == Rever
seColumnProgression); |
| 3430 } |
| 3427 } | 3431 } |
| 3428 } | 3432 } |
| 3429 | 3433 |
| 3430 void RenderBlock::updateColumnInfoFromStyle(RenderStyle* style) | |
| 3431 { | |
| 3432 if (!hasColumns()) | |
| 3433 return; | |
| 3434 | |
| 3435 ColumnInfo* info = gColumnInfoMap->get(this); | |
| 3436 | |
| 3437 bool needsLayout = false; | |
| 3438 ColumnInfo::Axis oldAxis = info->progressionAxis(); | |
| 3439 ColumnInfo::Axis newAxis = style->hasInlineColumnAxis() ? ColumnInfo::Inline
Axis : ColumnInfo::BlockAxis; | |
| 3440 if (oldAxis != newAxis) { | |
| 3441 info->setProgressionAxis(newAxis); | |
| 3442 needsLayout = true; | |
| 3443 } | |
| 3444 | |
| 3445 bool oldProgressionIsReversed = info->progressionIsReversed(); | |
| 3446 bool newProgressionIsReversed = style->columnProgression() == ReverseColumnP
rogression; | |
| 3447 if (oldProgressionIsReversed != newProgressionIsReversed) { | |
| 3448 info->setProgressionIsReversed(newProgressionIsReversed); | |
| 3449 needsLayout = true; | |
| 3450 } | |
| 3451 | |
| 3452 if (needsLayout) | |
| 3453 setNeedsLayoutAndPrefWidthsRecalc(); | |
| 3454 } | |
| 3455 | |
| 3456 LayoutUnit RenderBlock::desiredColumnWidth() const | 3434 LayoutUnit RenderBlock::desiredColumnWidth() const |
| 3457 { | 3435 { |
| 3458 if (!hasColumns()) | 3436 if (!hasColumns()) |
| 3459 return contentLogicalWidth(); | 3437 return contentLogicalWidth(); |
| 3460 return gColumnInfoMap->get(this)->desiredColumnWidth(); | 3438 return gColumnInfoMap->get(this)->desiredColumnWidth(); |
| 3461 } | 3439 } |
| 3462 | 3440 |
| 3463 ColumnInfo* RenderBlock::columnInfo() const | 3441 ColumnInfo* RenderBlock::columnInfo() const |
| 3464 { | 3442 { |
| 3465 if (!hasColumns()) | 3443 if (!hasColumns()) |
| (...skipping 2175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5641 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const | 5619 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const |
| 5642 { | 5620 { |
| 5643 showRenderObject(); | 5621 showRenderObject(); |
| 5644 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) | 5622 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) |
| 5645 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); | 5623 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); |
| 5646 } | 5624 } |
| 5647 | 5625 |
| 5648 #endif | 5626 #endif |
| 5649 | 5627 |
| 5650 } // namespace WebCore | 5628 } // namespace WebCore |
| OLD | NEW |