OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2009 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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1181 caretOffset = inlineBox->caretRightmostOffset(); | 1181 caretOffset = inlineBox->caretRightmostOffset(); |
1182 } else if (prevBox->bidiLevel() > level) { | 1182 } else if (prevBox->bidiLevel() > level) { |
1183 // Right edge of a "tertiary" run. Set to the left edge of that run. | 1183 // Right edge of a "tertiary" run. Set to the left edge of that run. |
1184 while (InlineBox* tertiaryBox = inlineBox->prevLeafChildIgnoringLine
Break()) { | 1184 while (InlineBox* tertiaryBox = inlineBox->prevLeafChildIgnoringLine
Break()) { |
1185 if (tertiaryBox->bidiLevel() <= level) | 1185 if (tertiaryBox->bidiLevel() <= level) |
1186 break; | 1186 break; |
1187 inlineBox = tertiaryBox; | 1187 inlineBox = tertiaryBox; |
1188 } | 1188 } |
1189 caretOffset = inlineBox->caretLeftmostOffset(); | 1189 caretOffset = inlineBox->caretLeftmostOffset(); |
1190 } | 1190 } |
| 1191 } else if (m_anchorNode->selfOrAncestorHasDirAutoAttribute()) { |
| 1192 if (inlineBox->bidiLevel() < level) |
| 1193 caretOffset = inlineBox->caretLeftmostOffset(); |
| 1194 else |
| 1195 caretOffset = inlineBox->caretRightmostOffset(); |
1191 } else { | 1196 } else { |
1192 InlineBox* nextBox = inlineBox->nextLeafChildIgnoringLineBreak(); | 1197 InlineBox* nextBox = inlineBox->nextLeafChildIgnoringLineBreak(); |
1193 if (!nextBox || nextBox->bidiLevel() < level) { | 1198 if (!nextBox || nextBox->bidiLevel() < level) { |
1194 // Right edge of a secondary run. Set to the left edge of the entire
run. | 1199 // Right edge of a secondary run. Set to the left edge of the entire
run. |
1195 while (InlineBox* prevBox = inlineBox->prevLeafChildIgnoringLineBrea
k()) { | 1200 while (InlineBox* prevBox = inlineBox->prevLeafChildIgnoringLineBrea
k()) { |
1196 if (prevBox->bidiLevel() < level) | 1201 if (prevBox->bidiLevel() < level) |
1197 break; | 1202 break; |
1198 inlineBox = prevBox; | 1203 inlineBox = prevBox; |
1199 } | 1204 } |
1200 if (m_anchorNode->selfOrAncestorHasDirAutoAttribute()) | 1205 caretOffset = inlineBox->caretLeftmostOffset(); |
1201 caretOffset = inlineBox->bidiLevel() < level ? inlineBox->caretL
eftmostOffset() : inlineBox->caretRightmostOffset(); | |
1202 else | |
1203 caretOffset = inlineBox->caretLeftmostOffset(); | |
1204 } else if (nextBox->bidiLevel() > level) { | 1206 } else if (nextBox->bidiLevel() > level) { |
1205 // Left edge of a "tertiary" run. Set to the right edge of that run. | 1207 // Left edge of a "tertiary" run. Set to the right edge of that run. |
1206 while (InlineBox* tertiaryBox = inlineBox->nextLeafChildIgnoringLine
Break()) { | 1208 while (InlineBox* tertiaryBox = inlineBox->nextLeafChildIgnoringLine
Break()) { |
1207 if (tertiaryBox->bidiLevel() <= level) | 1209 if (tertiaryBox->bidiLevel() <= level) |
1208 break; | 1210 break; |
1209 inlineBox = tertiaryBox; | 1211 inlineBox = tertiaryBox; |
1210 } | 1212 } |
1211 caretOffset = inlineBox->caretRightmostOffset(); | 1213 caretOffset = inlineBox->caretRightmostOffset(); |
1212 } | 1214 } |
1213 } | 1215 } |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1304 pos.showTreeForThis(); | 1306 pos.showTreeForThis(); |
1305 } | 1307 } |
1306 | 1308 |
1307 void showTree(const blink::Position* pos) | 1309 void showTree(const blink::Position* pos) |
1308 { | 1310 { |
1309 if (pos) | 1311 if (pos) |
1310 pos->showTreeForThis(); | 1312 pos->showTreeForThis(); |
1311 } | 1313 } |
1312 | 1314 |
1313 #endif | 1315 #endif |
OLD | NEW |