| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 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 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 536 return; | 536 return; |
| 537 | 537 |
| 538 // An open typing command that disagrees about current selection would cause | 538 // An open typing command that disagrees about current selection would cause |
| 539 // issues with typing later on. | 539 // issues with typing later on. |
| 540 TypingCommand::closeTyping(m_frame); | 540 TypingCommand::closeTyping(m_frame); |
| 541 | 541 |
| 542 // No DOM update after 'compositionend'. | 542 // No DOM update after 'compositionend'. |
| 543 dispatchCompositionEndEvent(frame(), emptyString); | 543 dispatchCompositionEndEvent(frame(), emptyString); |
| 544 } | 544 } |
| 545 | 545 |
| 546 // If current position is at grapheme boundary, return 0; otherwise, return the | |
| 547 // distance to its nearest left grapheme boundary. | |
| 548 static size_t computeDistanceToLeftGraphemeBoundary(const Position& position) { | |
| 549 const Position& adjustedPosition = previousPositionOf( | |
| 550 nextPositionOf(position, PositionMoveType::GraphemeCluster), | |
| 551 PositionMoveType::GraphemeCluster); | |
| 552 DCHECK_EQ(position.anchorNode(), adjustedPosition.anchorNode()); | |
| 553 DCHECK_GE(position.computeOffsetInContainerNode(), | |
| 554 adjustedPosition.computeOffsetInContainerNode()); | |
| 555 return static_cast<size_t>(position.computeOffsetInContainerNode() - | |
| 556 adjustedPosition.computeOffsetInContainerNode()); | |
| 557 } | |
| 558 | |
| 559 // If current position is at grapheme boundary, return 0; otherwise, return the | |
| 560 // distance to its nearest right grapheme boundary. | |
| 561 static size_t computeDistanceToRightGraphemeBoundary(const Position& position) { | |
| 562 const Position& adjustedPosition = nextPositionOf( | |
| 563 previousPositionOf(position, PositionMoveType::GraphemeCluster), | |
| 564 PositionMoveType::GraphemeCluster); | |
| 565 DCHECK_EQ(position.anchorNode(), adjustedPosition.anchorNode()); | |
| 566 DCHECK_GE(adjustedPosition.computeOffsetInContainerNode(), | |
| 567 position.computeOffsetInContainerNode()); | |
| 568 return static_cast<size_t>(adjustedPosition.computeOffsetInContainerNode() - | |
| 569 position.computeOffsetInContainerNode()); | |
| 570 } | |
| 571 | |
| 572 void InputMethodController::setComposition( | 546 void InputMethodController::setComposition( |
| 573 const String& text, | 547 const String& text, |
| 574 const Vector<CompositionUnderline>& underlines, | 548 const Vector<CompositionUnderline>& underlines, |
| 575 int selectionStart, | 549 int selectionStart, |
| 576 int selectionEnd) { | 550 int selectionEnd) { |
| 577 Editor::RevealSelectionScope revealSelectionScope(&editor()); | 551 Editor::RevealSelectionScope revealSelectionScope(&editor()); |
| 578 | 552 |
| 579 // Updates styles before setting selection for composition to prevent | 553 // Updates styles before setting selection for composition to prevent |
| 580 // inserting the previous composition text into text nodes oddly. | 554 // inserting the previous composition text into text nodes oddly. |
| 581 // See https://bugs.webkit.org/show_bug.cgi?id=46868 | 555 // See https://bugs.webkit.org/show_bug.cgi?id=46868 |
| (...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1242 finishComposingText(KeepSelection); | 1216 finishComposingText(KeepSelection); |
| 1243 } | 1217 } |
| 1244 | 1218 |
| 1245 DEFINE_TRACE(InputMethodController) { | 1219 DEFINE_TRACE(InputMethodController) { |
| 1246 visitor->trace(m_frame); | 1220 visitor->trace(m_frame); |
| 1247 visitor->trace(m_compositionRange); | 1221 visitor->trace(m_compositionRange); |
| 1248 SynchronousMutationObserver::trace(visitor); | 1222 SynchronousMutationObserver::trace(visitor); |
| 1249 } | 1223 } |
| 1250 | 1224 |
| 1251 } // namespace blink | 1225 } // namespace blink |
| OLD | NEW |