Bug-org 1175392 [e10s] IME Blur may be too late when moving focus from content to chrome due to race condition
初回投稿日時: 2015年06月30日22時51分48秒
カテゴリ: e10s IME Mozilla Core Mozilla41 バグ修正
SNS:
Tweet (list)
子プロセスのエディタがフォーカスを失い、親プロセスのエディタがフォーカスを得る場合には確実に発生するのですが、chromeプロセスからIMEに対してfocusとblurを通知する順序が、
- 子のfocus
- 親のfocus
- 子のblur
となったり、もっとひどい場合(子プロセスがビジーな場合)には、
- 子のfocus
- 親のfocus
- 親のblur
- 親のfocus
- 子のblur
といった可能性もあります。これを解決するために、chromeプロセスのIMEStateManager
を通して、nsIWidget::NotifyIME()
でNOTIFY_IME_OF_FOCUS
とNOTIFY_IME_OF_BLUR
を通知するようにし、IMEがフォーカスを持っているかどうかを記録しておくことにしました。
これにより、IMEがフォーカスを持っている場合に再度NOTIFY_IME_OF_FOCUS
を通知しようとした場合にはNOTIFY_IME_OF_BLUR
を先に通知するようなり、後から遅れてくるNOTIFY_IME_OF_BLUR
や、子プロセスから来る不要な他の通知も破棄するようになりました。