[Tizen] Check the keyString value. 71/200671/1 accepted/tizen/5.0/unified/20190304.004258 submit/tizen_5.0/20190228.054223
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:29:45 +0000 (13:29 +0900)
* 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 c6dd499..4797b28 100755 (executable)
@@ -2628,14 +2628,19 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent )
     {
       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 ) &&