From 97bf17472723c7825a1992d200666c4f046e6cb4 Mon Sep 17 00:00:00 2001 From: Seokju Kwon Date: Mon, 20 Aug 2012 16:13:38 +0900 Subject: [PATCH] [WK2] Disappearing keypad when sending a message in facebook [Title] Keyboard doesn't disappear when sending a message in facebook [Issue#] P120809-6442 [Problem] Keyboard stays on screen [Cause] Anchor navigation in same document [Solution] Add disappearing keypad in dispatchDidChangeLocationWithinPage() Change-Id: Id62452db29edea311340dbe0d479c9058687596a --- Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp | 3 ++- Source/WebKit2/UIProcess/PageClient.h | 4 +++- Source/WebKit2/UIProcess/WebPageProxy.cpp | 11 +++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp index 9d19d67..10a3e5b 100755 --- a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp +++ b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp @@ -82,6 +82,7 @@ static void imfInputPanelStateEventCb(void *client, Ecore_IMF_Context *ctx, int PageClientImpl* pageClient = static_cast(client); if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) { + pageClient->setViewFocused(false); pageClient->page()->viewStateDidChange(WebPageProxy::ViewIsFocused | WebPageProxy::ViewWindowIsActive); evas_object_smart_callback_call(pageClient->viewWidget(), "editorclient,ime,closed", 0); LOG(ISF, "[SIGNAL] editorclient,ime,closed\n"); @@ -1049,7 +1050,7 @@ bool PageClientImpl::getInputMethodState() Ecore_IMF_Input_Panel_State state; state = ecore_imf_context_input_panel_state_get(m_inputMethod); - if (state == ECORE_IMF_INPUT_PANEL_STATE_SHOW) + if (state != ECORE_IMF_INPUT_PANEL_STATE_HIDE) return true; return false; } diff --git a/Source/WebKit2/UIProcess/PageClient.h b/Source/WebKit2/UIProcess/PageClient.h index 1e63d11..d7c9235 100755 --- a/Source/WebKit2/UIProcess/PageClient.h +++ b/Source/WebKit2/UIProcess/PageClient.h @@ -253,7 +253,9 @@ public: virtual bool lockOrientation(int willLockOrientation) = 0; virtual void unlockOrientation() = 0; #endif - +#if ENABLE(TIZEN_ISF_PORT) + virtual bool getInputMethodState() = 0; +#endif }; } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/WebPageProxy.cpp b/Source/WebKit2/UIProcess/WebPageProxy.cpp index ae2872d..5fae5c5 100755 --- a/Source/WebKit2/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit2/UIProcess/WebPageProxy.cpp @@ -102,6 +102,10 @@ #include #endif +#if ENABLE(TIZEN_ISF_PORT) +#include +#endif + // This controls what strategy we use for mouse wheel coalescing. #define MERGE_WHEEL_EVENTS 1 @@ -2129,6 +2133,13 @@ void WebPageProxy::didSameDocumentNavigationForFrame(uint64_t frameID, uint32_t clearPendingAPIRequestURL(); frame->didSameDocumentNavigation(url); +#if ENABLE(TIZEN_ISF_PORT) + if (m_pageClient->getInputMethodState()) { + LOG(ISF, "%s\n", __func__); + setInputMethodState(false, String(), String()); + } +#endif + m_loaderClient.didSameDocumentNavigationForFrame(this, frame, static_cast(opaqueSameDocumentNavigationType), userData.get()); } -- 2.7.4