OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) | 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) |
3 * (C) 1997 Torben Weis (weis@kde.org) | 3 * (C) 1997 Torben Weis (weis@kde.org) |
4 * (C) 1998 Waldo Bastian (bastian@kde.org) | 4 * (C) 1998 Waldo Bastian (bastian@kde.org) |
5 * (C) 1999 Lars Knoll (knoll@kde.org) | 5 * (C) 1999 Lars Knoll (knoll@kde.org) |
6 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 6 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc.
All rights reserved. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc.
All rights reserved. |
8 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 8 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 wrapInAnonymousSection = true; | 165 wrapInAnonymousSection = true; |
166 } | 166 } |
167 | 167 |
168 if (child->isTableSection()) | 168 if (child->isTableSection()) |
169 setNeedsSectionRecalc(); | 169 setNeedsSectionRecalc(); |
170 | 170 |
171 if (!wrapInAnonymousSection) { | 171 if (!wrapInAnonymousSection) { |
172 if (beforeChild && beforeChild->parent() != this) | 172 if (beforeChild && beforeChild->parent() != this) |
173 beforeChild = splitAnonymousBoxesAroundChild(beforeChild); | 173 beforeChild = splitAnonymousBoxesAroundChild(beforeChild); |
174 | 174 |
175 RenderBox::addChild(child, beforeChild); | 175 LayoutBox::addChild(child, beforeChild); |
176 return; | 176 return; |
177 } | 177 } |
178 | 178 |
179 if (!beforeChild && lastChild() && lastChild()->isTableSection() && lastChil
d()->isAnonymous() && !lastChild()->isBeforeContent()) { | 179 if (!beforeChild && lastChild() && lastChild()->isTableSection() && lastChil
d()->isAnonymous() && !lastChild()->isBeforeContent()) { |
180 lastChild()->addChild(child); | 180 lastChild()->addChild(child); |
181 return; | 181 return; |
182 } | 182 } |
183 | 183 |
184 if (beforeChild && !beforeChild->isAnonymous() && beforeChild->parent() == t
his) { | 184 if (beforeChild && !beforeChild->isAnonymous() && beforeChild->parent() == t
his) { |
185 LayoutObject* section = beforeChild->previousSibling(); | 185 LayoutObject* section = beforeChild->previousSibling(); |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 | 454 |
455 LayoutUnit totalSectionLogicalHeight = 0; | 455 LayoutUnit totalSectionLogicalHeight = 0; |
456 LayoutUnit oldTableLogicalTop = 0; | 456 LayoutUnit oldTableLogicalTop = 0; |
457 for (unsigned i = 0; i < m_captions.size(); i++) | 457 for (unsigned i = 0; i < m_captions.size(); i++) |
458 oldTableLogicalTop += m_captions[i]->logicalHeight() + m_captions[i]
->marginBefore() + m_captions[i]->marginAfter(); | 458 oldTableLogicalTop += m_captions[i]->logicalHeight() + m_captions[i]
->marginBefore() + m_captions[i]->marginAfter(); |
459 | 459 |
460 bool collapsing = collapseBorders(); | 460 bool collapsing = collapseBorders(); |
461 | 461 |
462 for (LayoutObject* child = firstChild(); child; child = child->nextSibli
ng()) { | 462 for (LayoutObject* child = firstChild(); child; child = child->nextSibli
ng()) { |
463 if (!child->needsLayout() && child->isBox()) | 463 if (!child->needsLayout() && child->isBox()) |
464 toRenderBox(child)->markForPaginationRelayoutIfNeeded(layouter); | 464 toLayoutBox(child)->markForPaginationRelayoutIfNeeded(layouter); |
465 if (child->isTableSection()) { | 465 if (child->isTableSection()) { |
466 LayoutTableSection* section = toLayoutTableSection(child); | 466 LayoutTableSection* section = toLayoutTableSection(child); |
467 if (m_columnLogicalWidthChanged) | 467 if (m_columnLogicalWidthChanged) |
468 layouter.setChildNeedsLayout(section); | 468 layouter.setChildNeedsLayout(section); |
469 section->layoutIfNeeded(); | 469 section->layoutIfNeeded(); |
470 totalSectionLogicalHeight += section->calcRowLogicalHeight(); | 470 totalSectionLogicalHeight += section->calcRowLogicalHeight(); |
471 if (collapsing) | 471 if (collapsing) |
472 section->recalcOuterBorder(); | 472 section->recalcOuterBorder(); |
473 ASSERT(!section->needsLayout()); | 473 ASSERT(!section->needsLayout()); |
474 } else if (child->isLayoutTableCol()) { | 474 } else if (child->isLayoutTableCol()) { |
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1245 int LayoutTable::baselinePosition(FontBaseline baselineType, bool firstLine, Lin
eDirectionMode direction, LinePositionMode linePositionMode) const | 1245 int LayoutTable::baselinePosition(FontBaseline baselineType, bool firstLine, Lin
eDirectionMode direction, LinePositionMode linePositionMode) const |
1246 { | 1246 { |
1247 ASSERT(linePositionMode == PositionOnContainingLine); | 1247 ASSERT(linePositionMode == PositionOnContainingLine); |
1248 int baseline = firstLineBoxBaseline(); | 1248 int baseline = firstLineBoxBaseline(); |
1249 if (baseline != -1) { | 1249 if (baseline != -1) { |
1250 if (isInline()) | 1250 if (isInline()) |
1251 return beforeMarginInLineDirection(direction) + baseline; | 1251 return beforeMarginInLineDirection(direction) + baseline; |
1252 return baseline; | 1252 return baseline; |
1253 } | 1253 } |
1254 | 1254 |
1255 return RenderBox::baselinePosition(baselineType, firstLine, direction, lineP
ositionMode); | 1255 return LayoutBox::baselinePosition(baselineType, firstLine, direction, lineP
ositionMode); |
1256 } | 1256 } |
1257 | 1257 |
1258 int LayoutTable::inlineBlockBaseline(LineDirectionMode) const | 1258 int LayoutTable::inlineBlockBaseline(LineDirectionMode) const |
1259 { | 1259 { |
1260 // Tables are skipped when computing an inline-block's baseline. | 1260 // Tables are skipped when computing an inline-block's baseline. |
1261 return -1; | 1261 return -1; |
1262 } | 1262 } |
1263 | 1263 |
1264 int LayoutTable::firstLineBoxBaseline() const | 1264 int LayoutTable::firstLineBoxBaseline() const |
1265 { | 1265 { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1307 return rect; | 1307 return rect; |
1308 } | 1308 } |
1309 | 1309 |
1310 bool LayoutTable::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu
lt, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOf
fset, HitTestAction action) | 1310 bool LayoutTable::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu
lt, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOf
fset, HitTestAction action) |
1311 { | 1311 { |
1312 LayoutPoint adjustedLocation = accumulatedOffset + location(); | 1312 LayoutPoint adjustedLocation = accumulatedOffset + location(); |
1313 | 1313 |
1314 // Check kids first. | 1314 // Check kids first. |
1315 if (!hasOverflowClip() || locationInContainer.intersects(overflowClipRect(ad
justedLocation))) { | 1315 if (!hasOverflowClip() || locationInContainer.intersects(overflowClipRect(ad
justedLocation))) { |
1316 for (LayoutObject* child = lastChild(); child; child = child->previousSi
bling()) { | 1316 for (LayoutObject* child = lastChild(); child; child = child->previousSi
bling()) { |
1317 if (child->isBox() && !toRenderBox(child)->hasSelfPaintingLayer() &&
(child->isTableSection() || child->isTableCaption())) { | 1317 if (child->isBox() && !toLayoutBox(child)->hasSelfPaintingLayer() &&
(child->isTableSection() || child->isTableCaption())) { |
1318 LayoutPoint childPoint = flipForWritingModeForChild(toRenderBox(
child), adjustedLocation); | 1318 LayoutPoint childPoint = flipForWritingModeForChild(toLayoutBox(
child), adjustedLocation); |
1319 if (child->nodeAtPoint(request, result, locationInContainer, chi
ldPoint, action)) { | 1319 if (child->nodeAtPoint(request, result, locationInContainer, chi
ldPoint, action)) { |
1320 updateHitTestResult(result, toLayoutPoint(locationInContaine
r.point() - childPoint)); | 1320 updateHitTestResult(result, toLayoutPoint(locationInContaine
r.point() - childPoint)); |
1321 return true; | 1321 return true; |
1322 } | 1322 } |
1323 } | 1323 } |
1324 } | 1324 } |
1325 } | 1325 } |
1326 | 1326 |
1327 // Check our bounds next. | 1327 // Check our bounds next. |
1328 LayoutRect boundsRect(adjustedLocation, size()); | 1328 LayoutRect boundsRect(adjustedLocation, size()); |
(...skipping 27 matching lines...) Expand all Loading... |
1356 const BorderValue& LayoutTable::tableEndBorderAdjoiningCell(const LayoutTableCel
l* cell) const | 1356 const BorderValue& LayoutTable::tableEndBorderAdjoiningCell(const LayoutTableCel
l* cell) const |
1357 { | 1357 { |
1358 ASSERT(cell->isFirstOrLastCellInRow()); | 1358 ASSERT(cell->isFirstOrLastCellInRow()); |
1359 if (hasSameDirectionAs(cell->row())) | 1359 if (hasSameDirectionAs(cell->row())) |
1360 return style()->borderEnd(); | 1360 return style()->borderEnd(); |
1361 | 1361 |
1362 return style()->borderStart(); | 1362 return style()->borderStart(); |
1363 } | 1363 } |
1364 | 1364 |
1365 } | 1365 } |
OLD | NEW |