Cancel composition when focused node was changed
[framework/web/webkit-efl.git] / Source / WebKit2 / WebProcess / WebCoreSupport / WebEditorClient.cpp
index c878e9b..b191233 100755 (executable)
@@ -192,6 +192,14 @@ void WebEditorClient::respondToChangedSelection(Frame* frame)
 
     EditorState state = m_page->editorState();
 
+#if ENABLE(TIZEN_ISF_PORT) || ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
+    const EditorState& currentState = m_page->currentEditorState();
+    if (currentState.hasComposition && currentState.inputMethodContextID != state.inputMethodContextID)
+        didCancelComposition(reinterpret_cast<Node*>(currentState.inputMethodContextID));
+
+    m_page->setEditorState(state);
+#endif
+
     m_page->send(Messages::WebPageProxy::EditorStateChanged(state));
 
 #if PLATFORM(WIN)
@@ -467,73 +475,7 @@ void WebEditorClient::willSetInputMethodState()
 
 void WebEditorClient::setInputMethodState(bool active)
 {
-#if ENABLE(TIZEN_ISF_PORT)
-    String type;
-    String value;
-    if (active) {
-        Frame* frame = m_page->corePage()->focusController()->focusedFrame();
-        if (!frame || !frame->document())
-            return;
-
-        HTMLTextFormControlElement* formControl = toTextFormControl(frame->document()->focusedNode());
-        if (formControl) {
-            type = formControl->type();
-            value = formControl->value();
-        }
-#if ENABLE(TIZEN_SUPPORT_EMOJI)
-        else {
-            Element* element = frame->document()->focusedNode()->rootEditableElement();
-            StringBuilder builder;
-
-            if (equalIgnoringCase(element->getAttribute("emoji-allowemoji"), "true"))
-                builder.append("allowEmoji=true");
-
-            bool allowDecoEmoji = equalIgnoringCase(element->getAttribute("emoji-allowdecoemoji"), "true");
-            unsigned type = 1;
-            if (allowDecoEmoji && element->hasAttribute("emoji-accept")) {
-                Vector<String> list;
-                element->getAttribute("emoji-accept").string().split(",", list);
-
-                type = 0;
-                for (size_t i = 0; i < list.size(); ++i) {
-                    String typeString = list[i].stripWhiteSpace();
-                    if (typeString == "*/*") {
-                        type = 0xf;
-                        break;
-                    } else if (typeString == "picture/*")
-                        type |= 0x8;
-                    else if (typeString == "emoji/*")
-                        type |= 0x7;
-                    else if (typeString == "emoji/square")
-                        type |= 0x3;
-                    else if (typeString == "emoji/square20")
-                        type |= 0x1;
-                    else if (typeString == "emoji/square-not-20")
-                        type |= 0x2;
-                    else if (typeString == "emoji/rect")
-                        type |= 0x4;
-                }
-            }
-
-            if (allowDecoEmoji && type) {
-                if (!builder.isEmpty())
-                    builder.append("&");
-                builder.append("allowDecoEmoji=true");
-                if (type != 1) {
-                    builder.append("&emojiType=");
-                    builder.append(String::number(type));
-                }
-            }
-
-            value = builder.toString();
-        }
-#endif
-    }
-
-    m_page->send(Messages::WebPageProxy::SetInputMethodState(active, type, value));
-#else
-    m_page->send(Messages::WebPageProxy::SetInputMethodState(active));
-#endif
+    notImplemented();
 }
 
 void WebEditorClient::requestCheckingOfString(WTF::PassRefPtr<WebCore::TextCheckingRequest>)