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 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 unsigned underlineEnd = offset + underline.endOffset(); | 339 unsigned underlineEnd = offset + underline.endOffset(); |
340 | 340 |
341 EphemeralRange ephemeralLineRange = | 341 EphemeralRange ephemeralLineRange = |
342 PlainTextRange(underlineStart, underlineEnd) | 342 PlainTextRange(underlineStart, underlineEnd) |
343 .createRange(*rootEditableElement); | 343 .createRange(*rootEditableElement); |
344 if (ephemeralLineRange.isNull()) | 344 if (ephemeralLineRange.isNull()) |
345 continue; | 345 continue; |
346 | 346 |
347 document().markers().addCompositionMarker( | 347 document().markers().addCompositionMarker( |
348 ephemeralLineRange.startPosition(), ephemeralLineRange.endPosition(), | 348 ephemeralLineRange.startPosition(), ephemeralLineRange.endPosition(), |
349 underline.color(), underline.thick(), underline.backgroundColor()); | 349 underline.color(), underline.thick(), underline.backgroundColor(), |
| 350 underline.persist()); |
350 } | 351 } |
351 } | 352 } |
352 | 353 |
353 bool InputMethodController::replaceCompositionAndMoveCaret( | 354 bool InputMethodController::replaceCompositionAndMoveCaret( |
354 const String& text, | 355 const String& text, |
355 int relativeCaretPosition, | 356 int relativeCaretPosition, |
356 const Vector<CompositionUnderline>& underlines) { | 357 const Vector<CompositionUnderline>& underlines) { |
357 Element* rootEditableElement = frame().selection().rootEditableElement(); | 358 Element* rootEditableElement = frame().selection().rootEditableElement(); |
358 if (!rootEditableElement) | 359 if (!rootEditableElement) |
359 return false; | 360 return false; |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 // needs to be audited. see http://crbug.com/590369 for more details. | 605 // needs to be audited. see http://crbug.com/590369 for more details. |
605 document().updateStyleAndLayoutIgnorePendingStylesheets(); | 606 document().updateStyleAndLayoutIgnorePendingStylesheets(); |
606 | 607 |
607 // We shouldn't close typing in the middle of setComposition. | 608 // We shouldn't close typing in the middle of setComposition. |
608 setEditableSelectionOffsets(selectedRange, NotUserTriggered); | 609 setEditableSelectionOffsets(selectedRange, NotUserTriggered); |
609 | 610 |
610 if (underlines.isEmpty()) { | 611 if (underlines.isEmpty()) { |
611 document().markers().addCompositionMarker( | 612 document().markers().addCompositionMarker( |
612 m_compositionRange->startPosition(), m_compositionRange->endPosition(), | 613 m_compositionRange->startPosition(), m_compositionRange->endPosition(), |
613 Color::black, false, | 614 Color::black, false, |
614 LayoutTheme::theme().platformDefaultCompositionBackgroundColor()); | 615 LayoutTheme::theme().platformDefaultCompositionBackgroundColor(), |
| 616 false); |
615 return; | 617 return; |
616 } | 618 } |
617 | 619 |
618 // Can't use addCompositionUnderlines here because the ranges are constructed | 620 // Can't use addCompositionUnderlines here because the ranges are constructed |
619 // differently | 621 // differently |
620 for (const auto& underline : underlines) { | 622 for (const auto& underline : underlines) { |
621 unsigned underlineStart = baseOffset + underline.startOffset(); | 623 unsigned underlineStart = baseOffset + underline.startOffset(); |
622 unsigned underlineEnd = baseOffset + underline.endOffset(); | 624 unsigned underlineEnd = baseOffset + underline.endOffset(); |
623 EphemeralRange ephemeralLineRange = EphemeralRange( | 625 EphemeralRange ephemeralLineRange = EphemeralRange( |
624 Position(baseNode, underlineStart), Position(baseNode, underlineEnd)); | 626 Position(baseNode, underlineStart), Position(baseNode, underlineEnd)); |
625 if (ephemeralLineRange.isNull()) | 627 if (ephemeralLineRange.isNull()) |
626 continue; | 628 continue; |
627 document().markers().addCompositionMarker( | 629 document().markers().addCompositionMarker( |
628 ephemeralLineRange.startPosition(), ephemeralLineRange.endPosition(), | 630 ephemeralLineRange.startPosition(), ephemeralLineRange.endPosition(), |
629 underline.color(), underline.thick(), underline.backgroundColor()); | 631 underline.color(), underline.thick(), underline.backgroundColor(), |
| 632 underline.persist()); |
630 } | 633 } |
631 } | 634 } |
632 | 635 |
633 PlainTextRange InputMethodController::createSelectionRangeForSetComposition( | 636 PlainTextRange InputMethodController::createSelectionRangeForSetComposition( |
634 int selectionStart, | 637 int selectionStart, |
635 int selectionEnd, | 638 int selectionEnd, |
636 size_t textLength) const { | 639 size_t textLength) const { |
637 const int selectionOffsetsStart = | 640 const int selectionOffsetsStart = |
638 static_cast<int>(getSelectionOffsets().start()); | 641 static_cast<int>(getSelectionOffsets().start()); |
639 const int start = selectionOffsetsStart + selectionStart; | 642 const int start = selectionOffsetsStart + selectionStart; |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1092 frame().chromeClient().resetInputMethod(); | 1095 frame().chromeClient().resetInputMethod(); |
1093 } | 1096 } |
1094 | 1097 |
1095 DEFINE_TRACE(InputMethodController) { | 1098 DEFINE_TRACE(InputMethodController) { |
1096 visitor->trace(m_frame); | 1099 visitor->trace(m_frame); |
1097 visitor->trace(m_compositionRange); | 1100 visitor->trace(m_compositionRange); |
1098 SynchronousMutationObserver::trace(visitor); | 1101 SynchronousMutationObserver::trace(visitor); |
1099 } | 1102 } |
1100 | 1103 |
1101 } // namespace blink | 1104 } // namespace blink |
OLD | NEW |