* 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_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 ) &&