X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=adaptors%2Fwayland%2Finput%2Ftext%2Fimf%2Fimf-manager-impl-wl.cpp;fp=adaptors%2Fwayland%2Finput%2Ftext%2Fimf%2Fimf-manager-impl-wl.cpp;h=37a86e4e54dfd002bd1e65803aaaf464d1b63bbc;hb=c7ed3e29f4fb0637fc8f6f8c19cad9947132d8df;hp=ec7cdc74f0a79b6a5b50ee411fe8fcb262378f47;hpb=5c4315b7016b8b754f3797d21750963721cd97a5;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/adaptors/wayland/input/text/imf/imf-manager-impl-wl.cpp b/adaptors/wayland/input/text/imf/imf-manager-impl-wl.cpp old mode 100644 new mode 100755 index ec7cdc7..37a86e4 --- a/adaptors/wayland/input/text/imf/imf-manager-impl-wl.cpp +++ b/adaptors/wayland/input/text/imf/imf-manager-impl-wl.cpp @@ -104,8 +104,18 @@ BaseHandle Create() TypeRegistration IMF_MANAGER_TYPE( typeid(Dali::ImfManager), typeid(Dali::BaseHandle), Create ); +} +void ImfManager::Finalize() +{ + DALI_LOG_INFO( gLogFilter, Debug::General, "ImfManager::Finalize\n" ); + if ( mInited ) + { + DisconnectCallbacks(); + mInited = false; + } } + bool ImfManager::IsAvailable() { bool available( false ); @@ -121,6 +131,7 @@ bool ImfManager::IsAvailable() Dali::ImfManager ImfManager::Get() { Dali::ImfManager manager; + ImfManager *imfManager = NULL; Dali::SingletonService service( SingletonService::Get() ); if (! service ) @@ -133,31 +144,42 @@ Dali::ImfManager ImfManager::Get() if( handle ) { // If so, downcast the handle - manager = Dali::ImfManager( dynamic_cast< ImfManager* >( handle.GetObjectPtr() ) ); + imfManager = dynamic_cast< ImfManager* >( handle.GetObjectPtr() ); + manager = Dali::ImfManager( imfManager ); } else if ( Adaptor::IsAvailable() ) { // Create instance and register singleton only if the adaptor is available - manager = Dali::ImfManager( new ImfManager() ); + imfManager = new ImfManager(); + manager = Dali::ImfManager( imfManager ); service.Register( typeid( manager ), manager ); } else { DALI_LOG_ERROR("Failed to get native window handle\n"); } + + if ( ( imfManager != NULL ) && !imfManager->mInited ) + { + imfManager->ConnectCallbacks(); + imfManager->mInited = true; + } + return manager; } + ImfManager::ImfManager() : mTextInputManager( TextInputManager::Get() ), mPreEditCursorPosition( 0 ), mEditCursorPosition( 0 ), + mInited( false ), mRestoreAfterFocusLost( false ) { - ConnectCallbacks(); } + ImfManager::~ImfManager() { - DisconnectCallbacks(); + Finalize(); } void ImfManager::ConnectCallbacks()