Changeset 83099 in webkit


Ignore:
Timestamp:
Apr 6, 2011 2:22:56 PM (13 years ago)
Author:
hyatt@apple.com
Message:

https://bugs.webkit.org/show_bug.cgi?id=57981

Reviewed by Simon Fraser.

Update the column count and width computation algorithm for CSS3 multi-column layout
to match the revised pseudo-algorithm in the latest draft of the spec.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::calcColumnWidth):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r83098 r83099  
     12011-04-06  David Hyatt  <hyatt@apple.com>
     2
     3        Reviewed by Simon Fraser.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=57981
     6       
     7        Update the column count and width computation algorithm for CSS3 multi-column layout
     8        to match the revised pseudo-algorithm in the latest draft of the spec.
     9
     10        * rendering/RenderBlock.cpp:
     11        (WebCore::RenderBlock::calcColumnWidth):
     12
    1132011-04-06  Ryosuke Niwa  <rniwa@webkit.org>
    214
  • trunk/Source/WebCore/rendering/RenderBlock.cpp

    r83075 r83099  
    42094209    int colCount = max(1, static_cast<int>(style()->columnCount()));
    42104210
    4211     if (style()->hasAutoColumnWidth()) {
    4212         if ((colCount - 1) * colGap < availWidth) {
    4213             desiredColumnCount = colCount;
    4214             desiredColumnWidth = (availWidth - (desiredColumnCount - 1) * colGap) / desiredColumnCount;
    4215         } else if (colGap < availWidth) {
    4216             desiredColumnCount = availWidth / colGap;
    4217             if (desiredColumnCount < 1)
    4218                 desiredColumnCount = 1;
    4219             desiredColumnWidth = (availWidth - (desiredColumnCount - 1) * colGap) / desiredColumnCount;
    4220         }
    4221     } else if (style()->hasAutoColumnCount()) {
    4222         if (colWidth < availWidth) {
    4223             desiredColumnCount = (availWidth + colGap) / (colWidth + colGap);
    4224             if (desiredColumnCount < 1)
    4225                 desiredColumnCount = 1;
    4226             desiredColumnWidth = (availWidth - (desiredColumnCount - 1) * colGap) / desiredColumnCount;
    4227         }
     4211    if (style()->hasAutoColumnWidth() && !style()->hasAutoColumnCount()) {
     4212        desiredColumnCount = colCount;
     4213        desiredColumnWidth = max<int>(0, (availWidth - ((desiredColumnCount - 1) * colGap)) / desiredColumnCount);
     4214    } else if (!style()->hasAutoColumnWidth() && style()->hasAutoColumnCount()) {
     4215        desiredColumnCount = max<int>(1, (float)(availWidth + colGap) / (colWidth + colGap));
     4216        desiredColumnWidth = ((availWidth + colGap) / desiredColumnCount) - colGap;
    42284217    } else {
    4229         // Both are set.
    4230         if (colCount * colWidth + (colCount - 1) * colGap <= availWidth) {
    4231             desiredColumnCount = colCount;
    4232             desiredColumnWidth = colWidth;
    4233         } else if (colWidth < availWidth) {
    4234             desiredColumnCount = (availWidth + colGap) / (colWidth + colGap);
    4235             if (desiredColumnCount < 1)
    4236                 desiredColumnCount = 1;
    4237             desiredColumnWidth = (availWidth - (desiredColumnCount - 1) * colGap) / desiredColumnCount;
    4238         }
     4218        desiredColumnCount = min<int>(colCount, (float)(availWidth + colGap) / (colWidth + colGap));
     4219        desiredColumnWidth = ((availWidth + colGap) / desiredColumnCount) - colGap;
    42394220    }
    42404221    setDesiredColumnCountAndWidth(desiredColumnCount, desiredColumnWidth);
Note: See TracChangeset for help on using the changeset viewer.