| 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 Apple Inc. All right r
eserved. | 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All right r
eserved. |
| 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 return; | 132 return; |
| 133 } | 133 } |
| 134 if (unicodeBidi == Isolate) { | 134 if (unicodeBidi == Isolate) { |
| 135 observer->enterIsolate(); | 135 observer->enterIsolate(); |
| 136 // Embedding/Override characters implied by dir= are handled when | 136 // Embedding/Override characters implied by dir= are handled when |
| 137 // we process the isolated span, not when laying out the "parent" run. | 137 // we process the isolated span, not when laying out the "parent" run. |
| 138 return; | 138 return; |
| 139 } | 139 } |
| 140 | 140 |
| 141 // FIXME: Should unicode-bidi: plaintext really be embedding override/embed
characters here? | 141 // FIXME: Should unicode-bidi: plaintext really be embedding override/embed
characters here? |
| 142 observer->embed(embedCharFromDirection(style->direction(), unicodeBidi), Fro
mStyleOrDOM); | 142 if (!observer->inIsolate()) |
| 143 observer->embed(embedCharFromDirection(style->direction(), unicodeBidi),
FromStyleOrDOM); |
| 143 } | 144 } |
| 144 | 145 |
| 145 template <class Observer> | 146 template <class Observer> |
| 146 static inline void notifyObserverWillExitObject(Observer* observer, RenderObject
* object) | 147 static inline void notifyObserverWillExitObject(Observer* observer, RenderObject
* object) |
| 147 { | 148 { |
| 148 if (!observer || !object || !object->isRenderInline()) | 149 if (!observer || !object || !object->isRenderInline()) |
| 149 return; | 150 return; |
| 150 | 151 |
| 151 EUnicodeBidi unicodeBidi = object->style()->unicodeBidi(); | 152 EUnicodeBidi unicodeBidi = object->style()->unicodeBidi(); |
| 152 if (unicodeBidi == UBNormal) | 153 if (unicodeBidi == UBNormal) |
| 153 return; // Nothing to do for unicode-bidi: normal | 154 return; // Nothing to do for unicode-bidi: normal |
| 154 if (unicodeBidi == Isolate) { | 155 if (unicodeBidi == Isolate) { |
| 155 observer->exitIsolate(); | 156 observer->exitIsolate(); |
| 156 return; | 157 return; |
| 157 } | 158 } |
| 158 | 159 |
| 159 // Otherwise we pop any embed/override character we added when we opened thi
s tag. | 160 // Otherwise we pop any embed/override character we added when we opened thi
s tag. |
| 160 observer->embed(WTF::Unicode::PopDirectionalFormat, FromStyleOrDOM); | 161 if (!observer->inIsolate()) |
| 162 observer->embed(WTF::Unicode::PopDirectionalFormat, FromStyleOrDOM); |
| 161 } | 163 } |
| 162 | 164 |
| 163 static inline bool isIteratorTarget(RenderObject* object) | 165 static inline bool isIteratorTarget(RenderObject* object) |
| 164 { | 166 { |
| 165 ASSERT(object); // The iterator will of course return 0, but its not an expe
cted argument to this function. | 167 ASSERT(object); // The iterator will of course return 0, but its not an expe
cted argument to this function. |
| 166 return object->isText() || object->isFloating() || object->isPositioned() ||
object->isReplaced(); | 168 return object->isText() || object->isFloating() || object->isPositioned() ||
object->isReplaced(); |
| 167 } | 169 } |
| 168 | 170 |
| 169 // This enum is only used for bidiNextShared() | 171 // This enum is only used for bidiNextShared() |
| 170 enum EmptyInlineBehavior { | 172 enum EmptyInlineBehavior { |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 m_sor = m_eor; | 500 m_sor = m_eor; |
| 499 } | 501 } |
| 500 | 502 |
| 501 m_direction = WTF::Unicode::OtherNeutral; | 503 m_direction = WTF::Unicode::OtherNeutral; |
| 502 m_status.eor = WTF::Unicode::OtherNeutral; | 504 m_status.eor = WTF::Unicode::OtherNeutral; |
| 503 } | 505 } |
| 504 | 506 |
| 505 } | 507 } |
| 506 | 508 |
| 507 #endif // InlineIterator_h | 509 #endif // InlineIterator_h |
| OLD | NEW |