Skip to content

Commit

Permalink
Make composition closing before text committing (fix rime#107)
Browse files Browse the repository at this point in the history
  • Loading branch information
nameoverflow committed Feb 5, 2018
1 parent 2f1fda9 commit 62357a0
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions WeaselTSF/Composition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,20 @@ void WeaselTSF::_UpdateComposition(ITfContext *pContext)

if (ok)
{
if (status.composing && !_IsComposing())
bool closed = _IsComposing();
if (!commit.empty())
{
// 修复顶字上屏的吞字问题:
// 顶字上屏(如五笔 4 码上屏时),当候选词数 > 1 时,
// 第 5 码输入时会将首选项顶屏。
// 此时由于第五码的输入,composition 应是开启的,同时也要在输入处插入顶字。
// 这里先关闭上一个字的 composition,然后为后续输入开启一个新 composition。
// 有点 dirty 但是 it works ...
_EndComposition(pContext);
_InsertText(pContext, commit);
closed = false;
}
if (status.composing && !closed)
{
if (!_fCUASWorkaroundTested)
{
Expand All @@ -294,14 +307,10 @@ void WeaselTSF::_UpdateComposition(ITfContext *pContext)
}
_StartComposition(pContext, _fCUASWorkaroundEnabled && !config.inline_preedit);
}
else if (!status.composing && _IsComposing())
else if (!status.composing && closed)
_EndComposition(pContext);
if (_IsComposing() && config.inline_preedit)
if (closed && config.inline_preedit)
_ShowInlinePreedit(pContext, context);
if (!commit.empty())
{
_InsertText(pContext, commit);
}
}
}

Expand Down

0 comments on commit 62357a0

Please sign in to comment.