It could be fixed by the below modifiation. However, I'm not sure about the design of (self->_priv->statusFlags & ENGINE_STATUS_NEED_COMMIT). It still need checking.
protected gboolean check_commit(self){ gint isCommit=chewing_commit_Check(self->context); gint committed=FALSE; G_DEBUG_MSG(2,"[I2] check_commit() %s statusFlags=%x", (isCommit) ? "TRUE": "FALSE", self->_priv->statusFlags); if (isCommit && (self->_priv->statusFlags & ENGINE_STATUS_NEED_COMMIT)){ //if (isCommit){ self_commit(self); committed =TRUE; } if (chewing_buffer_Check(self->context)){ /* Buffer is empty, safe to clear the ENGINE_STATUS_NEED_COMMIT */ ibus_chewing_engine_clear_status_flag(self, ENGINE_STATUS_NEED_COMMIT); } return committed; } -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1014456 Title: ibus-chewing deletes characters if too many of them are entered To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/ibus-chewing/+bug/1014456/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs