Chromium 44 と uim の相性
Chromium 44 で uim を利用すると文字入力が変になります。mozc, anthy であればアドレスバーに1文字だけ入力し Enter をタイプするとそのまま検索されちゃいます。チャットなどの文字入力欄では1文字だけ入力して Enter で確定すると、そのままポストされる状態です。これが SKK になるともっとひどい動きになります。
対策
Gentoo では問題のなかったバージョンである Chromium 43 系の ebuild ファイルが portage ツリーから消えているのでパッチ適用でしのぎます。もちろん独自 Overlay で 43 系の ebuild ファイルを用意しても良いのですが、可能なら新しいのが使いたいってなもんです。さて、問題は次の Issue で報告され Closed になってます。
Issue 1257003002: OnPreeditChanged should update the internal composition after checking it. (Closed)
これを参考にパッチを作ります。以下のようになりました。
diff -urPN a/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux.cc b/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux.cc
--- a/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux.cc 2015-07-16 05:30:08.000000000 +0900
+++ b/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux.cc 2015-07-28 06:59:15.478133281 +0900
@@ -236,8 +236,6 @@
if (suppress_next_result_ || IsTextInputTypeNone())
return;
- composition_ = composition_text;
-
if (is_sync_mode_) {
if (!composition_.text.empty() || !composition_text.text.empty())
composition_changed_ = true;
@@ -245,6 +243,8 @@
SendFakeProcessKeyEvent(0);
GetTextInputClient()->SetCompositionText(composition_text);
}
+
+ composition_ = composition_text;
}
void InputMethodAuraLinux::OnPreeditEnd() {
diff -urPN a/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux_unittest.cc b/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux_unittest.cc
--- a/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux_unittest.cc 2015-07-16 05:30:08.000000000 +0900
+++ b/chromium-44.0.2403.89/ui/base/ime/input_method_auralinux_unittest.cc 2015-07-28 07:09:14.228367499 +0900
@@ -606,6 +606,18 @@
test_result_->ExpectAction("compositionstart");
test_result_->ExpectAction("compositionupdate:a");
test_result_->Verify();
+
+ // crbug.com/513124.
+ context_->SetSyncMode(true);
+ context_->SetEatKey(true);
+ context_->AddCommitAction("c");
+ context_->AddCompositionUpdateAction("");
+ input_method_auralinux_->DispatchKeyEvent(key);
+
+ test_result_->ExpectAction("keydown:229");
+ test_result_->ExpectAction("compositionend");
+ test_result_->ExpectAction("textinput:c");
+ test_result_->Verify();
}
TEST_F(InputMethodAuraLinuxTest, MixedAsyncAndSyncTest) {
これを /etc/portage/patches/www-client/chromium-44.0.2403.89/ に拡張子を .patch にして適当な名前で保存します。chromium の ebuild には epatch_user が記載されているので、これで emerge を実施すれば自動でパッチが適用されコンパイルされます。
ここで掲載したパッチの利用は自己責任でお願いします。急がない方はバックポートされるらしいので、それまで uim から他の物に乗り換えるなどした方が安全だと思います。
0 件のコメント:
コメントを投稿