X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-field-impl.cpp;h=09a5ecc9dff743f5683ec45b961d4e93f67a681e;hp=fabfc7d9b8f186a41180cd335267112e53bea60c;hb=09591ca3eb1fb1760a9dda23df1848ed7abd43a4;hpb=d4324d0aaec66dd8104801c51ec87bbcdd356e6c diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index fabfc7d..09a5ecc 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -455,6 +455,19 @@ void TextField::OnKeyInputFocusGained() { VirtualKeyboard::StatusChangedSignal().Connect( this, &TextField::KeyboardStatusChanged ); + ImfManager imfManager = ImfManager::Get(); + + if ( imfManager ) + { + imfManager.EventReceivedSignal().Connect( this, &TextField::OnImfEvent ); + + // Notify that the text editing start. + imfManager.Activate(); + + // When window gain lost focus, the imf manager is deactivated. Thus when window gain focus again, the imf manager must be activated. + imfManager.SetRestoreAfterFocusLost( true ); + } + mController->KeyboardFocusGainEvent(); } @@ -462,6 +475,18 @@ void TextField::OnKeyInputFocusLost() { VirtualKeyboard::StatusChangedSignal().Disconnect( this, &TextField::KeyboardStatusChanged ); + ImfManager imfManager = ImfManager::Get(); + if ( imfManager ) + { + // The text editing is finished. Therefore the imf manager don't have restore activation. + imfManager.SetRestoreAfterFocusLost( false ); + + // Notify that the text editing finish. + imfManager.Deactivate(); + + imfManager.EventReceivedSignal().Disconnect( this, &TextField::OnImfEvent ); + } + mController->KeyboardFocusLostEvent(); } @@ -488,6 +513,39 @@ bool TextField::OnKeyEvent( const KeyEvent& event ) return mController->KeyEvent( event ); } +ImfManager::ImfCallbackData TextField::OnImfEvent( Dali::ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent ) +{ + switch ( imfEvent.eventName ) + { + case ImfManager::PREEDIT: + { + // TODO + break; + } + case ImfManager::COMMIT: + { + // TODO + break; + } + case ImfManager::DELETESURROUNDING: + { + // TODO + break; + } + case ImfManager::GETSURROUNDING: + { + // TODO + break; + } + case ImfManager::VOID: + { + // do nothing + } + } // end switch + + return ImfManager::ImfCallbackData(); +} + void TextField::RequestTextRelayout() { RelayoutRequest();