Fix setting a void string to the TEXT property. 33/47633/3
authorVictor Cebollada <v.cebollada@samsung.com>
Mon, 7 Sep 2015 09:40:08 +0000 (10:40 +0100)
committerVíctor Cebollada <v.cebollada@samsung.com>
Mon, 7 Sep 2015 10:56:35 +0000 (03:56 -0700)
* Reset and notify the imf manager.
* Do not call the IMF manager if the text control is not editable.

Change-Id: If635978cef8503c1f2a42ee49ab75821f4d34915
Signed-off-by: Victor Cebollada <v.cebollada@samsung.com>
dali-toolkit/internal/text/text-controller-impl.h
dali-toolkit/internal/text/text-controller.cpp

index 0efe8c1ff4d2b4cbcf86f6fae8662dfc83e8d197..d5fb69edb0223bff81d645956ed730791bb74be9 100644 (file)
@@ -319,14 +319,17 @@ struct Controller::Impl
 
   void ResetImfManager()
   {
-    // Reset incase we are in a pre-edit state.
-    ImfManager imfManager = ImfManager::Get();
-    if ( imfManager )
+    if( mEventData )
     {
-      imfManager.Reset(); // Will trigger a commit message
+      // Reset incase we are in a pre-edit state.
+      ImfManager imfManager = ImfManager::Get();
+      if ( imfManager )
+      {
+        imfManager.Reset(); // Will trigger a commit message
+      }
+
+      ClearPreEditFlag();
     }
-
-    ClearPreEditFlag();
   }
 
   bool IsClipboardEmpty()
index 6bcb90c43dfa54949c4b17236d77506669e74fc6..ef10a3f5fab98943c7bb606213af94d5d41fc2ea 100644 (file)
@@ -77,6 +77,9 @@ void Controller::SetText( const std::string& text )
 {
   DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::SetText\n" );
 
+  // Reset keyboard as text changed
+  mImpl->ResetImfManager();
+
   // Remove the previously set text
   ResetText();
 
@@ -142,8 +145,8 @@ void Controller::SetText( const std::string& text )
     mImpl->mEventData->mEventQueue.clear();
   }
 
-  // Reset keyboard as text changed
-  mImpl->ResetImfManager();
+  // Notify IMF as text changed
+  NotifyImfManager();
 
   // Do this last since it provides callbacks into application code
   mImpl->mControlInterface.TextChanged();
@@ -1923,17 +1926,20 @@ bool Controller::BackspaceKeyEvent()
 
 void Controller::NotifyImfManager()
 {
-  ImfManager imfManager = ImfManager::Get();
-
-  if( imfManager )
+  if( mImpl->mEventData )
   {
-    // Notifying IMF of a cursor change triggers a surrounding text request so updating it now.
-    std::string text;
-    GetText( text );
-    imfManager.SetSurroundingText( text );
+    ImfManager imfManager = ImfManager::Get();
+
+    if( imfManager )
+    {
+      // Notifying IMF of a cursor change triggers a surrounding text request so updating it now.
+      std::string text;
+      GetText( text );
+      imfManager.SetSurroundingText( text );
 
-    imfManager.SetCursorPosition( GetLogicalCursorPosition() );
-    imfManager.NotifyCursorPosition();
+      imfManager.SetCursorPosition( GetLogicalCursorPosition() );
+      imfManager.NotifyCursorPosition();
+    }
   }
 }