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 Apple Inc. All r
ights reserved. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r
ights 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 1199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1210 | 1210 |
1211 RenderBlock* RenderTable::firstLineBlock() const | 1211 RenderBlock* RenderTable::firstLineBlock() const |
1212 { | 1212 { |
1213 return 0; | 1213 return 0; |
1214 } | 1214 } |
1215 | 1215 |
1216 void RenderTable::updateFirstLetter() | 1216 void RenderTable::updateFirstLetter() |
1217 { | 1217 { |
1218 } | 1218 } |
1219 | 1219 |
1220 enum LineBox { FirstLineBox, LastLineBox }; | |
1221 | |
1222 static LayoutUnit getLineBoxBaseline(const RenderTable* table, LineBox lineBox) | |
1223 { | |
1224 if (table->isWritingModeRoot()) | |
1225 return -1; | |
1226 | |
1227 table->recalcSectionsIfNeeded(); | |
1228 | |
1229 const RenderTableSection* topNonEmptySection = table->topNonEmptySection(); | |
1230 if (!topNonEmptySection) | |
1231 return -1; | |
1232 | |
1233 LayoutUnit baseline = topNonEmptySection->firstLineBoxBaseline(); | |
1234 if (baseline > 0) | |
1235 return topNonEmptySection->logicalTop() + baseline; | |
1236 | |
1237 // The 'first' linebox baseline in a table in the absence of any text in the
first section | |
1238 // is the top of the table. | |
1239 if (lineBox == FirstLineBox) | |
1240 return topNonEmptySection->logicalTop(); | |
1241 | |
1242 // The 'last' linebox baseline in a table is the baseline of text in the fir
st | |
1243 // cell in the first row/section, so if there is no text do not return a bas
eline. | |
1244 return -1; | |
1245 } | |
1246 | |
1247 LayoutUnit RenderTable::lastLineBoxBaseline() const | |
1248 { | |
1249 return getLineBoxBaseline(this, LastLineBox); | |
1250 } | |
1251 | |
1252 LayoutUnit RenderTable::firstLineBoxBaseline() const | 1220 LayoutUnit RenderTable::firstLineBoxBaseline() const |
1253 { | 1221 { |
1254 return getLineBoxBaseline(this, FirstLineBox); | 1222 if (isWritingModeRoot()) |
| 1223 return -1; |
| 1224 |
| 1225 recalcSectionsIfNeeded(); |
| 1226 |
| 1227 const RenderTableSection* topNonEmptySection = this->topNonEmptySection(); |
| 1228 if (!topNonEmptySection) |
| 1229 return -1; |
| 1230 |
| 1231 return topNonEmptySection->logicalTop() + topNonEmptySection->firstLineBoxBa
seline(); |
1255 } | 1232 } |
1256 | 1233 |
1257 LayoutRect RenderTable::overflowClipRect(const LayoutPoint& location, RenderRegi
on* region, OverlayScrollbarSizeRelevancy relevancy) | 1234 LayoutRect RenderTable::overflowClipRect(const LayoutPoint& location, RenderRegi
on* region, OverlayScrollbarSizeRelevancy relevancy) |
1258 { | 1235 { |
1259 LayoutRect rect = RenderBlock::overflowClipRect(location, region, relevancy)
; | 1236 LayoutRect rect = RenderBlock::overflowClipRect(location, region, relevancy)
; |
1260 | 1237 |
1261 // If we have a caption, expand the clip to include the caption. | 1238 // If we have a caption, expand the clip to include the caption. |
1262 // FIXME: Technically this is wrong, but it's virtually impossible to fix th
is | 1239 // FIXME: Technically this is wrong, but it's virtually impossible to fix th
is |
1263 // for real until captions have been re-written. | 1240 // for real until captions have been re-written. |
1264 // FIXME: This code assumes (like all our other caption code) that only top/
bottom are | 1241 // FIXME: This code assumes (like all our other caption code) that only top/
bottom are |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1325 const BorderValue& RenderTable::tableEndBorderAdjoiningCell(const RenderTableCel
l* cell) const | 1302 const BorderValue& RenderTable::tableEndBorderAdjoiningCell(const RenderTableCel
l* cell) const |
1326 { | 1303 { |
1327 ASSERT(cell->isFirstOrLastCellInRow()); | 1304 ASSERT(cell->isFirstOrLastCellInRow()); |
1328 if (cell->section()->hasSameDirectionAsTable()) | 1305 if (cell->section()->hasSameDirectionAsTable()) |
1329 return style()->borderEnd(); | 1306 return style()->borderEnd(); |
1330 | 1307 |
1331 return style()->borderStart(); | 1308 return style()->borderStart(); |
1332 } | 1309 } |
1333 | 1310 |
1334 } | 1311 } |
OLD | NEW |