char* pValue = reinterpret_cast< char* >(eina_hash_find(pAttrHash, "contenteditable"));
if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false) || pValue)
{
- ewk_view_command_execute(pWebview, "SelectWord", 0);
+ ewk_view_command_execute(pWebview, "SelectWord", null);
evas_object_smart_callback_call(pWebview, "magnifier,hide", NULL);
}
}
result
_WebImpl::SetFullScreenKeypad(void)
{
+ Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+ if (!pWebview)
+ {
+ return E_SUCCESS;
+ }
+
result r = E_SUCCESS;
std::unique_ptr<Keypad> pKeypad(new (std::nothrow) Keypad());
r = pKeypad->Construct(KEYPAD_STYLE_NORMAL, 100);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
- String text(ewk_view_focused_input_element_value_get(__pWebCore->GetWebNativeNode()));
- pKeypad->SetText(text);
+ Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(__pWebCore->GetTouchPosition())));
+
+ Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pWebview, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+ SysTryReturnResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "Failed to get hit test.");
+
+ String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+ if (tagName.Equals(L"INPUT", false))
+ {
+ String text(ewk_view_focused_input_element_value_get(pWebview));
+ pKeypad->SetText(text);
+ }
+ else
+ {
+ String* pText = EvaluateJavascriptN(L"document.activeElement.value");
+ SysTryReturnResult(NID_WEB_CTRL, pText, E_OUT_OF_MEMORY, "Memory allocation failed.");
+ pKeypad->SetText(*pText);
+ }
r = pKeypad->SetShowState(true);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
void
_WebImpl::OnTextValueChanged(const Control& source)
{
+ Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+ if (!pWebview)
+ {
+ return;
+ }
+
std::unique_ptr<char[]> pText(_StringConverter::CopyToCharArrayN(__pKeypad->GetText()));
+ SysTryReturnVoidResult(NID_WEB_CTRL, pText.get(), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
- ewk_view_focused_input_element_value_set(__pWebCore->GetWebNativeNode(), pText.get());
+ Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(__pWebCore->GetTouchPosition())));
+
+ Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pWebview, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+ SysTryReturnVoidResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "[E_SYSTEM] Failed to get hit test.");
+
+ String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+ if (tagName.Equals(L"INPUT", false))
+ {
+ ewk_view_focused_input_element_value_set(__pWebCore->GetWebNativeNode(), pText.get());
+ }
+ else
+ {
+ ewk_view_command_execute(pWebview, "SelectAll", null);
+ ewk_view_command_execute(pWebview, "Delete", null);
+ ewk_view_command_execute(pWebview, "InsertText", pText.get());
+ }
RemoveFullScreenKeypad();
}