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 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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.previousSibling(); | 294 LineLayoutItem curr = child.previousSibling(); |
295 if (child.isFloating() && !curr) { | 295 if (child.isFloating() && !curr) { |
296 LineLayoutItem parent = child.parent(); | 296 LineLayoutInline outerInline; |
297 while (parent && parent.isLayoutInline() && !parent.previousSibling()) | 297 for (LineLayoutItem parent = child.parent(); |
298 parent = parent.parent(); | 298 parent && parent.isLayoutInline() && !parent.previousSibling(); |
299 if (parent) | 299 parent = parent.parent()) |
300 curr = parent.previousSibling(); | 300 outerInline = LineLayoutInline(parent); |
| 301 if (outerInline) |
| 302 curr = outerInline.previousSibling(); |
301 } | 303 } |
302 | 304 |
303 for (; curr; curr = curr.previousSibling()) { | 305 for (; curr; curr = curr.previousSibling()) { |
304 if (curr.isFloatingOrOutOfFlowPositioned()) | 306 if (curr.isFloatingOrOutOfFlowPositioned()) |
305 continue; | 307 continue; |
306 | 308 |
307 if (curr.isAtomicInlineLevel()) { | 309 if (curr.isAtomicInlineLevel()) { |
308 InlineBox* wrapper = LineLayoutBox(curr).inlineBoxWrapper(); | 310 InlineBox* wrapper = LineLayoutBox(curr).inlineBoxWrapper(); |
309 if (wrapper) | 311 if (wrapper) |
310 box = &wrapper->root(); | 312 box = &wrapper->root(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 ASSERT(child->prevLineBox() == prev); | 375 ASSERT(child->prevLineBox() == prev); |
374 prev = child; | 376 prev = child; |
375 } | 377 } |
376 ASSERT(prev == m_lastLineBox); | 378 ASSERT(prev == m_lastLineBox); |
377 #endif | 379 #endif |
378 } | 380 } |
379 | 381 |
380 #endif | 382 #endif |
381 | 383 |
382 } // namespace blink | 384 } // namespace blink |
OLD | NEW |