X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=adaptors%2Fwayland%2Finput%2Ftext%2Fimf%2Fimf-manager-impl-wl.cpp;h=4ff043ea0b0baeeeab1500a3a53d764fa47d9a43;hb=f30917ec1b667feec95d2d477316a15a4688095f;hp=ab45e74187748aa0bc592786128787985b2600f3;hpb=8387d40cf2c46e00afe0e295997b971b769fdea4;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 ab45e74..4ff043e --- 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()