OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 container.setAncestorLineBoxDirty(); | 284 container.setAncestorLineBoxDirty(); |
285 } | 285 } |
286 return; | 286 return; |
287 } | 287 } |
288 | 288 |
289 // Try to figure out which line box we belong in. First try to find a previous | 289 // Try to figure out which line box we belong in. First try to find a previous |
290 // line box by examining our siblings. If we are a float inside an inline then | 290 // line box by examining our siblings. If we are a float inside an inline then |
291 // check the siblings of our inline parent. If we didn't find a line box, then | 291 // check the siblings of our inline parent. If we didn't find a line box, then |
292 // use our parent's first line box. | 292 // use our parent's first line box. |
293 RootInlineBox* box = nullptr; | 293 RootInlineBox* box = nullptr; |
294 LineLayoutItem curr = child.isFloating() && !child.previousSibling() && | 294 LineLayoutItem curr = child.previousSibling(); |
295 child.parent() && | 295 if (child.isFloating() && !curr) { |
296 child.parent().isLayoutInline() | 296 LineLayoutItem parent = child.parent(); |
297 ? child.parent().previousSibling() | 297 while (parent && parent.isLayoutInline() && !parent.previousSibling()) |
298 : child.previousSibling(); | 298 parent = parent.parent(); |
| 299 if (parent) |
| 300 curr = parent.previousSibling(); |
| 301 } |
| 302 |
299 for (; curr; curr = curr.previousSibling()) { | 303 for (; curr; curr = curr.previousSibling()) { |
300 if (curr.isFloatingOrOutOfFlowPositioned()) | 304 if (curr.isFloatingOrOutOfFlowPositioned()) |
301 continue; | 305 continue; |
302 | 306 |
303 if (curr.isAtomicInlineLevel()) { | 307 if (curr.isAtomicInlineLevel()) { |
304 InlineBox* wrapper = LineLayoutBox(curr).inlineBoxWrapper(); | 308 InlineBox* wrapper = LineLayoutBox(curr).inlineBoxWrapper(); |
305 if (wrapper) | 309 if (wrapper) |
306 box = &wrapper->root(); | 310 box = &wrapper->root(); |
307 } else if (curr.isText()) { | 311 } else if (curr.isText()) { |
308 InlineTextBox* textBox = LineLayoutText(curr).lastTextBox(); | 312 InlineTextBox* textBox = LineLayoutText(curr).lastTextBox(); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 ASSERT(child->prevLineBox() == prev); | 373 ASSERT(child->prevLineBox() == prev); |
370 prev = child; | 374 prev = child; |
371 } | 375 } |
372 ASSERT(prev == m_lastLineBox); | 376 ASSERT(prev == m_lastLineBox); |
373 #endif | 377 #endif |
374 } | 378 } |
375 | 379 |
376 #endif | 380 #endif |
377 | 381 |
378 } // namespace blink | 382 } // namespace blink |
OLD | NEW |