Check the keyString value. 70/200670/2
authorJoogab Yun <joogab.yun@samsung.com>
Thu, 28 Feb 2019 04:17:25 +0000 (13:17 +0900)
committerjoogab yun <joogab.yun@samsung.com>
Thu, 28 Feb 2019 04:30:18 +0000 (04:30 +0000)
* A problem occurs because ClearPreEditFlag is called unnecessarily.
1. input 'A' on ime : case InputMethodContext::PRE_EDIT and text is 'A'
2. input key event : keyString is empty and called
mImpl->ClearEditFlag();
3. callback OnInputMethodContextEvent() : InputMethodContext::commit and
text is 'A'
4. then pre edit text is not removed. Because clearEditFlag was called.
5. so, we see 'AA', not 'A'

Change-Id: I1658ccc0679b763c04c1d13f1faf7e0f9d3ac2ea

dali-toolkit/internal/text/text-controller.cpp

index 6e6bfaa..5e2c35a 100755 (executable)
@@ -2626,14 +2626,19 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent )
     {
       DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::KeyEvent %p keyString %s\n", this, keyString.c_str() );
 
     {
       DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::KeyEvent %p keyString %s\n", this, keyString.c_str() );
 
-      // InputMethodContext is no longer handling key-events
-      mImpl->ClearPreEditFlag();
+      if( !keyString.empty() )
+      {
+        // InputMethodContext is no longer handling key-events
+        mImpl->ClearPreEditFlag();
 
 
-      InsertText( keyString, COMMIT );
-      textChanged = true;
+        InsertText( keyString, COMMIT );
+
+        textChanged = true;
+
+        // Will request for relayout.
+        relayoutNeeded = true;
+      }
 
 
-      // Will request for relayout.
-      relayoutNeeded = true;
     }
 
     if ( ( mImpl->mEventData->mState != EventData::INTERRUPTED ) &&
     }
 
     if ( ( mImpl->mEventData->mState != EventData::INTERRUPTED ) &&