OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ight reserved. | 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ight reserved. |
4 * Copyright (C) 2010 Google Inc. All rights reserved. | 4 * Copyright (C) 2010 Google Inc. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 if (lineInfo.isEmpty()) | 249 if (lineInfo.isEmpty()) |
250 continue; | 250 continue; |
251 | 251 |
252 InlineBox* box = createInlineBoxForRenderer(r->m_object, false, isOnlyRu
n); | 252 InlineBox* box = createInlineBoxForRenderer(r->m_object, false, isOnlyRu
n); |
253 r->m_box = box; | 253 r->m_box = box; |
254 | 254 |
255 ASSERT(box); | 255 ASSERT(box); |
256 if (!box) | 256 if (!box) |
257 continue; | 257 continue; |
258 | 258 |
259 if (!rootHasSelectedChildren && box->renderer()->selectionState() != Ren
derObject::SelectionNone) | 259 if (!rootHasSelectedChildren && box->renderer().selectionState() != Rend
erObject::SelectionNone) |
260 rootHasSelectedChildren = true; | 260 rootHasSelectedChildren = true; |
261 | 261 |
262 // If we have no parent box yet, or if the run is not simply a sibling, | 262 // If we have no parent box yet, or if the run is not simply a sibling, |
263 // then we need to construct inline boxes as necessary to properly enclo
se the | 263 // then we need to construct inline boxes as necessary to properly enclo
se the |
264 // run's inline box. Segments can only be siblings at the root level, as | 264 // run's inline box. Segments can only be siblings at the root level, as |
265 // they are positioned separately. | 265 // they are positioned separately. |
266 bool runStartsSegment = r->m_startsSegment; | 266 bool runStartsSegment = r->m_startsSegment; |
267 | 267 |
268 if (!parentBox || parentBox->renderer() != r->m_object->parent() || runS
tartsSegment) | 268 if (!parentBox || parentBox->renderer() != r->m_object->parent() || runS
tartsSegment) |
269 // Create new inline boxes all the way back to the appropriate inser
tion point. | 269 // Create new inline boxes all the way back to the appropriate inser
tion point. |
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
954 if (!layoutState.usesRepaintBounds()) | 954 if (!layoutState.usesRepaintBounds()) |
955 layoutState.setRepaintRange(logicalHeight()); | 955 layoutState.setRepaintRange(logicalHeight()); |
956 deleteLineRange(layoutState, startLine); | 956 deleteLineRange(layoutState, startLine); |
957 } | 957 } |
958 | 958 |
959 if (!layoutState.isFullLayout() && lastRootBox() && lastRootBox()->endsWithB
reak()) { | 959 if (!layoutState.isFullLayout() && lastRootBox() && lastRootBox()->endsWithB
reak()) { |
960 // If the last line before the start line ends with a line break that cl
ear floats, | 960 // If the last line before the start line ends with a line break that cl
ear floats, |
961 // adjust the height accordingly. | 961 // adjust the height accordingly. |
962 // A line break can be either the first or the last object on a line, de
pending on its direction. | 962 // A line break can be either the first or the last object on a line, de
pending on its direction. |
963 if (InlineBox* lastLeafChild = lastRootBox()->lastLeafChild()) { | 963 if (InlineBox* lastLeafChild = lastRootBox()->lastLeafChild()) { |
964 RenderObject* lastObject = lastLeafChild->renderer(); | 964 RenderObject* lastObject = &lastLeafChild->renderer(); |
965 if (!lastObject->isBR()) | 965 if (!lastObject->isBR()) |
966 lastObject = lastRootBox()->firstLeafChild()->renderer(); | 966 lastObject = &lastRootBox()->firstLeafChild()->renderer(); |
967 if (lastObject->isBR()) { | 967 if (lastObject->isBR()) { |
968 EClear clear = lastObject->style()->clear(); | 968 EClear clear = lastObject->style()->clear(); |
969 if (clear != CNONE) | 969 if (clear != CNONE) |
970 clearFloats(clear); | 970 clearFloats(clear); |
971 } | 971 } |
972 } | 972 } |
973 } | 973 } |
974 | 974 |
975 layoutRunsAndFloatsInRange(layoutState, resolver, cleanLineStart, cleanLineB
idiStatus, consecutiveHyphenatedLines); | 975 layoutRunsAndFloatsInRange(layoutState, resolver, cleanLineStart, cleanLineB
idiStatus, consecutiveHyphenatedLines); |
976 linkToEndLineIfNeeded(layoutState); | 976 linkToEndLineIfNeeded(layoutState); |
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1416 } | 1416 } |
1417 } | 1417 } |
1418 | 1418 |
1419 if (m_floatingObjects && (layoutState.checkForFloatsFromLastLine() || positi
onNewFloats()) && lastRootBox()) { | 1419 if (m_floatingObjects && (layoutState.checkForFloatsFromLastLine() || positi
onNewFloats()) && lastRootBox()) { |
1420 // In case we have a float on the last line, it might not be positioned
up to now. | 1420 // In case we have a float on the last line, it might not be positioned
up to now. |
1421 // This has to be done before adding in the bottom border/padding, or th
e float will | 1421 // This has to be done before adding in the bottom border/padding, or th
e float will |
1422 // include the padding incorrectly. -dwh | 1422 // include the padding incorrectly. -dwh |
1423 if (layoutState.checkForFloatsFromLastLine()) { | 1423 if (layoutState.checkForFloatsFromLastLine()) { |
1424 LayoutUnit bottomVisualOverflow = lastRootBox()->logicalBottomVisual
Overflow(); | 1424 LayoutUnit bottomVisualOverflow = lastRootBox()->logicalBottomVisual
Overflow(); |
1425 LayoutUnit bottomLayoutOverflow = lastRootBox()->logicalBottomLayout
Overflow(); | 1425 LayoutUnit bottomLayoutOverflow = lastRootBox()->logicalBottomLayout
Overflow(); |
1426 TrailingFloatsRootInlineBox* trailingFloatsLineBox = new TrailingFlo
atsRootInlineBox(this); | 1426 TrailingFloatsRootInlineBox* trailingFloatsLineBox = new TrailingFlo
atsRootInlineBox(*this); |
1427 m_lineBoxes.appendLineBox(trailingFloatsLineBox); | 1427 m_lineBoxes.appendLineBox(trailingFloatsLineBox); |
1428 trailingFloatsLineBox->setConstructed(); | 1428 trailingFloatsLineBox->setConstructed(); |
1429 GlyphOverflowAndFallbackFontsMap textBoxDataMap; | 1429 GlyphOverflowAndFallbackFontsMap textBoxDataMap; |
1430 VerticalPositionCache verticalPositionCache; | 1430 VerticalPositionCache verticalPositionCache; |
1431 LayoutUnit blockLogicalHeight = logicalHeight(); | 1431 LayoutUnit blockLogicalHeight = logicalHeight(); |
1432 trailingFloatsLineBox->alignBoxesInBlockDirection(blockLogicalHeight
, textBoxDataMap, verticalPositionCache); | 1432 trailingFloatsLineBox->alignBoxesInBlockDirection(blockLogicalHeight
, textBoxDataMap, verticalPositionCache); |
1433 trailingFloatsLineBox->setLineTopBottomPositions(blockLogicalHeight,
blockLogicalHeight, blockLogicalHeight, blockLogicalHeight); | 1433 trailingFloatsLineBox->setLineTopBottomPositions(blockLogicalHeight,
blockLogicalHeight, blockLogicalHeight, blockLogicalHeight); |
1434 trailingFloatsLineBox->setPaginatedLineWidth(availableLogicalWidthFo
rContent()); | 1434 trailingFloatsLineBox->setPaginatedLineWidth(availableLogicalWidthFo
rContent()); |
1435 LayoutRect logicalLayoutOverflow(0, blockLogicalHeight, 1, bottomLay
outOverflow - blockLogicalHeight); | 1435 LayoutRect logicalLayoutOverflow(0, blockLogicalHeight, 1, bottomLay
outOverflow - blockLogicalHeight); |
1436 LayoutRect logicalVisualOverflow(0, blockLogicalHeight, 1, bottomVis
ualOverflow - blockLogicalHeight); | 1436 LayoutRect logicalVisualOverflow(0, blockLogicalHeight, 1, bottomVis
ualOverflow - blockLogicalHeight); |
(...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2434 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false); | 2434 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false); |
2435 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal
se) - logicalLeft; | 2435 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal
se) - logicalLeft; |
2436 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid
th, availableLogicalWidth, 0); | 2436 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid
th, availableLogicalWidth, 0); |
2437 | 2437 |
2438 if (!style()->isLeftToRightDirection()) | 2438 if (!style()->isLeftToRightDirection()) |
2439 return logicalWidth() - logicalLeft; | 2439 return logicalWidth() - logicalLeft; |
2440 return logicalLeft; | 2440 return logicalLeft; |
2441 } | 2441 } |
2442 | 2442 |
2443 } | 2443 } |
OLD | NEW |