| Index: third_party/WebKit/Source/core/editing/InputMethodController.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/InputMethodController.cpp b/third_party/WebKit/Source/core/editing/InputMethodController.cpp
|
| index 25da582651273e7d468b5a740df367e8e6e3667a..a556f7af02c9ecc122b93c8d40fbcd97c1b8f093 100644
|
| --- a/third_party/WebKit/Source/core/editing/InputMethodController.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/InputMethodController.cpp
|
| @@ -33,6 +33,7 @@
|
| #include "core/dom/Text.h"
|
| #include "core/editing/EditingUtilities.h"
|
| #include "core/editing/Editor.h"
|
| +#include "core/editing/TextSuggestionController.h"
|
| #include "core/editing/commands/TypingCommand.h"
|
| #include "core/editing/markers/DocumentMarkerController.h"
|
| #include "core/editing/state_machines/BackwardCodePointStateMachine.h"
|
| @@ -71,10 +72,6 @@ void dispatchCompositionEndEvent(LocalFrame& frame, const String& text) {
|
| }
|
|
|
| bool needsIncrementalInsertion(const LocalFrame& frame, const String& newText) {
|
| - // No need to apply incremental insertion if it doesn't support formated text.
|
| - if (!frame.editor().canEditRichly())
|
| - return false;
|
| -
|
| // No need to apply incremental insertion if the old text (text to be
|
| // replaced) or the new text (text to be inserted) is empty.
|
| if (frame.selectedText().isEmpty() || newText.isEmpty())
|
| @@ -443,9 +440,16 @@ void InputMethodController::addCompositionUnderlines(
|
| if (ephemeralLineRange.isNull())
|
| continue;
|
|
|
| - document().markers().addCompositionMarker(
|
| - ephemeralLineRange, underline.color(), underline.thick(),
|
| - underline.backgroundColor());
|
| + if (underline.suggestions().isEmpty()) {
|
| + document().markers().addCompositionMarker(
|
| + ephemeralLineRange, underline.color(), underline.thick(),
|
| + underline.backgroundColor());
|
| + } else {
|
| + document().markers().addSuggestionMarker(
|
| + ephemeralLineRange,
|
| + underline.color(), underline.thick(), underline.backgroundColor(),
|
| + underline.suggestions());
|
| + }
|
| }
|
| }
|
|
|
| @@ -465,6 +469,7 @@ bool InputMethodController::replaceCompositionAndMoveCaret(
|
| PlainTextRange::create(*rootEditableElement, *m_compositionRange);
|
| if (compositionRange.isNull())
|
| return false;
|
| +
|
| int textStart = compositionRange.start();
|
|
|
| if (!replaceComposition(text))
|
| @@ -496,6 +501,7 @@ bool InputMethodController::insertTextAndMoveCaret(
|
| PlainTextRange selectionRange = getSelectionOffsets();
|
| if (selectionRange.isNull())
|
| return false;
|
| +
|
| int textStart = selectionRange.start();
|
|
|
| if (text.length()) {
|
| @@ -690,6 +696,11 @@ void InputMethodController::setComposition(
|
| setEditableSelectionOffsets(selectedRange, NotUserTriggered);
|
|
|
| if (underlines.isEmpty()) {
|
| + // Don't add black underline when suggestion menu is open, the suggestion
|
| + // range already gets an underline
|
| + if (frame().textSuggestionController().suggestionMenuIsOpen())
|
| + return;
|
| +
|
| document().markers().addCompositionMarker(
|
| EphemeralRange(m_compositionRange), Color::black, false,
|
| LayoutTheme::theme().platformDefaultCompositionBackgroundColor());
|
|
|